티스토리 뷰
0. Commit Statues API?
https://docs.github.com/en/rest/commits/statuses
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 이쪽을 다뤄보면서 느끼는거지만 편리한 개발환경을 위한 준비를 위한 준비를 위한 준비를 하는 느낌..
평소 해오던 개발과는 전혀 다른 분야라 그런지 참 쉽지않다 ㅠ
그리고 이렇게 웹페이지에서 일일히 버튼 눌러가면서 수정하는 대신에 "파이프라인" 이라는 것을 이용해 코드로 한방에 설정해줄 수 있는 방법을 많이 사용하는 것 같았다.
진짜 파면 팔수록 더 모르는게 많아지는 것 같다.
'웹' 카테고리의 다른 글
Docker + 쿠버네티스 공부 (0) | 2023.02.15 |
---|---|
Nginx를 이용해 HTTPS 웹 애플리케이션 무중단 배포 환경 만들기 (0) | 2022.11.10 |
EC2에 Jenkins 설치해서 CI/CD 환경 구축해보기 (0) | 2022.09.13 |
URI와 URL, URN의 차이점에 대해 (0) | 2022.09.07 |
Travis CI를 이용한 CI/CD 환경 구성 실습 (2) (0) | 2022.09.02 |