올챙이시절 기록소

빌드서버 동작을 위한 쿼리와 함수 리스트 본문

2017/1월

빌드서버 동작을 위한 쿼리와 함수 리스트

allroundplayer 2017. 10. 24. 17:39

가장 먼저하는 것은 DB에 빌드 요구조건 명세 세팅 & Pipeline API 호출



0. DB & GitLab CI - API Call

## SQLs

insert into mfo_tag values( baseline 및 컴포넌트 tag 값들 );

insert into requirer values('QA','REPO','total','baseline'); 

update runner_stat set total_ver='baseline' where run_comp='mfototal_win';

update runner_stat set value='1' where run_comp='mfototal_win';


## VALUE=

## 1 require

## 2 Compile&Build

## 3 Send File to requirer

## 0 Waiting


## GitLab CI - API Call

curl --silent --request POST --header "PRIVATE-TOKEN: Rf3Gmpkc68Z6W5M7vjtS" "http://10.10.32.101/api/v3/projects/49/pipeline?ref=master"



 ------------------------->


이런 순서로 진행되는데


빌드서버(mfo_build_win)에서 일어나는 동작에 대해 개괄적 & 집중적으로 알아본다






1. git fetch & checkout tags

2. Data Gather

3. PlatformJS

4. PostgresDB

5. InnoSetup

 

GET_IPADDRESS_GIT_SERVER

MFOBUILD_PART

sh $BUILD_DIR/05_build_mfoset/mfoset.sh;

     {

REQUIRER_CHECK

GET_IPADDRESS_GIT_SERVER

FETCH_TOTAL_VER_INFO

TAG_VALUE_VAILD_CHECK

BUILD_AS_REQ_ORDER

{

DG_PART

       git fetch from repos * 4

  sh $BUILD_DIR/01_build_mfodg/dgbuild.sh;

CLEAN_DG_FILES

GIT_CHECKOUT_SMS_MAIL_API_TCP

EXECUTE_ANT_SCRIPT

VERSION_CHECK

CP_DG_JAR;

JAR_TO_EXE;

INSERT_TAG_VALUE_TO_DGSCTL;

MAKE_TAR;


NP_PART

git fetch from repos * 3

sh $BUILD_DIR/02_build_mfonp/unipjsbuild.sh;

CLEAN_NP_FILES

GIT_CHECKOUT_UNITPL

EXECUTE_ANT_SCRIPT

MV_NP_FILES

INSERT_TAG_VALUE_TO_PJSCTL

EXECUTE_CONFIGURATION

CP_SQL

CP_WEB

JAVASCRIPT_COMPRESS

MAKE_PJS_ZIP_FILE


INNOSETUP_AND_PG_PART

sh $PG_INSTALL_FILE/ready_pg.sh

sh $BUILD_DIR/05_build_mfoset/Innosetup.sh;

REQUIRER_CHECK

ISS_FILE_MAKER

$PG_INSTALL_FILE/detach_pg.bat

RENAME_NP_FOR_DEPLOY

RENAME_DG_FOR_DEPLOY

RENAME_INNOSETUPFILES_FOR_DEPLOY

WRITE_DOWN_TAG_INFO

SEND_DG_PJS_LINUX_BUILD_SRV

}

}

RECOVER_CONFLICT_FILE

CHECKOUT_MASTER_MFOBUILD


* DG = Data Gather

* NP = New PlatformJS ( uni PlatformJS의 전신 )

* PG = PostgreSQL


fetch란 단어는 조회하다라는 뜻으로 사용


REQUIRER_CHECK : 요청자 확인하는 부분

GET_IPADDRESS_GIT_SERVER : Git 서버 IP가 변경되어도 커버할 수 있게 추가된 로직

FETCH_TOTAL_VER_INFO : Tag를 조회하여 가져옮

TAG_VALUE_VAILD_CHECK : Tag중 checkout이 불가한 태그가 있는 지 확인

