I can do it(Feat. DEV)

[CI/CD] Docker로 Jenkins Server 설치 및 실행(Feat. 우분투)[4편] 본문

개발자 모드/응용

[CI/CD] Docker로 Jenkins Server 설치 및 실행(Feat. 우분투)[4편]

까짓거 해보자 개발자 2024. 9. 13. 15:26
728x90

2024.09.12 - [개발자 모드/응용] - [CI/CD] Docker로 Jenkins Server 설치 및 실행(Feat. 우분투)[3편]

 

[CI/CD] Docker로 Jenkins Server 설치 및 실행(Feat. 우분투)[3편]

2024.09.12 - [개발자 모드/응용] - [CI/CD] Docker로 Jenkins Server 설치 및 실행(Feat. 우분투)[2편] [CI/CD] Docker로 Jenkins Server 설치 및 실행(Feat. 우분투)[2편]2024.09.11 - [개발자 모드/응용] - [CI/CD] Docker로 Jenkins

precious-value.tistory.com

 

저번 편까지 CI를 마무리했고, 이제는 대망의 CD만 남았음!!

 

말씀드렸다시피 필자는 도커 컨테이너로 배포를 하지 않음!!

 

장고 백엔드 서버에 접속한 뒤 GIT을 통해 소스를 업데이트하여 배포를 함!!

 

그렇기 때문에 자동적 배포를 진행하기 위해 젠킨스에서 Job을 만들어주어야 함!!😋

 

그럼 바로 시작해 보겠음!! 🚌


[4편] 젠킨스에서 배포를 담당할 Job 설정

 

먼저 젠킨스 서버에 접속한 뒤 대시보드에서 New Item을 선택하여 Freestyle Project를 생성함!!(아이템명은 독자분들 마음대로~)

 

이후 Job 구성 페이지에서 저번에 한 것처럼 [소스 코드 관리] > git을 선택!!

 

젠킨스 job 설정 화면 1

 

그리고 배포를 하고 싶은 깃 레포지토리에 접속해서~

 

깃 레포지토리 url

 

해당 버튼으로 레포지토리 URL을 복사해서 넣어주고, 저번 시간에 등록한 [ Credentials]를 선택!

 

등록을 하지 않았다면 아래 링크에서 등록을 하고 진행하시길!!😄

https://precious-value.tistory.com/58

 

[CI/CD] Docker로 Jenkins Server 설치 및 실행(Feat. 우분투)[2편]

2024.09.11 - [개발자 모드/응용] - [CI/CD] Docker로 Jenkins Server 설치 및 실행(Feat. 우분투)[1편] [CI/CD] Docker로 Jenkins Server 설치 및 실행(Feat. 우분투)[1편]평소 CI/CD에 대해서 관심은 있었지만 직접 경험해

precious-value.tistory.com

 

그리고 [ Branches to build] 탭에 배포를 할 브랜치를 선택해 주면 됨!!(필자는 master 브랜치임!!)

 

빌드 트리거 설정

 

이후 [빌드 유발] 탭에서 [Build after other projects are built]를 선택 > 각자 해당하는 프로젝트 선택!!

 

필자는 CI Job이 끝난 이후에 CD Job을 진행해야 하기 때문에 이렇게 설정함!!

 

그리고 [Trigger only if build is stable]을 선택!!(빌드가 성공했을 때 CD를 진행하기 위해서😉)

 

이제 배포 스크립트를 작성해야 하는데 이 부분은 당연히 배포 환경에 따라 다를 것이므로 참고만 하시는 걸 추천!!😓

 

빌드에 필요한 쉘 추가 화면 1

 

[Build Steps] > [Add build step]을 클릭 후 [Execute shell]을 선택!!

 

빌드에 필요한 쉘 추가 화면 2

ssh username@production-server-ip << 'EOF'

cd ~/review-spot/review_spot_backend/		# 프로젝트 경로로 이동

git pull origin master	# 소스 코드 최신화

source venv/bin/activate	# 가상 환경 접속

pip install -r requirements.txt		# 라이브러리 최신화

python ./manage.py migrate	# 마이그레이션 진행

sudo systemctl restart gunicorn	# gunicorn 서버 재실행

sudo systemctl restart nginx	# nginx 서버 재실행

EOF

 

이 명령어는 어떤 백엔드 프레임워크를 쓰는지 환경이 어떤 지에 따라 달라진다는 것!!

 

어려운 명령어는 없다고 생각함!!

 

ssh username@production-server-ip << 'EOF' ~ EOF : 는 ssh를 통해 배포할 서버에 접속을 하고 ~ 안에 있는 명령어들을 한 번에 실행해 줌!!

 

EOF(End Of

File)이라고 하며 이러한 방식을 히어 도큐먼트라고 부른다고 함!!

 

각자의 환경에 맞게 커스텀한 쉘을 추가했다면 저장 버튼 클릭!!

 

이제 배포가 잘되는지 테스트를 진행해 보고 에러가 났다면 젠킨스의 프로젝트> 콘솔에서 에러를 확인 후 수정하면 됨!!

 

다음번에는 CI가 완료되면 도커 허브에 이미지를 올리고 도커 컴포즈로 이미지를 가져와 컨테이너를 띄워서 CD를 진행해 웹 서버를 구축하는 방법을 포스팅해보겠음!!👍

도커 이미지같은 영상

 

다들 고생하셨고, 추석 잘 보내시길!!😄

 

 

 

728x90