Among Us - Yellow Crewmate [Jenkins] Jenkins에 Github를 연동하고 빌드 자동화하기

DevOps/CI CD

[Jenkins] Jenkins에 Github를 연동하고 빌드 자동화하기

감쟈! 2021. 5. 23. 19:15

Jenkins를 이용하여 Github repository에 push 했을 때, 자동으로 빌드가 되도록 만들어보자.

Jenkins와 Github를 연동하는 방법은 ID/PW를 인증하는 방식과 ssh 연동 방식이 있다.

하지만, ID/PW 인증으로 연동하는 방법은 보안상 추천하지 않기 때문에 이번 글에서는 ssh 연동하는 방식에 대해서 알아보도록 한다.

 

 

 

우선 이 글의 과정을 진행하기 전에, Jenkins와 Git이 미리 설치되어 있어야한다.

 

1. Jenkins 설치

https://potato-yong.tistory.com/117?category=853824

 

2. git 설치

 

$ yum install -y git

 


1. ssh 키 생성

이 글에서는 Jenkins와 Github를 ssh로 연동할 것이기 때문에, ssh key를 생성해주어야 한다.

 

Jenkins 웹페이지에서 작업하는 사용자는 Jenkins 이기 때문에 Jenkins 유저 권한으로 ssh-keygen을 실행해줘야 한다.

 

$ sudo -u jenkins /bin/bash

 

그 후에 Jenkins와 Github에 연동할 SSH 키를 생성해준다

$ ssh-keygen -t rsa

SSH 키가 제대로 생성되었는지 확인하기 위해서 디렉토리를 이동한 후, 사용자가 jenkins로 되어있는지 확인한다.

$ cd /var/lib/jenkins/.ssh

$ ls -al
total 12
drwxr-xr-x  2 jenkins jenkins   38 May 23 08:20 .
drwxr-xr-x 18 jenkins jenkins 4096 May 23 09:09 ..
-rw-------  1 jenkins jenkins 1679 May 23 08:20 potato
-rw-r--r--  1 jenkins jenkins  435 May 23 08:20 potato.pub

 

2. Github에 Public Key 등록하기

먼저 Github에 생성된 Pubilc Key를 등록해주어야 한다. Pubilc Key는 앞에서 생성했던 .pub 파일이다.

 

 

Jenkins에 연동할 git repository에 접속 후, Settings > Deploy Keys를 누르고 'Add deploy Key'를 클릭하여 Public Key를 다음과 같이 등록해주자.

Public Key를 확인하려면 앞에서 생성했던 pub 파일을 cat 명령어를 통해서 확인할 수 있다. 출력되는 Key값을 복사한후 Github에 전부 붙여넣기 해주면 된다.

$ cat /var/lib/jenkins/.ssh/potato.pub

 

그러면 다음과 같이 Public Key가 등록된 모습을 확인할 수 있다.


3. Jenkins 프로젝트 생성

다음으로 Jenkins에 프로젝트를 새로 생성하여 Git repository와 연동시켜 주도록 한다.

 

 

Jenkins 대시보드에서 'new item' 을 클릭하여 새로운 프로젝트를 생성한다.

프로젝트의 이름을 적어주고 'Freestyle project'를 클릭한 뒤 OK 해주자

 

 

 

그 후에, Source Code Management에서 'Git'을 선택해주고 Jenkins에서 사용할 Repository의 URL을 입력해준다.

 

 

앞에서 Github에 Public Key를 등록해 주었던 것처럼 Jenkins에서도 Private Key를 등록해주어야 한다.

Credentials > add 를 눌러서 Private Key를 등록할 수 있다.

 

Kind : SSH Username with private key로 선택한다.

 

username을 입력하고, Private Key를 붙여넣기해서 등록해주자.

 

 

다음과 같이 빨간줄이 뜨는 에러 없이 깔끔하다면 등록이 제대로 되었다는 뜻이다.

Branch에는 본인이 원하는 Branch를 넣어주자.

 

 

그러면 다음과 같이 Github와 연동된 새로운 프로젝트가 생긴것을 확인할 수 있다.


4. Github Webhook 이용하여 빌드 자동화

이전까지는 Jenkins와 Github를 연동하는 방법에 대해서 설명했다면, 이제는 Git push만 해도 자동으로 Jenkins에서 빌드하도록 Github Webhook을 사용해보자. 

 

 

Jenkins에 사용한 git repository에서 Settings > Webhooks > Add Webhook 을 클릭하여 Webhooks을 추가해준다.

 

Payload URL - "http://<Jenkins 주소>/github-webhook/" 를 입력해주자.

다른 설정값들은 모두 기본값으로 해주고 'Add webhook' 클릭

 

다음으로 Jenkins에서 플러그인을 설치하여 github와 연결시켜 준다.

"Manage Jenkins" > "Manage Plugins" 클릭해주자

 

 

Available 탭을 클릭하고 "GitHub Integration" 이란 플러그인을 설치해주자.

 

플러그인 설치가 완료되었으면, 생성했던 프로젝트에서 "Configure"를 클릭하여 설정해주자.

 

"Build Triggers" 탭에서 "GitHub hook trigger for GITScm polling" 을 체크해주고 Save

 

 

여기까지 설정이 마무리 되었으면, 이제 Git Push를 하였을 때, 자동으로 Jenkins에서 빌드되는 것을 확인할 수 있다.

 

다음과 같이 파란불이 들어오면 빌드가 제대로 성공했다는 의미이다.