개발/Today I Learned

Jenkins, GitLab: Git Push 자동 배포와 원격 스크립트를 사용

devmomori 2022. 4. 10. 00:18

젠킨스에 로그인 -> 배포하고자 하는 프로젝트를 찾기 -> 빌드 하기. 이러한 일련의 과정이 너무나 귀찮았다. 푸시하고 인터넷을 켜야 하는 게 말이 되는가?

 

IDE에서 작업을 마무리하고 어떻게 명령어하나로 위의 과정을 스킵할 수 있을까 하고 보니, 두 가지 방법을 찾을 수 있었다.

 

  • GitLab에 Push가 되면 webhook을 통해 빌드를 유발
  • 원격 스크립트를 활용하여 잦은 Push를 통한 빌드를 피하고자 명령어를 통해 원할 때 빌드하는 것

 

두 가지의 방법 모두 간단히 설정할 수 있다.

 


 

1. GitLab Push시 Jenkins 빌드

젠킨스 접속 -> 프로젝트 -> 구성에 들어간다.

고급 버튼 클릭 후, 시크릿 토큰을 발급 받는다.

 

Jenkins Build Triggers

 

Jenkins Build Triggers Advance Settings

 

토큰을 받으면 GitLab 프로젝트 Settings의 Integrations로 들어간다.

 

gitlab project settings
webhook push event setting

젠킨스 URL와 Token을 입력하고 Push Events에 체크

 

그리고 Add webhook을 누른 후 테스트를 통해 HTTP 200 값이 오는지 확인한다

 

 

이제 git push 하면 젠킨스에서 빌드가 유발된다.

 


2. 원격 스크립트 사용

젠킨스에 접속하지 않는 것만으로도 너무나 편했다.

 

그러나 push를 할 때마다 빌드가 너무 잦으니, 푸시 이후에 수정사항이 생겼을 때 이전의 빌드를 멈추거나 기다려야 하는 번거로운 상황이 발생했다.

 

내가 원할 때 젠킨스의 빌드를 유발하는 방법이 있지 않을까 찾아보니 원격 스크립트를 활용할 수 있었다.

 

 

친절히 하단 문구에 어떻게 빌드를 유발할 수 있는지도 안내가 되어있다.

다음 URL을 사용하여 원격 빌드 유발: JENKINS_URL/job/somedaycode/build?token=TOKEN_NAME or /buildWithParameters?token=TOKEN_NAME

 

참고하여 shell script를 만들어 사용해보자

 

해당 스크립트를 실행하면 빌드가 유발된다.

 


쉘 스크립트를 실행했을 때 SSL 인증서와 관련된 문제가 발생해서 다음 링크를 통해 해결했다.

 

https 연결시 서버의 SSL 인증서 추출하기 (curl 또는 web browser 사용)

 

www.lesstif.com