깃랩&젠킨스 넥사크로 빌드 및 배포

김철현·2023년 5월 3일
0

Linux

목록 보기
7/7

젠킨스 플러그인 중 ssh-agent나 Publish Over SSH가 있지만 플러그인에
의존하는 것이 왠지 마음에 들지 않아 사용하지 않고 구성했다
현재 프로젝트는 프론트엔드는 넥사크로를 사용하여

  1. 넥사크로 빌드
  2. 메이븐 빌드
  3. scp를 통한 배포

하도록 구성했다

📝 젠킨스 서버 ssh-key

scp 명령 사용을 위해 ssh 통신을 위해 sshkey를 생성하고 이를 배포할 서버에 등록한다

ssh-keygen

-> 비밀번호 없이 엔터
생성한 .ssh\id_rsa.pub을 원격 서버(dev서버) /root/.ssh/authorized_keys 에 입력

scp -r .ssh\id_rsa.pub root@호스트IP:/root/.ssh/authorized_keys
chmod 700 /root/.ssh
chmod 600 /root/.ssh/authorized_keys

복사 후 권한설정을 하지 않으면 젠킨스 서버에서 배포할 서버로 scp 명령 사용 시 비밀번호를 물어 진행이 되지 않는다

✍ pipeline 생성

프로젝트는 pipeline을 쓰지 않고 freestyle project를 사용했다

깃랩 커넥션은 아래 포스팅에서 등록한 커넥션 설정
깃랩 젠킨스 CI/CD 파이프라인 구축(2/3)

jdk는 1.8을 사용하여 1.6을 등록한 것과 같이 1.8을 다운받아 설정

깃 설정 시 이미지와 같이 빨간 글자가 나오면 안된다 (연결에 실패했다는 내용)

빌드 유발 또한 깃랩 젠킨스 CI/CD 파이프라인 구축(2/3)과 같이 설정

💡 Build Steps

📝 넥사크로 빌드

젠킨스를 윈도우 서버에 설치했기 때문에 메이븐빌드 외 모든 단계는 Execute Windows batch command 선택

넥사크로가 설치된 디렉토리로 이동 후 빌드하는데 넥사크로 매뉴얼을 보면 빌드 명령어가 아래와 같이 나온다

nexacrodeploy17.exe  -P "프로젝트위치에 있는 xprj파일" 
                     -O "generate파일을 풀 위치" 
                     -B "프로젝트에서 lib파일 위치" 
                     -D "deploy된 파일을 풀 위치" -MERGE

해당 내용에 맞춘 내 경로는

cd C:\Program Files (x86)\nexacro\17.1
nexacrodeploy17.exe -P "C:\ProgramData\Jenkins\.jenkins\workspace\TEST\src\main\sgnx_ui_17_1\sgnx_ui.xprj" 
                    -O "C:\ProgramData\Jenkins\.jenkins\workspace\TEST\src\main\webapp\ui" 
                    -B "C:\ProgramData\Jenkins\.jenkins\workspace\TEST\sgnx_generate\nexacro17lib" 
                    -D "D:\jenkins\deploy_glb\ui" -MERGE

📝 메이븐 빌드

Invoke top-level Maven targets 선택

clean: 기존 산출물 삭제
install: 로컬 저장소에 산출물 배포
-P local: local 프로파일 사용

📝 배포

가독성을 위해 개행했지만 실제 명령어 사용 시엔 개행 없이 입력해야 됨

ssh wfly@192.168.0.222 "/home/wfly/wildfly-14.0.1.Final/bin/kill.sh;
                        rm -rd  home/wfly/wildfly-14.0.1.Final/projet/deployments/ROOT.war;
                        touch /home/wfly/wildfly-14.0.1.Final/project/deployments/ROOT.war.deployed"

메이븐 빌드 산출물 배포 후 넥사크로 빌드 산출물 배포

scp -r C:\ProgramData\Jenkins\.jenkins\workspace\project\target\ROOT 
wfly14@192.168.0.222:/home/wfly/wildfly-14.0.1.Final/project/deployments/ROOT.war

scp -r D:\jenkins\deploy_glb\ui 
wfly14@192.168.0.222:/home/wfly/wildfly-14.0.1.Final/project/deployments/ROOT.war/

서비스 시작

ssh wfly14@192.168.0.222 "/home/wfly/wildfly-14.0.1.Final/bin/start.sh"
profile
리팩토링만이 살 길이다

0개의 댓글