Linux

08. [Linux/Ubuntu] Jenkins 와 Github 연동하기(2) - webhook

drizzle0925 2022. 1. 14. 12:27
728x90

목차

1. webhook 연동하기 (Repository에 push 하면 Jenkins에서 자동 bulid 실행시키기)

2. webhook 오류해결

 

webhook 연동하기

 

구동원리

1. 개발자가 Code를 Repository에 Push 한다.

2. GitHub에서 webhook이 Trigger 된다.

3. GitHub webhook이 POST로 Jenkins에게 데이터를 보낸다.

4. Jenkins가 Build Action을 취한다.

 

이전 포스팅에서 GitHub의 토큰을 발급 받았습니다.(https://like-a-drizzle.tistory.com/379)

발급한 토큰을 가지고 아래부터 따라 하시면 됩니다.

 

Jenkins 관리 선택 > Manage Credentials 선택

 

global 선택

 

Add Credentials 선택 > Kind - Secret text 선택 > Secret - GitHub Token 입력 > ID - GitHub ID 입력 > OK 선택

 

연동

Jenkins 관리 선택 > Configure System 선택

 

Add GitHub Server 선택

→ Name - GitHub ID 입력 

→ Credentials - 위에서 생성한 Credentials 선택

→ Test Connection 선택 - 연결 확인

→ Manage hooks 체크 선택

→ Save(저장) 선택

 

연동할 GitHub Repository 접속 > Setting 선택 > Add webhook 선택

 

Payload URL 입력 - http://[ip:port]/github-webhook/

→ Content type - application/json

→ Add webhook 추가

 

Jenkins로 돌아와서 webhook을 등록할 Item 선택

 

구성 선택

 

빌드 유발 > GitHub hook trigger for GITScm polling 체크 > Save(저장) 선택

 

파일 수정

 

아무거나 입력 > Commit changes 선택

 

자동으로 빌드가 실행되었는지 확인

 

여기까지 해서 문제없이 빌드가 실행되었다면 그대로 사용하시면 됩니다.


webhook 에러 발생

위처럼 했는데 에러가 발생했다 하시분들은 참고해주세요.

 

Settings > Webhooks > Recents Deliveries에 오시면 정상적으로 전송했는지 실패했는지 확인할 수 있습니다.

빨간색 느낌표가 표시되면 실패한 거고 초록색 체크 마크가 나오면 성공한 겁니다.

 

저 같은 경우에는 jenkins가 외부에서 접속이 불가능해서 webhook이 제대로 동작하지 않았습니다.

그래서 찾은 방법이 [ngrok]을 사용하는 방법입니다.

 

저는 server는 ubuntu LTS 20.04를 사용하고 있습니다.

ngrok은 외부에서 로컬에 접속 가능하게 하는 터널 프로그램입니다.

대략 이런 이미지 입니다.

Linux 기준으로 설치를 해보겠습니다.

rgork의 공식 사이트 주소는 아래와 같습니다.

https://ngrok.com/

 

ngrok - secure introspectable tunnels to localhost

@Botto ngrok, probably the best tool I have started to use for my webwork since firebug also great support

ngrok.com

 

아래 명령어를 입력합니다.

sudo snap install ngrok

 

rgrok 설치 장소

which ngrok

 

ngrok 설명 보기

ngrok

 

ngrok 실행

ngrok [http/https] [port]

ngrok http 8080

 

우분투에서 snap으로 설치한 경우 ngrok.com 계정을 등록하지 않아도 사용 가능하지만 세션이 8시간만 유지됩니다.

ngrok.com 사이트에서 회원가입을 하시면 Authtoken을 발급받을 수 있습니다.

아래 명령어를 복사해서 shell에서 입력합니다.

 

그리고 ngrok을 실행하면 세션 시간제한 없이 사용할 수 있습니다.

 

빨간색을 체크한 주소를 GitHub webhook에 등록합니다.

 

 

등록이 다 됐었다면 시험 삼아 Readme.md 파일을 수정해봅니다.

GitHub Repository에 파일을 push 하면 자동으로 빌드되는 것을 확인할 수 있습니다.

728x90