본문 바로가기
공부-프레임워크, 개발도구/젠킨스

1. 젠킨스 빌드

by 령과 2023. 1. 28.

목표

  • gradle로 빌드하는 Spring Boot 프로젝트를 빌드하는 파이프라인 구성해보기
  • 도커를 활용하여 설정해보기

도커가 기본적으로 설치되어 있다고 가정한다.

 

 

1. docker 설정하기

관리할 때 일일이 명령어를 치기는 어려움이 있다. docker-compose로 젠킨스에 대한 기본 설정을 진행한다.

젠킨스를 실행할 때마다 일일이 다운받고 세팅하지 않도록 volumes을 설정하였다.

 

해당 파일이 있는 위치에서 docker-compose up 명령어를 치면 http://localhost:8080으로 젠킨스에 접속할 수 있게 된다.

처음 시작하면 암호화된 비밀번호를 입력하는 란이 있다. 명령어를 백그라운드 실행을 하지 않았다면 콘솔창 하단에 있는

비밀번호를 볼 수 있다.

암호를 치고 추천하는 플러그인을 설치한 다음 admin 계정 설정을 진행한다.

 

계정 설정이 완료되면 new item -> freestyle 아이템을 생성한다.

설정을 할 때 소스 코드 관리의 Git을 선택한다.

연결하고자 하는 프로젝트와 인증방법을 넣는다. (username, password가 git프로젝트 접근할 때의 방법과 동일 토큰으로)

 

github의 push 트리거에 인식하고자 하면 밑줄친 부분을 클릭하고 webhook을 설정하면 되지만 우선 스크립트만 작성한다

이렇게 하고 바로 시작한다면?

오류가 발생했었다. 자세히 읽어보면 Permission denied에러라고 나온다.

도커 컨테이너의 해당 폴더에 직접들어가서 ls -al을 쳐보니 gradlew파일의 권한에 실행권한이 없다.

다시 빌드 스크립트를 다음과 같이 변경해 보았다.

cd testproject
ls -al
chmod +x gradlew
./gradlew clean jenkins

결과는 다음과 같이 나왔다. 정상적으로 빌드된 것을 확인할 수 있다.

이제 해당 프로젝트에서 push가 발생한다면 젠킨스가 이를 감지해서 자동으로 빌드하는 과정을 추가해본다.

 

전에 빌드 유발(Build trigger)에서 잠시 체크해제 했던 GitHub hook trigger for GITScm polling을 체크한다.

이제 Jenkins는 GitHub의 webhook을 받을 준비가 되었다.

그냥 ip로 GitHub의 webhook URL을 지정하고자 했으나 webhook이 호스트와 연결을 실패했다고 나온다.

고정 IP를 할당하는 방법이 있다고 하지만 나는 임시 URL을 받을 수 있는 ngrok을 사용해서 테스트를 진행했다.

GitHub의 프로젝트에 들어가서 Webhooks에서 hook을 생성한다.

Payload에 쓰이는 URL은 ngrok를 환경에 맞게 설치한 다음 ngrok http 8080 을 수행해서 발급받는다.(구글링 추천)

막상 해보니 엄청 간단히 Jenkins와 GitHub연결이 되었다.

 

이제 프로젝트에 push를 하면 GitHub가 push를 받은 다음 webhook을 통해 Jenkins에게 변경사항이 있다고 알려주고,

Jenkins는 변경된 내용을 build하게 된다.

 

댓글