[CI / CD] Jenkins 와 Git 연동

2023. 2. 15. 18:14기술 창고/CI, CD

728x90
SMALL

Jenkins는 설치 완료하였다.

이제 Git 이랑 연동하여 프로젝트를 commit 후 push할 때 jenkins가 캐치하여 빌드, 테스트할 수 있도록 하자

 


(1) Git 토큰 발부

일단 자신의 Git 계정으로 들어가자

상단의 계정 마크를 눌러 나오는 탭들 중에 Settings 를 선택한다.

 

Archives 항목 밑에 Developer Settings 를 선택한다.

 

Personal access tokens -> Token (classic) -> Generate new token -> Generate new token (classic)

위의 순서대로 들어간다.

 

들어가면 자신의 Git 으로 토큰을 만드는 페이지가 나온다.

Note에 토큰이름을 지정해준다. (아무 명칭이나 상관없음)

Expiration 은 만료 기간을 지정해주는 부분이다.

나는 굳이 만료 기간을 설정하지 않아 No expiration 으로 세팅해주었다.

 

밑 부분에 scope (토큰으로서 접근가능한 동작 범위) 를 지정해준다.

필요한 부분은 repo, admin:org, admin:repo_hook 세가지 부분이다.

scope를 설정해주고 Generate Token 해준다.

 

토큰이 생성 완료되면 위와 같이 초록색 체크 박스가 나타나면서 생성된 토큰이 보여지게 된다.

이 토큰은 한번만 보여지므로 시간이 지나면 사라져서 안보여지게 된다.

따라서 어딘가에 메모해두자.

이 토큰으로 Jenkins에 연동해야 한다.

 

 

 

(2) Jenkins / Git 연동

일단 내가 만든 Jenkins에 들어가주자.

 

Jenkins에 접속하면 나오는 초기 화면에서 Jenkins 관리 항목 내의 시스템 설정을 선택한다.

 

GitHub 항목을 찾아서 Add Github Server 를 선택해준다.

 

Github 서버의 api를 저장하는 과정이다.

Credentials 에서 어떤 계정의 Github 서버의 api를 연동할 것인지 설정해야한다.

Name에는 서버명으로 아무 이름이나 지정해준다.

API URL 은 건드리지 않는 항목이다.

+ADD 탭의 jenkins를 선택하자.

 

 

  • Domain : Global credentials (unrestricted) 선택
  • Kind : Secret text 선택
  • Scope : Global (Jenkins, nodes, items, all child items, etc) 선택
  • Secret : 아까 Git 에서 만든 액세스 토큰을 입력해준다.
  • ID : 임의로 저장할 ID 명 입력
  • Description : 주석 설명같은 것을 적으면 되나 적지 않아도 상관없다.

 

다시 GitHub Server 항목으로 돌아오게 되고, Credentials에 방금 만든 Git 서버 ID를 지정해주고 저장한다.

 

이제 Jenkins 에서 Github의 레포지토리를 연동해 빌드를 할 수 있는 설정이 완료되었다.

 

 

 

(3) GitHub WebHook 설정

이제 Jenkins에 Git을 연동시켜 빌드까지 할 수 있는 설정을 완료했으니 본격적으로 프로젝트에서 코드의 변경사항이 발생한 뒤 commit 후 push 하게 되면 자동적으로 Jenkins 에서 캐치하여 처리할 수 있도록 설정해주자.

 

 

Jenkins 초기 화면에서 새로운 item을 선택해준다.

 

 

새로운 item 이름을 지정하고 Freestyle project를 선택해준다.

 

 

General 항목에서 GitHub project 를 선택하고 Project url 에 Jenkins를 적용시켜 CI / CD 를 사용할 Git 레포지토리 url을 입력해준다.

 

 

소스 코드 관리 항목에서 Git 을 선택하고 Repository URL에 방금 입력한 Git 레포지토리 url과 동일하게 입력해준다.

