티스토리 뷰

0. Commit Statues API?

https://docs.github.com/en/rest/commits/statuses

 

Commit statuses - GitHub Docs

Status: 200 { "state": "success", "statuses": [ { "url": "https://api.github.com/repos/octocat/Hello-World/statuses/6dcb09b5b57875f334f61aebed695e2e4193db5e", "avatar_url": "https://github.com/images/error/hubot_happy.gif", "id": 1, "node_id": "MDY6U3RhdHV

docs.github.com

The Commit status API allows external services to mark commits with a status, which is then reflected in pull requests involving those commits.

 

근데 이름이 이게 맞는지 모르겠다.

국내 블로그 자료를 찾아보기가 힘들어서 진행하면서도 이게 아닌가? 싶었는데 결과는 내가 원하는대로 잘 나온거 보니 맞는것 같아서 글을 쓰게 된다.

 

Commit Status라고 하는 것 같기도 하고 Build Status라고 하는 것 같기도 하고 사실 나도 정확하지가 않다.

 

 

프로젝트가 거대해지고 협업에 참여하는 팀원이 많은 경우에 유용하게 상황되지 않을까 싶다.

난 아직 혼자 토이프로젝트 하는 정도지만;;

일단 뭔가 좀 있어보인다 ㅎㅎ.. 한번 있다가 없어지면 되게 허전하고 그렇다. 

 

Travis CI 이용했을 때는 자동으로 적용 되었었는데 Jenkins는 내가 따로 설정을 해줘야 하는 사항이다.

함 해보자!

 


1. Github Token 발급

(SSH로 만들어놓은 Credential이 있는데 그건 사용이 안된다. Token 방식만 되는 것 같음.)

 

https://github.com/settings/profile

Setting > Developer settings > Personal access tokens > Generate new token 클릭

 

Note > 어떤 토큰인지 대충 적기

Expiration > No expiration

Select scopes > admin:org_hook, repo:status 체크

 

생성 후 나오는 토큰 값은 생성 시점에 단 한번만 볼 수 있으니 따로 메모장에 저장해둘것!

(까먹으면 그냥 삭제하고 재생성 하면 되니 걱정할 필요 없음)

 

 

 

2. Jenkins Credential 생성

Jenkins에서 Github plugin 설치 (근데 아마 기본으로 설치되어있었던 것 같음)

 

 

Jenkins 관리 > 시스템 설정 > Github > Add Github Server 눌러서 Github 설정 추가

 

API URL > https://api.github.com

Manage hooks 체크

 

 

Credentials 밑에 Add 버튼 눌러서 Jenkins Credentials 추가

Kind > Secret Key

Secret > 아까 발급받은 토큰값

ID > 내 깃헙 아이디

 

 

설정 후 저장

 

3. Github Project Webhook 설정

설정해줄 내 리포지토리 > Settings > Webhooks 

 

Payload URL > [내 Jenkins 접속 경로:포트]/github-webhook/ 

Content Type > application/json

 

 

생성 후 Recent Deliveries 확인해 봤을때 체크 표시 되있어야 정상적으로 연결된 것임!

 

 

** failed to connect to host 오류 발생하는 경우 ** 

AWS 보안 그룹 인바운드 규칙에서 Jenkins 포트를 모든 IP로 풀어주면 된다

 

 

- 나같은 경우는 Jenkins 접속 IP를 내 IP 하나로만 지정해놔서 Github가 접근하려고 했을 때 연결이 안됐던 것임. 보안그룹 꼭 확인해볼것

- 깃허브가 사용하는 특정 아이피 그룹만 허용해줘도 된다고 하는데 귀찮으니까 ㅎㅎ;;

 

 

(+) 이름이 왜 Webhooks?

"특정 이벤트가 발생하였을 때 타 서비스나 응용프로그램으로 알림을 보내는 기능 (HTTP 콜백)"

- hook = 갈고리. 깃허브에 이벤트가 생기면 젠킨스도 같이 갈고리 걸어서 같이 땡겨가겠다는 의미로 생각하면 될듯

 

 

4. Jenkins Project 환경설정

* GitHub hook trigger for GITScm polling 체크 확인

 

Jenkins > My Views > All > 내 프로젝트 > Configuration 

맨 밑에 빌드 후 조치 > Set Github commit status (universal) 추가

 

 

What > Status result를 One of default messages and statuses로 변경 후 저장. 나머지는 손 댈거 없음.

 

 

 

이제 push 해보면?!?!?!?!

 

 

아주 잘 되었다!

 

 

참 신기하면서도 설정하는게 너무 머리아프다.

CI/CD 이쪽을 다뤄보면서 느끼는거지만 편리한 개발환경을 위한 준비를 위한 준비를 위한 준비를 하는 느낌..

평소 해오던 개발과는 전혀 다른 분야라 그런지 참 쉽지않다 ㅠ

 

그리고 이렇게 웹페이지에서 일일히 버튼 눌러가면서 수정하는 대신에 "파이프라인" 이라는 것을 이용해 코드로 한방에 설정해줄 수 있는 방법을 많이 사용하는 것 같았다.

 

진짜 파면 팔수록 더 모르는게 많아지는 것 같다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함