PHAS 캡스톤 프로젝트를 진행하면서 해보지 않았거나 익숙하지 않았던 것들을 최대한 많이 써보려고 노력하는 중이다.
이번에는 jenkins를 github와 연동해서 CI/CD를 해보려고 한다.
CI/CD란?
CI(Continous Integrations) 란?
개발자를 위한 자동화 프로세스인 지속적인 통합(Continuous Integration)을 의미한다. CI를 성공적으로 구현할 경우에 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드
및 테스트되어
공유 repository
에 통합 관리되므로 공유 project를 관리하기 수월해진다.
CD 란?
지속적인 서비스 제공 Continuous Delivery
, 지속적인 배포 Continuous Deployment
두 가지로 읽힐 수 있다.
내가 알기로는 개발자들이 개발 --> fork 뜬 repository에 push 및 PR --> 리드 개발자가 최종 merge --> 배포 툴을 이용한 배포 자동화라고 알고 있다.
아래 링크에 더 상세하게 설명되어 있다.
Jenkins 설치
먼저 내 컴퓨터에 docker로 설치해서 사용한 후 1주일 후에 서버에서 jenkins를 동작시킬 예정이다. 설치법 정도만 다르고 세팅은 같을 테니 한번 해보자. (1주일 있다가 하는 건 학교 사정 때문에 ㅎㅎ)
docker katemetic을 사용하면 쉽게 도커 이미지를 설치할 수 있다. 다만, jenkins라고
검색하면 jenkins official이라고
나오는 이미지가 있는데, 이상하게 이 이미지로 하니까 처음 기본 plugin을 설치하는 과정에서 install이 전부 실패했다. (CL에서 docker 이미지를 받을 때 경로는 jenkins와
jenkins/jenkins
였댜.) 그래서 밑에 있는 다른 jenkinsci/jenkins
이미지로 설치하였다. 몇 가지는 실패하긴 하였으나 install이 되긴 하였다. 왜 실패한지는 잘 모르겠다.
밑의 글들은 이 블로그에서 많이 참고하였으며, django와 github 연동 및 테스트는 이 블로그를 참고하였다.
Jenkins Github 연동
- 왼쪽의
New items
클릭 후 적당한item name
을 입력하고Freestyle Project
로 시작. Github project
에 체크한 후 연동할 Repository 주소 입력.github.com/Organization명 or User명/Repo명
Git 커밋할 때 쓰는 remote URL이 아니라 사이트 URL이다.- 소스코드 관리로 이동. Certicate의 Add 버튼을 누른다.
Username
과Password
에는 Github ID/PW인데, ID는 로그인할 때 사용하는 이메일이 아니라, Github 프로필 들어가면 사진 하단에 있는 ID이다. 밑의 ID는 구분하는 용도이기 때문에 아무거나 입력해도 된다.
- Github에서 Webhook 설정해주기
- 먼저 Jenkins System 설정에서 외부에서 접근할 수 있는 URL을 설정해주어야 한다. (도메인 or IP)
- 다음은 Github에서 Webhook을 설정해준다. Repository의
setting
에서webhook으로
들어간 다음,Add
버튼을 눌러준다.다음의 Payload URL은 아까 설정해준https://Jenkins의 주소/github_webhook/으로
설정한다.
- 이제 Jenkins 설정으로 다시 돌아온다
- Github에서 Push 되면 자동으로 빌드가 이루어질 수 있도록
GitHub Hook trigger for GITScm polling
에 체크해준다. - django를 이용하여 프로젝트를 진행하기 때문에 test와 server만 올리면 된다
- Build 탭에서 Excute Shell로 설정해준 후, 테스트와 배포를 진행한다. 나 같은 경우는 같은 서버에 jenkins와 django를 올리기 때문에 바로
runserver
를 해줘도 무관하지만, 프로젝트가 더 커지면 보통CI/CD
를 하는 서버와Web Server
는 다르기 때문에 빌드, 테스트, 배포 과정을 따로 해주는 게 맞다.
- Build 탭에서 Excute Shell로 설정해준 후, 테스트와 배포를 진행한다. 나 같은 경우는 같은 서버에 jenkins와 django를 올리기 때문에 바로
'개발공부 > Infra' 카테고리의 다른 글
FE개발자의 ECS 전환기 (0) | 2024.05.25 |
---|---|
FE개발자가 개발서버 12대 인프라 구성한 이야기 (0) | 2024.05.25 |