Credentials에는 초기에 none 으로 설정되어 있는데, Add 를 눌러주도록 하자.

 

또한 Jenkins 가 적용될 branch들은 Add branch로 추가해주도록 하자.

 

 

  • Domain : Global credentials (unrestricted) 선택
  • Kind : Username with password 선택
  • Scope : Global (Jenkins, nodes, items, all child items, etc) 선택
  • Username : 자신의 Github 아이디 입력
  • Password : 자신의 Github 계정 비밀번호 입력
  • ID : 지금까지 설정한 Credentials 의 임의 명칭이다. 아무거나 입력해주도록 하자.

 

빌드 유발 항목에서 GitHub hook trigger for GITScm polling 을 선택해준다.

어떠한 조건에서 Jenkins 빌드가 실행되는지를 설정하는 부분인데, GitHub에서 코드가 commit 된 뒤 push 되면 빌드를 trigger (작동) 되도록 설정한다.

이렇게 하면 GitHub에서 push가 일어나면 webhook 메세지를 jenkins에 보내주고, 이 webhook 메세지를 받은 jenkins는 Build를 실행한다.

 

 

이제 Git 으로 돌아와서 Jenkins에 연결한 레포지토리의 Settings 탭의 Webhooks 항목으로 들어가 Add webhook을 선택한다.

 

 

Payload URL 부분에 Jenkins 주소를 넣어준다.

초기에 installer를 통해 Jenkins를 설치하면서 지정해준 포트번호와 로컬 주소를 합친 주소다.

혹시나 헷갈릴까봐 Jenkins 페이지에 진입하는 초기 주소를 넣어주면 된다.

 

이 때 중요한 점은 localhost로 넣어주면 안된다.

Webhooks는 공인 ip 주소를 넣어주어야한다.

따라서 형식은 http://00.00.00.00:8085/ 가 될 것이다.

00 부분들은 각자 자신의 ip 주소값을 넣어주면 된다.

이 IP 주소를 알고싶으면 간단하게 네이버 검색 창에 '공인 ip 주소 확인' 이라고 검색하면 자신의 IP 주소가 조회될 것이다.

 

Content type 은 application/json으로 지정해주고 add webhook 해준다.

 

 

add 했으면 위의 이미지 처럼 webhooks가 추가된 것을 확인할 수 있다.

 

이제 프로젝트에 작업을 처리하고 push하면 Jenkins에서 확인할 수 있을 것이다.

 

 

###############################################################################################

위에서 설명한대로 Payload URL 넣은 뒤 바로 위 이미지처럼 경고 표시가 나오고 push 했을 때 Jenkins에 아무런 일도 벌어지지 않고 webhooks 요청에 We couldn't this payload: failed to connect to host 라는 에러가 발생할 수 있다.

이에 대한 해결 방법 : https://jindevelopetravel0919.tistory.com/107

###############################################################################################

 

 

[도움받은 출처 글]

https://narup.tistory.com/203?category=1002687 

 

[Jenkins] 젠킨스와 깃허브 연동(GitHub Web Hook)

먼저 젠킨스를 설치했다는 가정 하에 글을 작성합니다. 만약 젠킨스 설치가 아직 안되신 분은 아래의 도커에 젠킨스 설치하는 방법을 보시고 그대로 다시 따라하시면 될 것 같습니다! https://narup

narup.tistory.com

https://always-try.tistory.com/206

 

[DevSecOps] Jenkins CI/CD 파이프라인 SonarQube 통합 (1/3) - Jenkins 설치 및 Github 연동

https://yeonyeon.tistory.com/58 https://www.jenkins.io/download/thank-you-downloading-windows-installer-stable/ 에서 설치 파일 받아서 윈도우에서 설치 진행했는데, 바로 Error(Jenkins 0x8007052e - error logging on) 를 마주쳤다. 이

always-try.tistory.com

 

728x90
반응형
LIST