GitLab Jenkins CICD 구축하기(2)-특정 파일만 배포

seoyoon·2022년 7월 15일
0

GitLab Jenkins CICD

목록 보기
2/3
post-thumbnail

0. 준비

GitLab Jenkins CICD 구축하기(1)
GitLab과 Jenkins의 연동이 끝났으니 현업의 운영 서버로 배포 하는 과정에 대해서 작성해보겠습니다.
기존의 배포 방식은 소스를 수정하면 서버에 FTP로 접속해서 수정된 XML 등을 직접 업로드해야만했기에 불편했습니다.
서버 또한 운영 서버는 이중화 되어있고 또 개발 서버도 있었기 때문에 같은 소스를 총 3대에 파일 전송을 해야하는 번거로움이 있었습니다.

이제 commit & push 버튼으로 자동 배포를 해보겠습니다.

1. Plugin 설치

Jenkins관리 > 플러그인 관리 > 설치 가능
Publish Over SSH를 다운 받습니다.

2. 시스템 설정

Jenkins관리 > 시스템 설정 > Publish over SSH

  • Name : Jenkins에서 사용할 서버 임시 이름
  • Hostname : 원격 서버 IP
  • Username : 접속할 계정
  • Remote Directory : 원격 서버에 배포할 폴더

3. 프로젝트 설정

1) Build 1

프로젝트 선택 > (왼쪽 메뉴) 구성 > Build

빌드 탭에서 Add build step을 누르고 Execute shell을 클릭해 아래 코드를 작성합니다.
먼저 수정된 파일만 옮길 폴더를 생성한 후 이전 git과 비교해 달라진 파일들만 추출해서
디텍토리 구조를 유지한 채로 파일을 복사합니다.'
저 같은 경우는 파일 및 폴더까지 그대로 배포 해야했기 때문에 zip으로 압축했습니다.

rm -rf jenkins_deploy
mkdir jenkins_deploy
FILES=$(git diff --no-renames --name-only HEAD $(cat revision.txt))
for f in $FILES; do
echo $f | cpio -pmdvl ./jenkins_deploy/
done
mv jenkins_deploy/src/main/webapp/ROOT jenkins_deploy
rm -rf jenkins_deploy/src
cd jenkins_deploy
zip -r ROOT.zip ROOT/*

2) Build 2


  • Source files : 배포할 파일이 있는 폴더(ex.jenkins_deploy/**)
  • Remove prefix : 제거할 접두사, 기본적으로 작업공간/빌드된 파일로 되어있는데
    예를 들어 작업공간 A/B/C/test.jar가 있을 때 C/test.jar로 배포 하고 싶다면 여기에 A/B를 입력한다.
  • Remote directory : 원격서버에서 배포할 파일이 저장될 디렉토리
  • Exec command : 배포 후 원격 서버에서 수행할 스크립트

고급 버튼을 클릭해 Make empty dirs를 체크해주도록 하면 폴더가 없을 경우 생성해줍니다.

3) Build 3

git rev-parse HEAD > revision.txt
profile
Backend Developer

0개의 댓글