본문 바로가기
DevOps/Jenkins

[Jenkins] GIT과 연동하여 푸시 후 자동 배포 설정 - Type 1(gitea, webhooks)

by 오이가지아빠 2023. 2. 16.

Git서버에 코드를 push 하면 자동으로 Jenkins 빌드가 동작하도록 설정하는 방법을 알아봅시다.

+ 이 글에서 사용하는 git서버는 설치형 gitea이지만, gogs, gitlab, bitbucket 등 다른 git서버도 크게 다르지 않을겁니다.(아마도?)

 

#1. 젠킨스 플러그인 설치

여기서는 gitea 를 사용하기 때문에 gitea plugin을 먼저 설치합니다.

(당연히 기본적으로 git, git-server 플러그인은 설치가 되있을거라고 믿고...)

Gitea 플러그인 설치를 마치면 설치된 플러그인 목록에서 아래와 같이 확인할 수 있습니다.

이제 젠킨스 환경설정 > 시스템 설정에 들어가보면 gitea 서버를 설정하는 부분이 생겼을 텐데, 아래와 같이 작성합니다.

+ Server URL은 실제 git서버의 url을 작성하고, 해당 서버에 접근 가능한 Credentials 또한 추가합니다.

 

#2. Pipeline Job 설정

Job 설정에 들어가서, Build Triggers 부분을 설정합니다.

Poll SCM에 체크하고 Schedule 부분은 비워둡니다.

 

Pipeline은 아래와 같이 간단하게 테스트용으로 작성하습니다.

+ 마찬가지로 git url은 샘플url 대신 실제 git url로 작성하도록 합니다.

 

#3. Gitea Webhooks 설정

이제 Gitea 서버에 접속해서 Webhook을 추가합니다.

해당 Repository > 설정 > 웹훅 > Webhook 추가 > Gitea 클릭

대상 URL은 아래의 형식으로 작성합니다.

http://실제젠킨스URL/gitea-webhook/post?job=젠킨스Job이름

Http Method는 POST, Content Type은 application/json

비밀(Secret)칸은 공백, 트리거는 상황에 맞추어서 푸시 혹은 PR로 선택하면 되는데, 일단 푸시 이벤트가 발생했을 때 동작하도록 설정한 후 Webhook을 추가합니다.

 

#4. Push 후 자동 빌드 테스트

이제 코드 내용을 고쳐서 Push 이벤트를 발동시켜 보겠습니다.

아래와 같이 자동으로 젠킨스 빌드가 실행되는 것을 확인할 수 있습니다.

또한, Gitea의 해당 Repository Webhook에 들어와보면, 아래처럼 최근의 Deliveries에 웹훅을 실행한 이력을 확인할 수 있습니다.

이것으로 모든 설정은 완료되었고, 누군가가 git서버에 코드를 push한다면, 자동으로 위 젠킨스 빌드가 수행될 것입니다.

 

이 방법은 gitea플러그인을 설치하여 해당 플러그인이 제공하는 API(~/gitea-webhook/post)를 사용하여 동작하게 됩니다. 이 플러그인을 설치함으로써 젠킨스 ip와 job명만 알면 누구나 수행할수 있고, Security 토큰 등의 보안요소를 설정하지 않아도 됩니다.

 

별도의 플러그인을 사용하지 않고, 젠킨스 사용자 토큰을 발급하여 빌드하는 방법에 대해서는 이어지는 Type 2에서 설명하도록 하겠습니다.

 

[DevOps/Jenkins] - [Jenkins] GIT과 연동하여 푸시 후 자동 배포 설정 - Type 2(gitea, webhooks)

 

반응형

댓글