1. Jenkins 플러그인 설치


우선, Jenkins와 Gitlab을 연동하여 CI/CD를 구축하기 위해선 다음 플러그인을 설치해야 합니다.

1. Bitbucket Pipeline for Blue Ocean
2. Dashboard for Blue Ocean
3. Personalization for Blue Ocean
4. Display URL for Blue Ocean
5. Server Sent Events (SSE) Gateway
6. Events API for Blue Ocean
7. Blue Ocean Pipeline Editor
8. i18n for Blue Ocean
9. Autofavorite for Blue Ocean
10. Blue Ocean
11. NodeJS
12. GitLab
13. Generic Webhook Trigger
14. Gitlab Authentication
15. Gitlab API
16. GitLab Branch Source
17. Gitlab Merge Request Builder
18. Config File Provider
19. Docker
20. Docker Pipeline
21. docker-build-step

위 플러그인들을 설치하기 위해 아래 화면의 [Jenkins 관리] -> [플러그인 관리]를 들어갑니다.

[그림 1] Jenkins 플러그인 설치

그 후, [설치 가능] 탭을 눌러 검색 창에 설치해야할 플러그인을 하나씩 검색하여 설치합니다.

[그림 2] Jenkins 플러그인 설치

2. Jenkins 시스템 설정


Jenkins 대시보드 화면에서 [Jenkins 관리] -> [시스템 설정] 에 들어간 후, 화면을 내리면 다음과 같이 Gitlab이 나옵니다.
Connection name은 아무 이름이나 주고, 연동할 Gitlab URL을 적은 후, Credentials 을 선택 또는 생성합니다.
그 후, 'Test Connection' 을 누르면 다음과 같이 'Success' 가 나옵니다. (Credentials 생성은 아래에서 설명합니다.)

[그림 3] Jenkins 시스템 설정에서 Gitlab과 연결하기

 

3. Jenkins Pipeline 아이템 만들기


Jenkins 대시보드 화면에서 [새로운 Item] 을 클릭합니다.
그럼 아래와 같은 화면이 나올텐데, 다음과 같이 Pipeline을 선택하고, 아이템명을 입력한 후 다음으로 넘어갑니다.

[그림 3] Pipeline 아이템 생성하기

그러면 다음과 같은 화면이 나오는데, [Build Triggers] 탭을 누르거나, 화면을 밑으로 내려보면 아래 화면이 나옵니다.
'Build when a change is pushed to Gitlab. ~' 부분을 체크해주고, 아래의 '고급' 버튼을 누르면 'Generate' 라는 버튼이 생깁니다. 해당 버튼을 누르면 Secret token 값이 생성되는데, 이 Webhook URLSecret token 값을 기억해둡니다!

[그림 4] Build Triggers 설정하기 (Webhook URL과 Secret token 구하기)

그 후 같은 화면에서 [Pipeline] 탭을 누르거나, 화면을 밑으로 내려보면 아래 화면이 나옵니다.
Jenkins의 Pipeline 스크립트를 아래 에디터에 바로 작성할 수도 있고, Gitlab의 Jenkinsfile로 부터 가져올 수도 있습니다.
Jenkinsfile로 CI/CD 스크립트를 관리하는게 유지보수 측면에서 훨씬 더 좋기 때문에 'Pipeline script from SCM' 을 선택합니다.

[그림 5] Pipeline script from SCM 선택하기

그 후, 아래 화면에서 Gitlab 도메인을 적은 후, Credentials 을 생성합니다.

[그림 6] Credentials 생성하기

그리고 Credentials 생성 화면에서 중요한 부분은 'Kind' 부분입니다.
요즘은 인증을 위해 ID/PW가 아닌 토큰을 주로 사용하기 때문에 'Gitlab API token'이나 'Gitlab Personal Access token' 종류를 사용하여 Credentials을 만들려 하였고, 이로 인해 많은 시간을 허비했습니다.. (결론적으로 Jenkins 버그입니다.)
따라서, 'Username with password' 로 진행합니다.

[그림 7] 'Username with password' 타입으로 Credentials 생성하기

 

'DevOps > CI CD' 카테고리의 다른 글

[CI CD] Ubuntu에 Jenkins 설치하기 (with. Docker)  (0) 2022.02.18
[CI CD] 배포 자동화  (0) 2020.09.05
[CI CD] 테스트/빌드 자동화  (0) 2020.09.05