Github 프로젝트와 Jenkins 연동

해당 프로젝트를 진행하기 위하여 저는 다음의 주소에 있는 프로젝트를 사용하였습니다.

https://github.com/JaehongParkYS/calculator_CICD

 

  1. Global Tool Configuration

    : 여기서는 자신이 빌드할 프로젝트에서 필요한 환경(Maven, JDK, Gradle, Git, etc.)을 구성합니다. 저는 C/C++ 이므로 Git만 설정하면 되는데 이미 설정이 되어있어 Pass 합니다.

 

  1. Plugin 설정

    : 필요한 Plugin들을 설치합니다. Git, Github관련 Plugin들은 Install suggested plugins에 포함되어있어 추가적으로 설치할 필요는 없습니다.

저는 Docker Plugin을 설치해 주었습니다.

설치된 플러그인들은 다음의 페이지에서 확인할 수 있습니다.
http://localhost:8754/updateCenter/

 

  1. Github 설정

위 설명대로 들어온 후 해당 git에 접속할 수 있는 token을 발급해 줍니다.

본인의 의도에 맞게 token에 access 권한을 부여해 줍니다.

스크롤을 내려 GitHub 란에서 Add 버튼을 선택해 줍니다.

위 사진과 같이 설정해 주고, Secret 란에는 GitHub에서 발급한 token을 넣어줍니다.

위 사진과 같이 생성한 Credential을 선택해 주고 Connection test를 해 봅니다.

 

  1. Github 연결

위 사진과 같이 [New Item] - [Freestyle project]를 선택해 주고 아무 이름이나 넣어 줍니다.

다음 그림과 같이 GitHub project란에 프로젝트 명(https://github.com/JaehongParkYS/calculator_CICD)을%EC%9D%84) 넣어주고, Source Code Management란에 git 주소(https://github.com/JaehongParkYS/calculator_CICD.git)를%EB%A5%BC) 넣어줍니다. 그리고 Credential 란에는

ssh-keygen -t rsa -f 파일명 명령으로 ssh 키를 만들어, .pub 확장자가 없는 파일(private 키)의 내용을 넣어 줍니다.

그 후, 다음과 같이 Build 절차와 Post-build action을 정의해 줍니다.
저는 C/C++ 프로젝트이어서 간단하게 작성하였습니다. 저장을 눌러주면 다음과 같이 Item이 생성되었습니다.

다시 GitHub의 프로젝트로 넘어와서,

위에서 ssh-keygen -t rsa -f 파일명 명령으로 만든 public key를 위 사진과 같이 GitHub 계정에 등록시켜 줍니다. 이를 통해 Jenkins와 GitHub이 사전에 정의된 키를 이용해 통신을 가능하게 합니다.

GitHub 프로젝트의 [Settings] - [Webhooks]로 넘어가 [Add webhook]을 선택한 뒤 위와 같이${Jenkins의 주소}/github-webhook/을 넣어줍니다. 저는 public 주소가 없으므로 추후 ngrok을 이용해 수정해 줄 것입니다.

 

  1. Host(Windows10)와 Guest(Ubuntu-VirtualBox)를 포트포워딩 시키기

    제 PC는 Windows10이 설치되어있어, 개발 편의를 위해 VirtualBox에 Ubuntu20.04를 설치하였고, 이 Ubuntu에 모든 개발환경(Jenkins 포함)을 설정하였습니다.

    따라서 Jenkins 특성상 외부에서 제가 설정한 Jenkins 서버에 접속하여야 하므로, Host(Windows10)와 Guest(Ubuntu)의 특정 포트(8754)를 포트포워딩 시켰습니다.

다음 그림과 같이 HostPC의 loopback 주소(127.0.0.1)의 8754 포트를 GuestPC의 IP주소:8754 포트에 포트 포워딩 시켰습니다.


Ubuntu에서 IP 주소를 확인하기 위해서는 ifconfig 명령을 사용하면 되는데요, VirtualBox에서 설치하였다면 10.0.2.15로 고정되어 있습니다.

 

  1. ngrok을 이용해 Host PC의 특정 포트를 외부에서 접근가능하도록 public 주소 만들기

    ngrok은 다음의 주소에서 설치할 수 있습니다.

ngrok.com/download

 

ngrok - download

Running this command will add your authtoken to your ngrok.yml file. Connecting an account will list your open tunnels in the dashboard, give you longer tunnel timeouts, and more. Visit the dashboard to get your auth token.

ngrok.com

설치가 끝난 후, 저는 8754 포트를 Jenkins 접속 포트로 사용하고 있기 때문에 다음과 같이 ngrok에 명령어를 실행시켜주면


외부에서 접근할 수 있는 주소가 나타납니다.
한번 접속해 볼까요?


네, Jenkins로 포트포워딩 되어 접속이 잘 되네요.

 

그렇다면 위 GitHub 프로젝트의 [Settings] - [Webhooks]로 넘어가 [Add webhook] 다시 올바른 주소를 설정해 주도록 합시다. 그리고 나서 PR을 발생시켜보면,

위 그림과 같이 Jenkins의 Job이 생기고, PR에도 Jenkins 관련 내용이 보입니다. ^^

 

7. Build 결과물(artifact) 확인

Build 결과물은 jenkins 설치 경로에 따라서 다르므로 설치경로를 확인하는게 좋습니다.

default 경로는 /var/lib/jenkins/ 이므로 참고하시고, 해당 경로로 들어가보면 다음과 같이 빌드 결과물과, 해당 artifact를 실행해 볼 수 있습니다.

 

+ Recent posts