본문 바로가기
프로젝트/협업 프로젝트(2023.12.18-2024.01.25)

[Key Word 개발기] AWS 배포 - Github WebHook과 Jenkins

by dal_been 2024. 1. 19.
728x90

간단하게 우리 협업프로젝트 CI/CD구조가 이러하다. 이번 게시글에서는 github webHook과 jenkins를 어떻게 연결하는지 설명할 것이다.

 


일단 GitHub에서 PR을 올리면 Github Actions에서 정상적으로 빌드가 되는지, 테스트코드가 통과하는지 검사해준다. 만약 에러가 나온다면 설정한 브랜치로 merge가 불가능하게 해놨다.

 

그래서 만약 모든게 다 정상적으로 작동한다면 Webhook에서 Jenkins쪽으로 이벤트를 보낸다.

여기서 Webhook이란 특정 애플리케이션이 다른 애플리케이션으로 이벤트 정보를 실시간으로 제공하기 위한 방법이다.

젠킨스 쪽에서는 외부에 Webhook의 이벤트를 보낼 수 있는 url를 열어두고 Webhook에서 이벤트가 발생하면 해당 정보를 제공한다.

 

이후 jenkins를 설정한 구성에 따라 스프링부트  어플리케이션을 빌드하고 jar파일을 생성한다.

 

SSH 키 생성 및 등록

 

Github 연동할때 ssh 키로 연동할것이다.

 

ssh키를 생성할 위치에 ec2 콘솔에다가

ssh-keygen -t rsa -f id_rsa_keyword

 

엔터를 누르면 id_rsa_keyword, id_rsa_keyword.pub이 생긴다(이름은 원하는 걸로 수정가능)

 

일단 

cat id_rsa_keyword

 

에서 나온 코드를 다 복사한다!

 

이후 jenkins페이지로 이동하여 

 

Credentials로 이동하여 global을 클릭하여 add Credetials를 해준다.

이후 SSH User with private key를 선택하고 Scope는 그대로 두고 Primary key아까 복사해둔 코드들을 넣어준다.

나머지 값들은 하고 싶은 대로 하면 된다.

 

 

다음으로는 GitHub 프로젝트로 이동하여 Settings 탭 -> Deploy keys -> Add deploy key를 클릭

아까 id_rsa_keyword를 설치한 곳에다 밑의 명령어를 입력하여 값들을 복사한다.

cat id_rsa_keyword.pub

 

그래서 아까 클릭한 깃허브 페이지 Key에다가 해당 값을 붙여넣고 (Allow write access 해제) title값은 원하는 대로 하고 등록

 

그럼 여기까지 Jenkins에서 Github 코드를 가져와 build, test, code clone등 까지 할 수 있게 해준다.

 

 

webhook

 

이제 github브랜치에 merge될때 jenkins에게 트리거 역할을 해주는 webhook 설정이다.

jenkins를 관리할 Github프로젝트에서 Settings -> Webhooks -> Add webhook

 

payload url : http://{aws 퍼블릭 도메인}:{jenkins포트번호}/github-webhook/

등록하고 나면 밑에 이미지처럼 성공했다고 파란색 체크표시가 뜬다

 

 

 

주의해야할 점

1. SSH 키를 authorized_keys파일에 등록해야한다.

authorzied_keys파일은 public key 인증을 사용하여 허용된 사용자를 인증하는데 사용되는 키를 저장하고 있다. 즉 id_rsa.pub?키를 여기에다가 등록해야지 ssh키가 유효해진다.

 

cd /.ssh
cat ~/.ssh/_rsa.pub >> ~/.ssh/authorized_keys

 

나의 경우 /.ssh폴더에 authorized_keys 파일이 있었다. 그래서 2번째 명령어를 통해 pub이 있는 폴더/_rsa.pub을 authorized_keys에 등록해주었다.

 

 


일단 github와 jenkins연동 완료... 다음은 jenkins 설정??을 어떻게 하였는지 작성하겠다..