Jenkins + Node.js(PM2) + GitHub를 이용한 자동배포 구축하기(2)

ButterFlakes·2022년 5월 6일
0

지난 1편에 이은 2편 포스팅에서는 Jenkins와 GitHub의 연동방법에 대해 알아본다.

이번 2편에서는 깃허브에 코드를 푸시하면 자동으로 젠킨스의 Job이 실행되도록 설정하는 과정을 할 것이다.

Jenkins와 GitHub 연동하기

만일 블로그 주인장처럼 한숨 자고와서 젠킨스의 설정을 계속하거나 URL 뒤에 /restart를 붙여서 젠킨스를 재실행한 경우에는 아래와 같은 화면을 보게될 것이다.

별 것 없으니 지난 편에서 설정한 계정 정보로 로그인 해주자

이제 GitHub에 연결해보자

젠킨스에 처음 접속하게 되면 메인화면에 바로 Creat Job이란 버튼이 보여서 그걸 먼저 누르고 싶겠지만 그 전에 먼저 해야 할 일이 있다.

GitHub 액세스 토큰 발급하기

우선 젠킨스와 깃허브를 연결하기 위해 깃허브 액세스 토큰이 필요하다.

예전엔 그냥 깃허브의 계정과 비밀번호만 적어서 연결이 가능했으나 2021년 8월 이후로는 해당 방법이 불가능해졌으므로 액세스 토큰을 발급받아야 한다.

그럼 액세스 토큰을 발급해보자


먼저 계정세팅에 들어간다. 리포지토리 세팅이 아니니 주의하길 바란다

아래로 내리다 보면 Developer settings라는 메뉴가 있는데 여길 클릭해서 들어간다.

안에 들어가면 개인용 액세스 토큰을 발급하는 메뉴가 있다. Generate new token을 눌러서 토큰을 발급해보자

이미지에선 짤려서 안보이지만 위에 토큰 이름을 입력하는 Note 란이 있다. 알아보기 쉬운 아무 이름이나 입력해주자

Expiration은 만료시간을 설정하는 메뉴다. 적당히 설정해주자.
Scope는 repoadmin:repo_hook을 선택해서 해당 권한을 주도록 하자
설정을 마쳤으면 Generate token을 눌러서 토큰을 생성하자

토큰을 생성했다면 앞의 화면으로 돌아오고 생성된 토큰을 보여준다. 초록색으로 표시된 저 부분이 토큰이니 복사하면 된다.

주의할 점으로는 이 페이지를 벗어나면 다시는 토큰을 볼 기회가 없다. 따라서 반드시 어딘가에 복사해서 기록해두지 않았거나, 아래의 젠킨스에 액세스 토큰을 등록하는 과정을 마치기 전까진 해당 페이지를 절대로 닫아서는 안된다.
만일 토큰을 다른 곳에 별도로 기록해두지 않았거나, 아래의 액세스 토큰 등록과정을 완료하기 전에 해당 페이지를 닫았다면 별 수 없이 토큰을 다시 발급받아야 한다.

이걸로 토큰발급이 완료되었다.

GitHub Webhook 설정하기

이제 토큰도 발급 받았겠다 당장에 젠킨스 서버에 달려가서 토큰을 등록하고 싶겠지만 아직 할 일이 더 남아있다. 깃허브 리포지토리에 웹훅을 설정하고 젠킨스 서버와 깃허브를 연결할 수 있도록 해주는 과정이 필요하다.

우선 자신이 코드를 푸시하고 젠킨스와 연결할 리포지토리로 들어가자.

그 다음 설정에서 웹훅 메뉴를 찾아 들어가서 Add webhook을 눌러 웹훅을 추가하자. 계정 설정이 아닌 리포지토리의 설정이니 주의

해당 메뉴에서 깃허브가 요청을 전달할 Payload URL과, 컨텐츠 타입을 설정해주어야 한다.

Payload URL은 깃허브에서 젠킨스 서버로 웹훅 신호를 보낼 주소이다.
자신의 젠킨스 서버 주소를 적어주면 되는데 http://내 서버주소:8080까지만 적으면 동작하지 않는다 반드시 서버 주소 뒷부분에 /github-webhook/을 붙여주어야 작동한다.

컨텐츠 타입은 application/json으로 설정하면 된다.

이제 웹훅 설정이 완료되었다. Add hebhook을 눌러 웹훅을 추가하자.
웹훅 설정도 완료되었으니 마지막으로 깃허브 액세스 토큰을 젠킨스에 등록해줄 일만 남았다.

발급받은 GitHub 액세스 토큰 등록하기

먼저 왼쪽 메뉴에서 젠킨스 관리에 들어간 다음

화면에 보이는 Manage Credentials 메뉴에 들어간다

그 다음 Global을 눌러준다

그 다음 adding some credentials를 눌러준다

사진과 같이 입력해주고 OK를 눌러 등록해준다.

단 여기서 토큰을 등록했다고 바로 토큰 페이지를 닫아버리면 안된다. 이유는 후술

이제 연결을 해보자

이제 액세스 토큰도 등록했으니 실제로 깃허브에 코드를 푸시하면 자동으로 작동하는 파이프라인을 만들어 보자

메인화면에서 Create a job 을 눌러주자

이름은 대충 아무거나 입력해주고 Freestyle project를 선택하자

GitHub project를 선택하고 git의 주소를 입력해주자

Repository URL에 git 주소를 입력해주고 Credential은 방금전 등록해줬던 깃허브 연결정보를 선택해준다.

만약 여기서 에러 메시지가 뜬다면 무언가 잘못되었다는 소리니 Credential 정보를 수정해주면 된다.

빌드를 유발하는 트리거는 깃허브 훅을 설정해주고

빌드시 실행할 옵션은 Execute shell을 선택해서 쉘 스크립트를 실행하도록 해주자

테스트 삼아 터미널에 Hello 를 출력하는 스크립트를 짜봤다.

다 작성했으니 저장을 눌러 저장하자

푸시 테스트

이제 정말로 깃허브에 푸시하기만 해도 젠킨스의 작업이 실행되는지 확인해보자

작업을 구성하고 저장했으면 옆의 메뉴에서 Build Now를 눌러서 빌드를 실행해보자

프로그레스 바가 올라가더니 작업이 완료되고 체크가 뜬다. 저 #1을 눌러서 빌드정보를 한 번 보자.

나에 의해 빌드되었다고 나온다.

그럼 이번엔 실제로 깃허브에 코드를 푸시하면 작동하는지 확인하기 위해 해당 리포지토리에 코드를 푸시해보았다.

깃허브 푸시를 통해 젠킨스의 작업이 실행되니 Started by GitHub push라고 써있다. 즉 깃허브 푸시를 통해 젠킨스의 작업을 실행시킨 것이다.

이로써 깃허브에 코드를 푸시하면 자동으로 실행되는 젠킨스 작업을 구성하였다.

0개의 댓글