서버 빌드 환경 구성

bxm.default.build.incremental/resources 폴더 하위에 빌드 환경이 구성되어있다.

1. 서버 빌드 패키지 구조

  • build : gradle 실행파일과 설정정보를 관리한다.

  • pmdlib : inspection 시에 참고하는 lib와 설정정보를 관리한다.

  • report : inspection 결과 파일이 저장되는 위치이다.

  • result : build가 완료된 파일이 저장된다. (예시)

  • shl : build와 deploy, backup을 시작하는 스크립트를 저장한다. (예시)

  • sources : build할 파일을 해당 위치로 이동해둔다.

  • workspaces : build 작업을 실행하는 공간으로 비워둔다.

  • backup : build가 완료된 파일을 해당 위치로 이동해 보관한다.

서버에서 빌드시에는 해당 폴더만 존재하면 동작이 가능하다.

2. 빌드의 실행

Step 1. bxm.default.build.incremental/resources 하위의 폴더를 서버의 적당한 위치에 upload한다. 편의를 위해 해당 위치를 BUILD_HOME 으로 명명한다.

Step 2. $BUILD_HOME/build/gradle/environment.groovy 파일을 열어 bxm500 항목을 편집한다.

    bxm500 {
        appHome = '$BXM_HOME/apps' /* compile 된 online application이 모여있는 dir */
        batchHome = '$BXM_HOME/batch/apps' /* compile 된 batch application이 모여있는 dir */
        appLibBxm = '$BXM_HOME/libs/bxmLib' /* 빌드 시 참조할 bxm lib가 있는 경로 */
        appLibDeps = '$BXM_HOME/libs/bxmDeps' /* 빌드시 참조할 bxm 외의 lib가 있는 경로 */
        targetHome = '$BUILD_HOME/result' /* compile 된 class file이 위치할 경로 $BUILD_HOME/result */
        sourceHome ='$BUILD_HOME/workspaces' /*작업이 진행될 dir로 비워둔다. */
    }

Step 3. sources 폴더 하위에 커밋된 파일을 .zip으로 묶어 저장한다. (예시는 sources/$branch/$PROJECT_NAME 하위에 저장하고 있다.)

            zip sources/$branch/$PROJECT_NAME/$COMMIT_SHA.zip $PROJECT_NAME

Step 4. 삭제 커밋이 발생한 경우 해당 파일명을 $COMMIT_SHA.D로 저장한 파일에 기록한다. (배포까지 관여하는 경우)

            sources/$branch/$PROJECT_NAME/$COMMIT_SHA.D

Step 5. shl/build.sh을 호출한다.

파라미터는 {1}sources/이하 폴더명, {2}어플리케이션네임, {3}프로파일명이다.

            sh shl/build.sh $branch/$PROJECT_NAME/ $PROJECT_NAME bxm500

해당 shell은 build_app.sh을 호출해 빌드, $COMMIT_SHA.D파일에 기록된 내용을 삭제 리스트에 재기록, backup으로 파일을 이동시키는 역할을 한다.

shell 폴더 내의 script는 예시로, 실제 사용시 변수 설정 및 환경에 따른 변경이 필요하다.

Step 6. shl/deploy.sh을 호출하여 배포를 진행한다.

파라미터는 {1}복사전 소스 위치, {2}복사 타겟 위치, {3}workspaces내의 해당 프로젝트 위치이다.

일반적으로 이 부분은 형상관리에서 진행하기 때문에 예제 shell 역시 간단하게 구성되어 있다. 해당 shell에서는 배포 위치에서 삭제 리스트에 있는 파일들을 삭제하고, targetHome에 위치한 파일을 배포 위치로 복사하는 일을 하여야한다.

3. 빌드 환경 프로퍼티 설정

빌드에 필요한 설정은 $BUILD_HOME/build/gradle/environment.groovy에서 profile에 따라 지정하고 있으나,

그 외에 사이트 별로 커스터마이징이 필요한 설정이 있는 경우 $BUILD_HOME/build/gradle.properties 에서 지정할 수 있다.

#환경변수로 지정되지 않은경우 지정한다.
org.gradle.java.home = /data1/prod/runner/jdk/jdk-11.0.8

#아래 패턴은 빌드 순서를 정렬하기 위함이다. 패키지명을 특정할 수 있는 정규식을 이용한다.
#빌드의 실행 순서는 DbioDtos > BeanDtos > ServiceDtos > EtcDtos > Dbios > Others > Beans > Services 순이다.
patternPackageService=.+\\/service
patternPackageServiceDto=.+\\/domain
patternPackageBean=.+\\/bean
patternPackageBeanDto=.+\\/dto
patternPackageDbio=.+\\/dbio
patternPackageDbioDto=.+\\/sql
patternPackageEtcDto=.+\\/vo\\/.+

#class파일 외에 배포되어야하는 파일의 확장자를 지정한다.
meta.include.exts=xml,dbio

#properties for only pmd
reportPath = /data1/prod/runner/builds/bxm500/reports/pmd
rulesetPaths = ruleset/bxm/bxm_name_declaration;ruleset/bxm/bxm_restrict_allow;ruleset/bxm/bxm_default;ruleset/cleanercode/addition;ruleset/cleanercode/complicated_expression;ruleset/cleanercode/possible_bugs;ruleset/cleanercode/suboptimal_code
pmdLibDir = /data1/prod/runner/builds/bxm500/pmdlib
propertisPath = /data1/prod/runner/builds/bxm500/pmdlib/inspection.properties

#로그레벨을 지정한다.
org.gradle.logging.level=warn
#lifecycle (또는 설정하지 않음) : 서버빌드 환경 구성 단계에서 사용 (debug용) - 서버빌드에서 제공하는 모든 log를 제공
#warn :     빌드 정보와 개별 파일의 컴파일 에러 log를 제공 (일반적인 빌드 상황에서 권장)
#quiet : 빌드 정보와 compile 실패한 파일 목록만 제공 (여러 건의 커밋을 한번에 모아서 빌드하는 경우 사용)

Copyright© Bankwareglobal All Rights Reserved.