Github Webhook를 이용해서 Github repository에 커밋이 발생하면 Jenkins에서 자동으로 빌드가 일어나도록 해보자.
1. Github Personal Access Token 생성
Github private repository 를 이용하고 있으므로 우선 Github Personal Access Token를 생성해야 한다.
프로필을 클릭 > Settings 클릭
그리고 왼쪽 탭 하단에 있는 Developer settings 클릭
1. Personal access tokens 클릭
2. Tokens(classic) 클릭
3. Generate new token 클릭
4. Generate new token (classic) 클릭
repo 와 admin:repo_hook 를 선택해 주고 Generate token 버튼 클릭
그러면 아래와 같이 토큰이 생성된다. 이제 해당 토큰을 복사버튼을 클릭해서 기억해 두자.
2. Jenkins Credentials 생성
이제 위에 생성한 Github Personal Access Token 를 Jenkins에 등록해 주자.
Jenkins 관리 클릭 > Manage Credentials 클릭
Domains밑에 있는 (global) 클릭
Add Credentials 버튼 클릭
Username은 Github ID를 적어주면 된다.
Password는 위에서 생성한 Github Personal Access Token 를 입력해 주면 된다.
ID는 Jenkins Credentials ID이다.
다 입력해 주고 Create 버튼을 클릭해 주면 된다.
3. Github Repository Webhook 생성
이제 Jenkins와 연동할 Github Repository에 들어가서 Webhook를 생성하자.
Settings 클릭 > Webhooks 클릭 > Add webhook 버튼 클릭
Payload URL에 젠킨스주소에 /github-webhook/ 를 추가해서 입력하면 된다.
Content type 은 _application/json_를 선택해 주고 Add webhook 버튼을 클릭하면 webhook이 생성된다.
만약에 Jenkins를 로컬에서 실행했다면 로컬환경을 인터넷으로 노출해줘야 한다.
ngrok
를 이용하면 로컬에 구성한 환경을 외부에 공개할 수 있다.
Mac OS 기준으로 아래와 같이 할 수 있다.
1. ngrok 설치
brew install ngrok/ngrok/ngrok
2. authtoken 추가
ngrok 사이트에서 로그인하면 authtoken를 준다. 해당 토큰을 설정에 추가해 주면 된다.
ngrok config add-authtoken <token>
3. http 터널링
로컬 웹서비스가 8080 포트에 실행되고 있다면 다음과 같이 실행하면 된다.
ngrok http 8080
4. 아래와 같은 메시지를 확인할 수 있는데 Forwarding옆에 나와 있는 *.ngrok.io
URL를 Payload URL 에 젠킨스 주소로 입력해 주면 된다.
4. Github Repository 에 Pipeline script 추가
아래와 같은 Pipeline script를 Jenkinsfile로 Github repository에 추가하였다.
pipeline {
agent any
stages {
stage('build') {
steps {
echo 'building the application...'
}
}
stage('test') {
steps {
echo 'testing the application...'
}
}
stage('deploy') {
steps {
echo 'deploying the application...'
}
}
}
}
5. Jenkins pipeline 생성
GitHub project 클릭하고 Project url를 입력하자.
- branch 부분은 없이 project url를 입력해야 한다.
- 예시) https://github.com/rails/rails
GitHub hook trigger for GITScm polling 클릭
Pipeline script를 Github repository에 생성하였으므로 Definition에서 Pipeline script from SCM를 선택하자.
SCM은 GIT으로 선택하고
Repository URL를 입력하고 Credentials 위에 생성한 것을 선택하면 된다.
Branch Specifier 에서 ****job를 빌드할 브랜치를 선택하고
Github repository에 Pipeline script 가 있는 Path를 Script Path에 입력하면 된다.
저장 버튼을 누르고 해당 Github repository에 커밋을 발생시키면 Pipeline이 실행되는 것을 확인할 수 있다.
참고
'CI&CD' 카테고리의 다른 글
Jenkins Pipeline 개념 및 예제 (0) | 2023.01.26 |
---|---|
Install and Run Jenkins With Docker Compose (0) | 2023.01.25 |
댓글0