I can do it(Feat. DEV)

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

개발자 모드/응용

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

까짓거 해보자 개발자 2024. 9. 12. 18:49
728x90

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

 

[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

 

2편에 이어서 이번 편에서는 젠킨스에 빌드 및 테스트할 Job을 생성해서 CI를 마무리할 예정!!

 

그럼 바로 시작~~!🚌


 

[3편-1] Jenkins Job 설정

 

먼저 젠킨스 서버에 접속하여 좌측 메뉴 > 새로운 item 클릭!!!

 

새로운 job 추가 화면

 

아이템 이름은 독자님들 원하시는 데로 설정하고 Freestyle project 선택 후 ok 버튼 클릭!!

 

이후 해당 job> 구성 설정에서 [소스 코드 관리] 탭을 Git 선택!!

 

소스 코드 관리 설정

 

Repository URL은 본인 깃 프로젝트 Url을 복사해서 넣으면 됨!!

 

이후 [빌드 유발] 탭 선택 > GitHub hook trigger for GITScm polling 체크!!

 

그리고 Build Steps > Add build step 클릭 > Execute shell 선택!!

빌드 유발 설정 화면

 

커맨드 내용

 

필자는 장고 프로젝트를 빌드 및 테스트를 해야 하기 때문에 위와 같이 커맨드를 작성 후 저장 버튼 클릭하면 새로운 Job이 만들어짐!!

 

⚠️[참고] : 젠킨스의 홈 디렉토리(/var/jenkins_home/) 안에 workspace라는 폴더가 있는데 이 디렉토리가 작업 디렉토리임

 

젠킨스 작업 공간 화면

 

젠킨스 서버 좌측 메뉴 > 작업 공간에서도 확인할 수 있고, 실제 젠킨스 컨테이너의 /var/jenkins_home/workspace/에서도 확인할 수 있음!!😄

 

실제로 workspace 경로를 확인하면 내가 등록한 Job 또는 프로젝트마다 디렉토리가 존재하는 것을 볼 수 있음!!

 

젠킨스 서버 workspace 경로

 

만약 필자처럼 프로젝트명을 수정하면 수정한 만큼 폴더가 생성됨..(지워야지ㅎㅎ😓)

삭제버튼

 

그리고 빌드 커맨드의 루트 경로는 해당 프로젝트 디렉토리임!!

 

ex) 젠킨스 서버에서 jenkins-ci 프로젝트 생성 > 커맨드가 실행되는 디렉토리 : /var/jenkins_home/workspace/jenkins-ci/

 

프로젝트를 생성하고 소스를 수정한 후 깃허브 master 브랜치에 push를 하면!!

 

젠킨스 서버 빌드 알림

왼쪽 아래에 빌드 알림이 뜬 것을 볼 수 있음!!

 

필자는 실패했는데 이유를 보고 싶다면 #2를 클릭 후 좌측 메뉴에서 Console OutPut을 클릭하여 에러를 확인하면 됨!!

 

빌드 에러 화면

 

당연한 게 젠킨스 컨테이너에 빌드 및 테스트할 수 있는 환경 세팅을 안 해줘서 에러가 났음!!

 

필자는 장고 프로젝트니까 빌드 및 테스트에 필요한 python3, pip 등 라이브러리를 설치하고 djago를 설치하기 위해 가상환경 세팅까지 진행해보려고 함!!

 


[3편-2] 젠킨스 컨테이너에 빌드 및 테스트 환경 세팅

 

젠킨스 컨테이너에 접속하여 설치를 진행해 보겠음!!

docker exec -u 0 -it jenkins /bin/bash # 도커 컨테이너 접속 명령어

 

apt-get update -y # 패키지 업데이트 명령어
apt-get install -y python3 pip # 파이썬과 pip 설치 명령어

 

그리고 파이썬 가상환경을 만들어주기 위해서  /var/jenkins_home/workspace/jenkins-ci/ 안에 장고 프로젝트 경로로 이동!!

 

python3 -m venv venv # 가상환경 설치 명령어

 

But!!!

가상 환경 설치 시 볼 수 있는 메세지

이 메세지는 파이썬 가상 환경을 만들려고 했을 때 ensurepip 모듈이 없어서 가상 환경이 성공적으로 생성되지 못했다고 알려주는 메세지임!!

 

⚠️[참고] : ensurepip은 파이썬 가상 환경 내에 pip을 자동으로 설치하는 데 사용되는 모듈

 

친절히 메세지에 나와있는 대로 

 

 apt install python3.11-venv

 

명령어로 python3.11-venv 설치 후 가상환경을 만들면 정상적으로 가상환경이 만들어짐!!😄

 

⚠️[주의]

가상환경을 설치 후 주의해야 할 점이 있는데 root 계정으로 접속하여 가상환경을 설치했기 때문에 가상환경의 소유자가 root임!!

 

이 전편에서 ssh key를 발급할 때 root 계정으로 발급했다면 문제가 없지만 필자처럼 일반 사용자로 발급했다면 Permission denied라는 귀찮은 권한 문제를 겪을 수 있음.

 

그렇기 때문에 venv 폴더 소유자를 ssh key를 발급할 때 접속했던 계정으로 변경해줘야 함!!

 

chown jenkins:jenkins -R  venv/ # 소유자 변경 명령어

 

venv 하위 디렉토리에 있는 폴더 모두 소유자를 변경해 줌!!

 

소유자를 변경 후 ls -al 명령어

 

이제 가상환경과 소유자 변경까지 완료했다면 다시 젠킨스의 Job > 빌드 커맨드로 이동!!

 

젠킨스의 빌드 커맨트

 

빌드 커맨드를 위와 같이 변경 후 다시 저장 버튼 클릭!!

 

커맨드에 추가한 명령어 설명을 하겠음!!

 

#!/bin/bash # 스크립트를 Bash 쉘로 명시적으로 실행
source ./review_spot_backend/venv/bin/activate # 가상환경 모드 ON
pip install -r ./review_spot_backend/requirements.txt # 라이브러리 의존성 설치
python ./review_spot_backend/manage.py makemigrations # 마이그레이션 파일 생성
python ./review_spot_backend/manage.py migrate # 마이그레이션 진행
python ./review_spot_backend/manage.py test # 테스트 시작

 

설정을 완료하면 깃 소스가 변경될 때마다 자동으로 가상환경을 켜고 라이브러리를 설치한 뒤 빌드 및 테스트를 진행할 수 있음!!🎊👍

 

추가적으로 DB를 PostgreSQL을 사용 중이라면 

apt-get install libpq-dev

 

명령어로 PostgreSQL 개발 패키지를 설치해야만 에러가 안남!!😉

 

이후 소스를 수정한 후 github master 브랜치에 push 하면...

 

젠킨스 push 알람 리스트

 

위와 같이(#7) 빌드 히스토리가 성공한 것을 확인할 수 있음!!!(수많은 실패가 있었던 건 안비밀🤫)

 

여기까지가 CI 과정이고 이후 4편에서는 CD 과정을 차근차근 진행해보겠음!!

 

혹시 모르는 점 있다면 언제든 댓글 남겨주세용!😉🖐️🖐️

따봉

 

728x90