개발/ETC

[Jenkins] - Jenkins를 활용하여 CI/CD 구축하기 #2

dongdev 2022. 6. 28. 00:09

 

젠킨스 CI 설정하기

github의 main 브랜치에 변화가 생기면 자동으로 가져오는 CI를 구축하자.

 

우선 자신의 깃허브로 접속한 후, 프로필을 클릭해 Settings를 누른다.

 

그리고 하단에 있는 Developer settings를 클릭한다.

 

Personal access tokens에 들어간 후 Generate new token을 클릭한다. 

그리고 아래 사진과 같이 설정한 후 토큰을 발급 받는다. 발급된 토큰은 꼭 복사해서 잘 저장해두자.

 

그리고 깃허브 리포지토리의 Settings 눌러 webhook 탭을 클릭하고 Add webhook 버튼을 누른다.

 

Payload URL에 젠킨스 서버 IP 또는 DNS를 적고 뒤에 github-webhook/을 추가로 적는다.

그리고 아래 그림과 같이 설정후 Update webhook 버튼을 누른다.

이제 깃허브 설정은 끝났다. 젠킨스 메인 화면으로가자.

 

젠킨스 메인 화면에서 왼쪽 탭에 "+ 새로운 Item" 클릭 후 Freestyle project로 새 아이템을 생성한다.

그럼 아래와 같은 화면이 보일건데, 여기서 왼쪽탭에 구성을 클릭하자. 

 

소스 코드 관리 섹션에서 아래 그림처럼 Git 클릭 후 리포지토리 URL과 Branch Specifier를 적어준다.

그리고 Credentials Add를 클릭한다.

 

Kind를 Secret text로 설정하고, Secret에 위에서 복사한 토큰을 입력한다. 그리고 ID에 자신의 깃허브 ID를 적고 Description도 적어준 후, Add 버튼을 누른다.

 

마지막으로 빌드 유발 섹션에서 GitHub hook trigger for GITScm polling을 선택하고 저장한다.

 

이제 main 브랜치에 push를 하면 빌드가 생성되고 젠킨스 메인화면 Build History에 로그들이 하나씩 쌓이는 것을 볼 수 있다. 

Console Output으로 가면 로그들을 확인해 볼 수도 있다.

 

젠킨스 CD 설정하기

CI를 통해 가져온 서버 코드를 gradle로 실행파일을 만든 후, ec2 배포 서버에 배포하는 CD를 구축하자.

 

우선 gradle로 빌드하기위해 gradle 플러그인이 필요하다. (Add build step -> Execute shell을 사용한다면 필요없다)

젠킨스 메인화면 Jenkins 관리 -> Global Tool Configuration -> Gradle (Gradle installations...)로 들어가서 아래와 같이 원하는 Gradle Version을 선택하고 저장하면 빌드에 필요한 Gradle 설치는 끝난다.

 

그리고 만들어 놓은 아이템의 구성에 들어가서 Build 섹션에 Add build step -> Invoke Gradle Script를 선택하고 아래의 그림과 같이 설정해준다.

 

이후 배포서버에 빌드된 jar파일을 SSH를 통해 전송하기때문에 Publish Over SSH 플러그인을 설치해준다.

젠킨스 관리 -> 플러그인 관리 -> 설치 가능 -> Publish Over SSH 검색 후 설치 해준다.

설치가 완료되면 젠킨스 관리 -> 시스템 설정 으로 들어가 Publish Over SSH를 아래와 같이 설정해준다.

  • Key는 ec2 배포 서버의 .pem 파일 내용
  • Hostname은 ec2 배포 서버의 IP
  • Username은 접속하려는 유저
  • Remote Directory는 접속했을 때의 기본 디렉토리

 

다시 아이템의 구성에 돌아가 빌드 섹션에 빌드 후 조치 추가 -> Send build artifacts over SSH를 클릭한다.

 

그리고 아래와 같이 구성한다.

 

테스트

젠킨스 파이프라인을 돌려주고 배포 서버에 들어가 잘 배포되었는지 확인해보자.

잘 배포되었다!!

다음에는 도커를 추가해서 구축해보자.

 

 

 

*Jenkins를 활용하여 CI/CD 구축하기 #1

https://dongdev.tistory.com/62?category=540004