[젠킨스 구축] 2. github 연동 - f-lab-edu/jshop GitHub Wiki

이제 설치한 젠킨스를 github 와 연동해야 한다.

github에서 특정 작업이 이루어지면, 젠킨스에서 알림을 받아 정의된 파이프라인 (테스트, 빌드) 등을 자동을 수행하기 위함이다.

이번 글에서는 다음과 같은 과정을 수행한다.

  1. jenkins 컨테이너의 ssh-key 생성
  2. 생성된 ssh-key 공개키 github 등록
  3. 생성된 ssh-key 개인키 젠킨스 등록
  4. jenkins에서 깃헙 레포와 연동된 item(pipeline) 생성
  5. 깃헙 레포의 젠킨스 웹훅 등록

ssh-key 생성

나는 보통 github에 ssh-key를 사용해서 통신한다.

공개키를 깃헙에 저장해두고 편하게 사용하기 위함이다.

젠킨스도 동일하게 사용하기 위해서 ssh 키를 생성한다. 이 ssh 키는 이후 몇번 더 사용된다.

젠킨스 컨테이너에서 쉘을 실행해 키를 생성한다.

docker exec -it {jenkins_container} bash

-it 모드로 쉘을 실행시켜 jenkins 컨테이너 내부에서 명령을 실행한다.

ssh-keygen

생성된 키는 ~/.ssh 디렉토리에 위치한다. id_rsa 가 개인키, id_rsa.pub 이 공개키다.

공개키 깃헙 등록

공개키를 깃헙에 등록한다.

github -> settings -> SSH and GPG keys 에서 ssh 키를 등록한다.

스크린샷 2024-06-07 20 36 37

키로 사용할 이름과 공개키를 등록한다.

개인키 젠킨스 등록

이제 젠킨스에서도 사용할 개인키를 직접 등록해 줘야 한다.

젠킨스관리 -> Credentials 에서 global scope을 선택한다.

스크린샷 2024-06-07 20 38 09

Add Credentials 로 새로운 키를 등록한다.

스크린샷 2024-06-07 20 38 27

키의 종류는 SSH Username with private key로 등록한다.

스크린샷 2024-06-07 20 38 50

적당한 ID, Username 으로 새로운 Credentials를 만든다. 아래 Private Key에 Enter directly를 선택해 생성한 개인키를 복사해 넣는다.

스크린샷 2024-06-07 20 42 07

github 레포 등록

젠킨스에서 새로운 Item을 선택해 github 레포를 등록한다.

난 파이프라인을 구성할것이기 떄문에 파이프라인을 선택한다.

스크린샷 2024-06-07 20 43 12

Build Triggers를 GITScm Polling으로 선택한다.

스크린샷 2024-06-07 20 44 00

Pipeline에서 Pipeline script from SCM을 선택하고 SCM을 Git으로 선택하면 입력창이 나오게 된다.

스크린샷 2024-06-07 20 44 48

여기서 연동하려는 레포의 ssh 주소를 복사해 붙여넣는다.

ssh 주소 (git@) 을 넣으면 다음과 같은 오류가 나올 수 있다.

스크린샷 2024-06-07 20 47 14

이때는 젠킨스 컨테이너로 이동해 다음 명령을 수행해 github.com 이라는 도메인을 알 수 있도록 해준다.

ssh-keyscan github.com >> ~/.ssh/known_hosts

이제 빌드를 할 기준 브랜치를 설정하고, 젠킨스 파일의 경로를 잡아주면 된다.

스크린샷 2024-06-07 20 50 47

일단 위와같이 test 브랜치, 루트경로의 Jenkinsfile 로 기준으로 설명한다.

웹훅 등록

이제 github에서 이벤트가 일어날때 이를 전달할 웹훅을 등록한다.

레포지토리에서 Settings -> Webhooks 에서 웹훅을 등록할 수 있다.

이때 등록할 URL은 {젠킨스 서버의 IP, 도메인}/github-webhook/ 으로 등록해야 한다.

이때 꼭 마지막에 / 를 넣어줘야 한다. (혹시 처음에 안넣고 수정해서 넣더라도 계속 오류가 난다. 처음 잘못 넣었다면 삭제후 다시 등록)

컨텐츠 타입은 json으로 설정하고 웹훅을 등록한다.

스크린샷 2024-06-07 21 04 02 정상적으로 웹훅이 등록되면 다음과 같은 초록색 체크표시가 나오게 된다.

여기까지 됐다면 github-jenkins 의 연동 준비는 끝났다.