본문으로 바로가기
반응형

[Jenkins] [github] Jenkins 빌드 자동화 - github push시 자동 빌드 하기(github webhook)

 

안녕하세요. 갓대희 입니다. 이번 포스팅은 [ github Webhook으로  자동 빌드하기 ] 입니다. : ) 

 

이번 포스팅은 이전 포스팅과 계속 이어, Github Push만 처리 해도 Jenkins를 통해 자동 빌드 처리하는 방법을 이어 나가려 한다.

 

이에 오늘은 Github Webhook을 설정하는 방법을 알아 보려고 하는데,

Webhook이란 간단히 웹상의 Trigger 같은 존재라고 볼 수 있다.

 

GitHub의 특정 브랜치에 소스가 push 되면, 이를 webhook으로 젠킨스에게 알려주어 빌드를 유발하도록 설정 가능하다.

 

 

 

※ 참고

 - 이전 포스팅에서 이미 Jenkins와 Github을 연동하여 빌드하는 작업은 완료 하였으므로, 이미 해당 연동은 완료 되었다는 가정하에 작성 하였다.

2020/06/18 - [6. 개발도구/6_6 Jenkins] - [Jenkins] [github] Jenkins와 github 연동하기

 

0.github Webhook 설정

▶ 0. Webhook 이란? 

 - 앱 to 앱으로 실시간 정보를 제공하는 방법. web callback, HTTP push API, 역방향 API 라고할 수 있다.

 - 전형적인 API를 통해 실시간으로 데이터를 가져오려면 자주 호출하는, 땡겨오는 작업을 해야 하지만, 이 방식을 사용하면 즉시 데이터를 얻을 수 있다.

 

▶ 1. Webhooks 추가 하기 

 - 본인의 GitHub 프로젝트 Settings >> Webhooks >> Add Webhook 클릭

 - Payload URL : "http://본인의Jenkins주소/github-webhook/"

   당연히 외부에서 접근 가능하도록 방화벽 설정 등이 열려 있어야 한다.

   혹시 ec2에 jenkins를 설치한 경우 다음 ip를 허용 하면 된다.

"192.30.252.0/22"
"185.199.108.0/22"
"140.82.112.0/20"

참고 : https://api.github.com/meta

더보기

{
  "verifiable_password_authentication": true,
  "ssh_key_fingerprints": {
    "MD5_RSA": "16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48",
    "MD5_DSA": "ad:1c:08:a4:40:e3:6f:9c:f5:66:26:5d:4b:33:5d:8c",
    "SHA256_RSA": "nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8",
    "SHA256_DSA": "br9IjFspm1vxR3iA35FWE+4VTyz1hYVLIE2t1/CeyWQ"
  },
  "hooks": [
    "192.30.252.0/22",
    "185.199.108.0/22",
    "140.82.112.0/20"
  ],
  "web": [
    "192.30.252.0/22",
    "185.199.108.0/22",
    "140.82.112.0/20",
    "13.114.40.48/32",
    "52.192.72.89/32",
    "52.69.186.44/32",
    "15.164.81.167/32",
    "52.78.231.108/32",
    "13.234.176.102/32",
    "13.234.210.38/32",
    "13.229.188.59/32",
    "13.250.177.223/32",
    "52.74.223.119/32",
    "13.236.229.21/32",
    "13.237.44.5/32",
    "52.64.108.95/32",
    "18.228.52.138/32",
    "18.228.67.229/32",
    "18.231.5.6/32"
  ],
  "api": [
    "192.30.252.0/22",
    "185.199.108.0/22",
    "140.82.112.0/20",
    "13.230.158.120/32",
    "18.179.245.253/32",
    "52.69.239.207/32",
    "13.209.163.61/32",
    "54.180.75.25/32",
    "13.233.76.15/32",
    "13.234.168.60/32",
    "13.250.168.23/32",
    "13.250.94.254/32",
    "54.169.195.247/32",
    "13.236.14.80/32",
    "13.238.54.232/32",
    "52.63.231.178/32",
    "18.229.199.252/32",
    "54.207.47.76/32"
  ],
  "git": [
    "192.30.252.0/22",
    "185.199.108.0/22",
    "140.82.112.0/20",
    "13.114.40.48/32",
    "52.192.72.89/32",
    "52.69.186.44/32",
    "15.164.81.167/32",
    "52.78.231.108/32",
    "13.234.176.102/32",
    "13.234.210.38/32",
    "13.229.188.59/32",
    "13.250.177.223/32",
    "52.74.223.119/32",
    "13.236.229.21/32",
    "13.237.44.5/32",
    "52.64.108.95/32",
    "18.228.52.138/32",
    "18.228.67.229/32",
    "18.231.5.6/32",
    "18.181.13.223/32",
    "54.238.117.237/32",
    "54.168.17.15/32",
    "3.34.26.58/32",
    "13.125.114.27/32",
    "3.7.2.84/32",
    "3.6.106.81/32",
    "18.140.96.234/32",
    "18.141.90.153/32",
    "18.138.202.180/32",
    "52.63.152.235/32",
    "3.105.147.174/32",
    "3.106.158.203/32",
    "54.233.131.104/32",
    "18.231.104.233/32",
    "18.228.167.86/32"
  ],
  "pages": [
    "192.30.252.153/32",
    "192.30.252.154/32",
    "185.199.108.153/32",
    "185.199.109.153/32",
    "185.199.110.153/32",
    "185.199.111.153/32"
  ],
  "importer": [
    "192.30.252.0/22",
    "185.199.108.0/22",
    "140.82.112.0/20"
  ]
}

 - 나머지 항목은 기본으로 설정하고 "Add webhook" 클릭

 

0.Jenkins Item 설정

▶ 1. Github Integeration Plugin 설치

 - Github와 Jenkins를 연결하려면 Github Integeration Plugin이 필요하다.

 - Jenkins관리 >> 플러그인 관리

 - 설치 가능 탭 >> Github Integration 검색 >> 설치

▶ 2. Jenkins 설정

 - 신규 Item을 생성하거나, 이전 포스팅에서 생성하였던 Github과 연동 되어있는 Item 설정 페이지로 이동.

 

 - 빌드 유발 탭 이동 >> GitHub hook trigger for GITScm polling 체크

 

모든 설정이 완료 되었다면, 이후 설정한 Branch에 Push를 하였을때, 자동으로 jenkins 빌드가 유발되는 것을 볼 수 있다.

 

이로써 다음 스텝의 한 싸이클? 의 업무와 관련된 포스팅은 마무리 하도록 하겠다.

 

1. github <> jenkins 연동하여 빌드

 - 2020/06/18 - [6. 개발도구/6_6 Jenkins] - [Jenkins] [github] Jenkins와 github 연동하기

2. jenkins <> ec2 연동하여 배포

 - 2020/07/12 - [6. 개발도구/6_6 Jenkins] - [Jenkins] [ec2] Jenkins 원격 서버 배포(Publish Over SSH)

3. github <> jenkins 웹훅 설정으로 push시 자동 빌드

 

반응형

댓글을 달아 주세요

  1. 2020.12.04 16:54

    비밀댓글입니다

  2. 알려주세요ㅠㅠ 2021.06.08 23:49

    1,2,3을 순서대로 다 해야 하는건가요??