PaaS/CI CD

(JAVA-Jenkins) Java SpringFrameWork Jenkins 파이프라인 With Nexacro

armyost 2022. 1. 24. 20:13
728x90

일반 파이프라인

STAGE 1. Maven 빌드
2. War파일(Artifact) WAS 전송
3. Java 컨테이너 Restart

 

Nexacro 추가된 파이프라인

STAGE 1. Nexacro 빌드 2. Maven 빌드
3. War파일(Artifact) WAS전송
4. Nexacro 소스파일 WAS 전송 5. Nexacro 소스파일 Unzip 6. JAVA 컨테이너 Restart

 

1. Nexacro Generator를 통한 UI소스 Build 및 Nexacro Deploy Server에 업로드*

- Gitlab → Nexacro Deploy Server

※ Nexacro Build 스크립트 예시

echo "NEXABUILD START!!!"
set PROJECT_NM=armyost_project
set GIT_REPO_NM=armyost_repo
set ROOT_DIR_UI=D:\NEXAJOB\nexa_ui\%PROJECT_NM%\
set ROOT_DIR_GIT_REPO=D:\NEXAJOB\gitrepo\%GIT_REPO_NM%\%PROJECT_NM%\
set ROOT_DIR_GIT_SEND=D:\NEXAJOB\git_send\%PROJECT_NM%\
set WEB_SRV_DIR=D:\nexazip\%PROJECT_NM%\
set XPRJ_NM=armyost.xprj


chcp 437
:: DELETE PRE-PROJECT
RD /S /Q "%ROOT_DIR_UI%ui"
RD /S /Q "%ROOT_DIR_UI%gen\"
RD /S /Q "%ROOT_DIR_UI%deploy\"

mkdir "%ROOT_DIR_UI%ui"
mkdir "%ROOT_DIR_UI%gen\"
mkdir "%ROOT_DIR_UI%deploy\"


:: GIT BRANCH SETTING START
IF "%1" == "" ( 
set  BRANCHNAME="master" 
) ELSE (
set  BRANCHNAME=%1
)
echo BRANCHNAME :  [%BRANCHNAME%]
:: git BRANCH  SETTING END

:: GIT PULL
cd /D D:\NEXAJOB\gitrepo\%GIT_REPO_NM%
"C:\Program Files\Git\bin\git.exe" checkout %BRANCHNAME%
"C:\Program Files\Git\bin\git.exe" pull http://ID:PASSWORD@armyost.github.com/%GIT_REPO_NM%.git %BRANCHNAME%



:: COPY
xcopy /EY "%ROOT_DIR_GIT_REPO%src\main\ui\*" "%ROOT_DIR_UI%ui\" 

:: COMPILE SOURCE 
"C:\Program Files (x86)\nexacro\17.1\nexacrodeploy17.exe"  -COMPRESS -MERGE  -P "%ROOT_DIR_UI%ui\%XPRJ_NM%" -O "%ROOT_DIR_UI%gen" -D "%ROOT_DIR_UI%deploy" -B "%ROOT_DIR_UI%ui\nexacro17lib" -BROWSER "Nexacro Browser,Chrome,Firefox,Internet Explorer 11,Internet Explorer 10"

:: COMPRESS ARTIFACT
del "%ROOT_DIR_UI%%PROJECT_NM%.zip"
"C:\Program Files\ZIPPROGRAM.exe" a "%ROOT_DIR_UI%%PROJECT_NM%.zip" "%ROOT_DIR_UI%deploy\*"

:: COPY ZIP FILE TO DOWNLOAD PATH
copy "%ROOT_DIR_UI%%PROJECT_NM%.zip" "%WEB_SRV_DIR%"

 

 

2. JAVA 소스 Maven 빌드

- Gitlab → Jenkins

 

3. 빌드 Artifact(.war파일)를 각 WAS로 송신

- Jenkins → 각 WAS 서버

 

4. Nexacro 소스를 각 WAS로 송신

- Nexacro Deploy Server → Jenkins → 각 WAS 서버

 

5. 각 WAS서버에서 UI소스 압축해제

 

6. 각 JAVA 컨테이너 Restart