iOS

JENKINS(4) github webhook (2)

스엠 2023. 3. 11. 19:32

 저번글에서 로컬에 있는 jenkins 서버를 외부에서 접근 가능하게 했다.

 

그러면 이제 github으로 가서 webhook에 필요한 토큰과 설정을 해야한다. 

 

1. github access token 생성

개인 깃헙으로 이동하여 profile -> developer setting -> Personal access tokens로 가서 generate new token을 눌러준다

 

그리고 나서 다음과 같이 설정을 해주고 키를 발급받고, 발급 받은 키는 안전하게 다른 곳에 저장해둔다.

 

2. github webhook 생성

이제 원하는 프로젝트로 이동하여 webhook을 설정해준다.

Add webhook을 누르면 다음과 같은 화면이 나온다.

 

여기서 payload URL에 ngrok에서 만들어진 url + /github-webhook/의 형태로 작성한다.

content type은 application/json으로 설정하고 완료 버튼을 누른다.

 

갓 웹훅을 설정하고 나서 delivery failed라는 경고 문구를 볼 수 있는데 이것은 

Redeliver 버튼을 누르면 정상적으로 연결됬다고 표시된다.

이제 깃헙에서의 세팅을 끝났다.

 

3. JENKINS credentials 설정

 Jenkins로 돌아와서 DashBoard -> Jenkins 관리 -> Manage Credential로 들어간다.

 

그리고 global로 이동하여 Add Credential을 눌러준다. 

위와 같이 정보를 채워넣고 create를 눌러줍니다.

그러면 다음과 같이 credential이 등록 된 것을 볼 수 있습니다.

 

3. JENKINS 프로젝트 설정

이제 기존에 작업하던 프로젝트로 이동합니다.

그리고 설정에서 빌드 유발 -> github hook trigger for GITScm polling을 체크 해준후 저장합니다.

이제 모든 설정은 끝났습니다. 

 

 

4. Test

해당 깃헙에다 push를 날리면 자동적으로 jenkins에서 빌드가 되는 것을 확인할 수 있습니다.

 

 

지금 상황에서는 바로 엔드 프로덕트로  webhook을 설정했는데

Pipeline 아이템을 여러개 만들어 단계마다 특별한 지시를 내리고 컨펌이 되면 다음 단계로 날리는 뭐 이런식의 설정이 가능할 것으로 보입니다.

 

예를 들어 프레임 워크 A,B,C가 존재하고 프로젝트 D가 A,B,C를 전부 참조 하는 경우 

A빌드 확인후 컨펌나면 -> B -> C -> 최종 엔드 프로덕트 D -> CD파이프라인을 통한 배포까지

저도 처음 접하는 거기 때문에 물론 아닐 수도 있어요 ㅎㅎ

 

아무튼 그동안 막막하게 CI를 어떻게 구축하나 하고 있었는데 막상해보니 그렇게 어렵지는 않은 것 같습니다.

물론 프로젝트 설정도 가볍기 때문에 그런걸 수 도 있지만 막연한 두려움은 사라진 기분입니다.