일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- Security 로그인
- 젠킨스
- SpringBoot
- react 캡차
- 리액트 캡차
- jpa
- error
- 스프링 시큐리티
- myBatis
- react captcha
- ChatGPT
- Spring Boot
- react 자동입력방지
- spring error
- Spring Security
- 에러
- 스프링
- react simple captcha
- spring security 로그인
- REACT
- react 상태
- 스프링 시큐리티 로그인
- CI
- react 심플캡차
- build
- 리액트 심플캡차
- 깃
- Docker
- maven
- git
- Today
- Total
I can do it(Feat. DEV)
[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 Server 설치 및 실행(Feat. 우분투)[1편] [CI/CD] Docker로 Jenkins Server 설치 및 실행(Feat. 우분투)[1편]평소 CI/CD에 대해서 관심은 있었지만 직접 경험해
precious-value.tistory.com
2편에 이어서 이번 편에서는 젠킨스에 빌드 및 테스트할 Job을 생성해서 CI를 마무리할 예정!!
그럼 바로 시작~~!🚌
[3편-1] Jenkins Job 설정
먼저 젠킨스 서버에 접속하여 좌측 메뉴 > 새로운 item 클릭!!!

아이템 이름은 독자님들 원하시는 데로 설정하고 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 또는 프로젝트마다 디렉토리가 존재하는 것을 볼 수 있음!!

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

그리고 빌드 커맨드의 루트 경로는 해당 프로젝트 디렉토리임!!
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 하위 디렉토리에 있는 폴더 모두 소유자를 변경해 줌!!

이제 가상환경과 소유자 변경까지 완료했다면 다시 젠킨스의 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 하면...

위와 같이(#7) 빌드 히스토리가 성공한 것을 확인할 수 있음!!!(수많은 실패가 있었던 건 안비밀🤫)
여기까지가 CI 과정이고 이후 4편에서는 CD 과정을 차근차근 진행해보겠음!!
혹시 모르는 점 있다면 언제든 댓글 남겨주세용!😉🖐️🖐️

'개발자 모드 > 응용' 카테고리의 다른 글
[Django Silk]로 성능 최적화 및 분석 시작하기! (0) | 2025.03.12 |
---|---|
[CI/CD] Docker로 Jenkins Server 설치 및 실행(Feat. 우분투)[4편] (1) | 2024.09.13 |
[CI/CD] Docker로 Jenkins Server 설치 및 실행(Feat. 우분투)[2편] (0) | 2024.09.12 |
[CI/CD] Docker로 Jenkins Server 설치 및 실행(Feat. 우분투)[1편] (2) | 2024.09.11 |
[Docker-Compose]PostgreSQL 컨테이너 생성 시 DB 초기화하기 (0) | 2024.07.17 |