[Jenkins] Github 연동 (2)

Mineru·2022년 1월 28일
0

Github Webhooks 연동

Github 특정 repo의 branch로 push를 하게 되면 Jenkins에서 빌드가 진행 되도록 해보겠다.

jenkins ssh key 설정

# 도커 터미널 접속
docker exec -it jenkins_cicd bash
# ssh 키 저장을 위한 디렉토리 생성
cd /var/jenkins_home
mkdir .ssh
cd ./.ssh
# ssh 키 생성
ssh-keygen -t rsa -f key
# ls -l 명령어 결과
root@0f25c71d18db:/var/jenkins_home/.ssh# ls -l
total 8
-rw------- 1 root root 2602 Jan 28 13:53 key
-rw-r--r-- 1 root root  571 Jan 28 13:53 key.pub
root@0f25c71d18db:/var/jenkins_home/.ssh#

이제 이 키를 Jenkins에 등록해보자.

Jenkins 관리 -> Manage Credentials 클릭

Apply Jenkins SSH Key

(global) 위체에 화살표를 누르면 Add credentials 버튼을 누르면 다음 화면으로 넘어간다.

Jenkins Credentials

Kind 아래의 Selector에서 SSH Username with private key 를 누르고 -> username 입력 -> Private Key에 아까 위에서 cat 명령어로 결과를 copy 해서 붙여넣으면 된다.

Jenkins Enter Key

정상적으로 등록되었다.

Jenkins Key List

공개키 Github 등록

생성한 공개키를 /var/jenkins_home/.ssh/key.pub 에서 cat 명령어로 출력해서 copy 한다.

https://github.com/{username}/{repo}/settings/keys/new 로 들어가서 Key 제목과 내용을 입력 해준다.

Github Jenkins SSH Key 등록

Key 등록 완료 화면

Github Jenkins SSH Key 등록 완료

Github Webhook 설정

이제 Commit 시 Jenkins에 알림이 가도록 webhook을 설정 할 것이다.

Jenkins에서 해당 기능을 사용하기 위해서는 plugin으로 github plugin이 설치되어 있어야 한다.

기본 Plugin 설치를 했다면 따로 설치를 할 필요가 없다.

https://github.com/{username}/{repo}/settings/hooks/new 로 이동해서webhook을 추가하도록 하겠다.

해당 링크로 가서 Payload URL 항목에 [IP:PORT]/github-webhook/을 입력 후, 다른 옵션은 건드리지 않고 바로 Add webhook 버튼을 눌러 추가해준다.

Jenkins Github Webhook

Jenkins Job 설정

Github에 SSH 키 설정과 WebHook 설정이 끝났다.

그전에 내가 빌드를 테스트 하기 위한 환경 구성이 필수적이다.

빌드 테스트를 위한 도구 설치

# jenkins container 터미널 접속
docker exec -it jenkins_cicd bash
# node 16 테스트를 위한 준비
apt-get update -y
curl -sL https://deb.nodesource.com/setup_16.x  | bash -
apt install -y nodejs

Job 생성

이제 빌드를 위한 Job을 생성한다.

Jenkins 메인 화면에서 새로운 Item 버튼을 눌러준다.

Jenkins New Item

원하는 item 이름을 입력하고 Freestyle project 을 선택 후 OK 버튼을 눌러준다.

Job 소스 코드 관리 설정

소스 코드 관리 탭으로 이동.

  • Repository URL : git@github.com:{username}/{repo}.git 붙여 넣어준다.
  • Credentials : git 접근을 위한 ssh 키를 등록한 user 선택
  • Branch Specifier : push 된 내용을 탐지할 branch들을 추가해주면 된다.(여러개 가능)

Jenkins Source Code Manage

빌드 관련 설정

빌드 유발 탭으로 이동.

  • webhook을 사용하기 위해서 GitHub hook trigger for GITScm polling 체크.

Build 탭으로 이동.

  • Add build step 버튼을 눌러서 Execute shell을 눌러준 뒤 빌드에 필요한 코드를 작성해주면 된다.

Jenkins Build Setting

빌드 테스트

이제 테스트를 진행할 레포지토리에 commit을 push를 해보도록 하겠다.

좌측 하단에 보면 #1은 빌드 테스트 코드를 잘못 작성하는 바람에 테스트 실패가 되었다.

이후 다시 코드를 수정하고 Build 탭에 Excute Shell 코드도 수정 한 뒤 결과를 보니 정상적으로 완료되었다.

Jenkins Build Test

이후의 작업

우선 Github와 Jenkins의 연동 작업은 끝났다.
하지만 이것만으로는 CI/CD가 아니다.
CD의 배포가 되는 것까지를 목표로 해야하기 때문에 다음 글에서 진행해도록 하겠다.

profile
Daily Coding

0개의 댓글