BUILD_AS_REQ_ORDER : 빌드규약에 맞춰서 case by case로 빌드함


CLEAN_DG_FILES : Data Gather의 배포파일이 만들어질 장소를 청소

GIT_CHECKOUT_SMS_MAIL_API_TCP : 추가 컴포넌트에 대해 소스코드 버전을 맞춤

EXECUTE_ANT_SCRIPT : ANT 스크립트 수행

VERSION_CHECK : 소스코드내 명시된 버전과 jar형태의 파일에서 출력된 버전의 결과 값을 비교확인

CP_DG_JAR : JAR파일을 배포파일을 만드는 곳으로 옮김

JAR_TO_EXE : EXE파일을 하나 만듦

INSERT_TAG_VALUE_TO_DGSCTL : 빌드에 사용된 TAG 버전을 dgsctl ( 컨트롤러 쉘 )에 기록해 둠

MAKE_TAR : 반디집을 이용하여 TAR로 묶어냄


CLEAN_NP_FILES : PlatformJS의 배포파일이 만들어질 장소 청소

GIT_CHECKOUT_UNITPL : UniPlatformJS의 템플릿의 버전을 맞춤 ( DG와 달리 PJS는 개발자가 형상관리하기로 함 )

EXECUTE_ANT_SCRIPT : JAR파일 생성

MV_NP_FILES : JAR 파일과 템플릿 파일을 배포파일 만들어질 장소로 가져옴

INSERT_TAG_VALUE_TO_PJSCTL : PJSCTL ( 컨트롤러 쉘 )에 빌드에 사용한 태그버전 입력

EXECUTE_CONFIGURATION : Configuration 쉘을 수행을 통해 생성되는 파일들이 필요하여 여기서 한 번 수행

CP_SQL : SQL 파일들 복사

CP_WEB : JS, HTML, CSS 파일들 복사

JAVASCRIPT_COMPRESS : 자바스크립트 압축 및 난독화

MAKE_PJS_ZIP_FILE :  ZIP  파일로 묶어냄


sh $PG_INSTALL_FILE/ready_pg.sh : pg DB 엔진 설치 및 DB , 유저 생성 후 DB Down

REQUIRER_CHECK : 요청자확인

ISS_FILE_MAKER : Innosetup 명세서 작성 및 윈도우 자동 인스톨러 생성

$PG_INSTALL_FILE/detach_pg.bat : PG DB Uninstall


RENAME_NP_FOR_DEPLOY : PJS 배포파일 리네임

RENAME_DG_FOR_DEPLOY : DG 배포파일 리네임

RENAME_INNOSETUPFILES_FOR_DEPLOY : 윈도우 인스톨러 리네임

WRITE_DOWN_TAG_INFO : 태그정보 텍스트파일로 남김

SEND_DG_PJS_LINUX_BUILD_SRV : 리눅스패키징을 위해 DG& PJS 파일을 해당서버에 보냄



리눅스 패키징은 윈도우 패키징이 다 끝나야만 수행하도록 설계해놨으며 다음과 같은 순서로 진행된다


## PROCESS ORDER 


PRE_SET

CLEAN

MV_LINUX_PACK_OTHER

MV_DG_PACK

MV_PJS

PG_DB_BOOT

DG_INSTALL

PG_DB_DOWN

LINUX_PACKAGING


PRE_SET : 받은 파일들 확인

CLEAN : 패키징 파일 만들어 질 곳 청소

MV_LINUX_PACK_OTHER : DB와 자동 설치 스크립트, 컨트롤 스크립트 등을 옮김

MV_DG_PACK : DG부터 언팩

MV_PJS : PJS 언팩

PG_DB_BOOT : PG Boot

DG_INSTALL : 기본 테이블 셋 만듦

PG_DB_DOWN : PG Down

LINUX_PACKAGING : 관련 디렉토리 전체를 패키징함


여기까지


실무자들은 모르는 내용이 혹 생기거든 연락하시라



Comments