슬기로운 개발자생활/DevOps

Docker, Jenkins 활용 CI/CD 구축 (React, Kotlin+Spring) 2편 - Jenkins Github 연동

개발자 소신 2024. 1. 4. 21:02
반응형

저번 Jenkins 서버 설정까지 진행하고 나서, 본격적으로 배포를 위한 셋팅을 해야한다.

순서

0.  전체 흐름
1.  github 토큰 생성
2.  Jenkins에 github 토큰 등록
3.  자동배포를 진행할 레포 등록
4.  Push Event Webhook 설정
5.  Trouble Shotting

0. 전체 흐름

Architecture

  • 이번 프로젝트에서 구축한 CI/CD의 아키텍처

1. github 토큰 생성

developer-setting

  • 깃허브에서 우측 상단 프로필을 눌러 Settings로 들어오고, 왼쪽 메뉴 하단에 있는 Developer settings에 들어온다.

token-generate

  • Personal access tokens에서 Tokens를 클릭하고 Generate new token을 클릭한다.
  • 계정 단위 권한을 가진 것이 classic 이고, 레포단위로 권한을 줄 수 있는 것이 fine-grained 이다.
  • 여기선 fine-grained로 진행

Token

token-info

  • 토큰이름과 설명, repository는 자유롭게 선택한다.

permissions

contentsmetadatawebhooks

  • 위의 세 가지 권한을 Read-only로 부여한다.

token-key

  • 다음과 같이 토큰이 생성된 것을 확인할 수 있고, 이를 Jenkins에 등록해준다.

2. Jenkins에 github 토큰 등록

jenkins-settings

  • jenkins 관리에서 시스템 설정을 클릭한다.

jenkins-github

  • github server를 하나 추가

github-credentials

  • credentials에서 add를 클릭하고 Secret에 생성된 token을 입력해준다. (id는 단순 식별자)

test-crendentials

  • Test Connection 을 통해 위와 같이 나오면 성공, 저장한다.

3. 자동배포를 진행할 레포 등록

menu

  • 새로운 Item을 클릭

item

  • 이름은 레포이름으로 등록하는게 식별하기 편하다. Freestyle project 클릭 후 OK

setting-1

  • github project 체크 후 본인의 레포 주소 등록

setting-2

  • 소스코드 관리에서 Git을 선택 후, 본인의 git 주소 등록하고 이전에 생성해둔 Credentials를 선택한다.

setting-3

  • 어떤 branch를 build할 것인지 선택 (git flow를 따른다면 deploy branch로 설정)

저장 후 지금 빌드를 클릭

build

  • 해당 레포의 master 브랜치를 기준으로 build를 진행한다.
    build-result

4. Push Event Webhook 설정

  • 레포에 push 이벤트가 발생하면, jenkins는 이를 확인하고 빌드를 자동으로 진행하게 만들기 위해 webhook을 설정한다.

plugin

 

  • Jenkins 관리에서 플러그인 관리로 들어간다.

 

github-integration-plugin
 
  • github integration plugin을 검색하고, 설치해준다.
  • Jenkins 재시작 (만약 한참 기다려도 안된다면, docker restart {container_id})
  • webhook을 걸고 github에서 jenkins서버로 이를 알려줘야함으로 보안그룹에서 다음의 세가지 ip를 허용해준다. (참고 : https://api.github.com/meta)
192.30.252.0/22
185.199.108.0/22
140.82.112.0/20

 

webhook

 

github-webhook

  • Paylod URL : http://jenkins주소:8181/github-webhook/
  • Add webhook

item-settings

  • 구성을 클릭

hook-trigger

  • 빌드 유발에서 Github hook trigger for GITscm polling 을 체크
  • 이후 push event를 발생시키면, build가 되는것을 확인할 수 있다.

 

build2
 
 

build2-console

5. Trouble Shooting

  • Credentials를 등록했음에도 목록에서 나오지 않는 경우
    • secret text로 했을 때 안나오면 username and password로 해볼 것. 정확한 원인은 아직 확인이 되지 않음...
반응형