[SpringBoot] AWS EC2, Jenkins를 사용해 깃허브 웹훅 연결하기

2024. 11. 12. 22:32·SpringBoot

저번 게시글에서 ec2 linux 인스턴스에서 젠킨스를 설치하는 것까지 해보았다. 

 

이번에는 깃허브 웹훅과 젠킨스를 연결해볼 것이다. 

 

추후 CI/CD 구현을 할 때 필요하다. 

 

흐름도는 다음과 같다.


1. 코드 변경사항을 레포지토리에 커밋하면 깃허브 웹훅이 젠킨스에 신호를 보낸다. 
2. 신호를 받은 젠킨스는 파이프라인 빌드를 시작한다.


젠킨스를 설치하지 않았다면 이전 게시글을 보고오면 된다.

https://l0o0lv.tistory.com/53

 

[SpringBoot] AWS EC2 Amazon Linux 인스턴스에 젠킨스 설치하기

AWS EC2에 젠킨스를 설치해보겠다.설치 과정과 설치 중 발생한 오류 해결에 대한 글이다.(Windows 환경, Amazon Linux 인스턴스 사용)AWS EC2 인스턴스 생성보안 그룹보안 그룹을 먼저 생성해보

l0o0lv.tistory.com

깃허브 설정

Settings -> Developer settings -> Personal access tokens -> Token (Classic) 페이지에 들어가 Generate new Token (Classic)을 선택해준다.

토큰의 만료기간을 No expiration으로 설정해준다. 

 

이 설정은 자유롭게 해도 된다.


토큰으로 접근할 수 있는 권한을 설정해준다. 


repo와 admin:repo_hook을 선택하면 된다.

만들었다면 페이지가 바뀌고 토큰값이 하나 나올 것이다. 

 

이 토큰은 페이지를 이동하면 다시 볼 수 있으니 기록할 수 있는 곳에 붙여넣기 해준다.

깃허브 레포지토리 설정

이제 레포지토리에 웹훅 설정을 해주어야 한다.


설정을 할 레포지토리로 가서 Settings -> Webhooks로 이동한다.

Add webhook을 누르고 설정을 해주자.


Payload URL 설정을 해줘야 한다. 


`{jenkins-url}` : 젠킨스가 설치되어 있는 aws ec2 인스턴스의 퍼블릭 IPv4 DNS 주소


`{Pipeline-name}` : 젠킨스의 파이프라인 이름. 끝에 꼭 `/`를 붙여줘야 한다. 
설정을 하면 커밋을 할 시 이 주소로 신호를 보낸다.


Content type : application/json으로 해준다.

젠킨스 설정

이제 젠킨스 서버로 가보자. 

 

젠킨스 페이지에 접속해 Jenkins 관리 - Credential로 가준다. 

 

(global)을 눌러 Credential 추가 페이지로 가 Add Credential을 눌러준다.

Username : 깃허브 사용자의 이름.
Password : 아까 복사했던 깃허브 토큰 값.
ID : 생성할 Credential의 이름
모두 작성하고 Create를 눌러준다.

젠킨스 파이프라인 설정

파이프라인을 생성해보자.


메인페이지의 New item을 눌러준다. 

 

이름은 아까 깃허브 웹훅 설정을 했던 url의 파이프라인 이름으로 해준다.

- GitHub project

- GitHub hook trigger for GITScm polling


생성한 파이프라인의 Configure로 가서 이 두가지를 체크해준다.

 

그리고 Github Project의 Project Url에는 웹훅설정을 했던 레포지토리 주소를 입력해준다.

Pipeline Script에는 다음과 같이 입력해준다.

pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                git branch: 'main',
                    credentialsId: '{생성한 Credential ID}',
                    url: 'https://github.com/{github-name}/{github-repository-name}.git'
            }
        }
    }
}

 

이제 코드를 변경하고 커밋을 해보자.

 

시각 : 12/2 22:44

성공적으로 웹훅 신호가 가서 빌드를 완료했다. 

 

시각 : 12/2 22:45

추후에는 nginx와 파이프라인 스크립트 추가작성으로 블루/그린 방식 무중단 배포를 해보겠다.

잘못된 부분이 있으면 댓글 부탁드립니다!

참고자료 : https://junhyunny.github.io/information/jenkins/github/jenkins-github-webhook/#google_vignette

 

젠킨스(Jenkins) GitHub Webhooks 연동

<br /><br />

junhyunny.github.io

 

'SpringBoot' 카테고리의 다른 글

[SpringBoot] CoolSMS를 통해 프로젝트에 휴대폰 인증 기능 구현[2]  (3) 2024.11.12
[SpringBoot] CoolSMS를 통해 프로젝트에 휴대폰 인증 기능 구현[1]  (6) 2024.11.12
[SpringBoot] AWS EC2 Amazon Linux 인스턴스에 젠킨스 설치하기  (0) 2024.11.12
[SpringBoot] CloudType으로 간단하게 SpringBoot 서버 배포하기  (2) 2024.11.12
[Spring Boot] WebSocket을 활용한 실시간 쪽지 기능 구현(2)  (2) 2024.11.12
'SpringBoot' 카테고리의 다른 글
  • [SpringBoot] CoolSMS를 통해 프로젝트에 휴대폰 인증 기능 구현[2]
  • [SpringBoot] CoolSMS를 통해 프로젝트에 휴대폰 인증 기능 구현[1]
  • [SpringBoot] AWS EC2 Amazon Linux 인스턴스에 젠킨스 설치하기
  • [SpringBoot] CloudType으로 간단하게 SpringBoot 서버 배포하기
l0o0lv
l0o0lv
  • l0o0lv
    개발하는 와플대조교
    l0o0lv
  • 전체
    오늘
    어제
    • 분류 전체보기 (60)
      • SpringBoot (10)
      • 잡다한 개발지식 (1)
      • 코딩테스트 (47)
        • SWEA (43)
        • 프로그래머스 (0)
        • 백준 (4)
      • 알고리즘 (1)
      • 회고 (0)
      • 운동 (0)
  • 링크

    • Github
  • 인기 글

  • 최근 글

  • 태그

    알고리즘
    합 배열
    MSA
    prepersist
    ec2
    SWEA
    어려웠던 문제
    구간 합
    jenkins
    gitlab
    실시간 쪽지
    무중단 배포
    백준
    websocket
    cloudtype
    springboot
    coolsms
    리버스 프록시
    webhook
    EUREKA
  • hELLO· Designed By정상우.v4.10.0
l0o0lv
[SpringBoot] AWS EC2, Jenkins를 사용해 깃허브 웹훅 연결하기
상단으로

티스토리툴바