Jenkins Pipeline 생성

BinaryHyeok·2023년 3월 21일
0
post-thumbnail

개요

Gitlab의 특정 브랜치에 Push 또는 Merge Request가 발생하면 젠킨스가 이벤트를 감지하여 해당 브랜치의 프로젝트를 빌드, 테스트, 배포를 진행할 것이다.


1. 플러그인 설치

먼저 플러그인을 설치를 진행한다.
Dashboard \rarr Manage Jenkins \rarr Manage Plugin \rarr Available plugins 플러그인을 설치한다.

  • Generic Webhook Trigger Plugin
  • Git plugin
  • GitLab
  • Gitlab API Plugin
  • GitLab Authentication plugin
  • GitLab Branch Source Plugin
  • GitLab Credentials
  • Gitlab Merge Request Builder
  • Gradle
  • Publish Over SSH
  • SSH Agent Plugin
  • SSH Build Agent plugin
  • SSH Credentials Plugin
  • SSH Pipeline Steps
  • SSH server

2. Credentials 등록

Dashboard \rarr Manage Jenkins \rarr Manage Credentials
여기서 Gitlab Repository와 SSH에 대해 접근 할 수 있도록 권한 등록을 한다.

Add credentials를 눌러 등록한다.

- Gitlab 권한 등록

Gitlab에 대해 아이디와 비밀번호를 사용하여 등록한다.

Kind : 인증 유형
Username : Gitlab 아이디
Password : Gitlab 비밀번호
ID : CredentialsId, 이 아이디를 사용하여 등록된 Credential을 사용한다.

모두 기입했으면 Create를 눌러 등록한다.

SSH 권한 등록

먼저 SSH Key를 생성해 주어야 한다.

키를 저장할 경로로 이동
cd ~/.ssh
키 생성
ssh-keygen -t rsa

이때 passphrase는 굳이 입력하지 않고 엔터를 입력하여 넘긴다.
그러면 .ssh폴더 아래에 두개의 키가 생긴 것을 볼 수 있다.
id_rsa : private key
id_rsa.pub : public key

authorized_keys에 생성한 pulbic key를 추가한다.

내용 출력 후 복사한다.
cat id_rsa.pub
authorized_keys 파일을 열어 복사한 내용을 붙여넣는다.
sudo vim authorized_keys

authorized_keys 안에 public key를 붙여 넣었다면, private key로 Credential을 만든다.
Add credentials를 눌러 등록 폼으로 이동한다.

KindSSH Username with private key로 입력한다.
ID, Description도 입력한다.
Username은 SSH 접속 시 나타나는 계정 이름이다.
ubuntu@[private ip]: 와 같이 나타날 때 Usernameubuntu이다.
Private Key의 내용도 복사해서 Key에 붙여넣는다.
passphrase는 설정을 하지 않았으니 빈칸으로 두고 Create를 눌러 생성한다.


3. Pipeline 생성

Dashboard \rarr New Item \rarr Pipeline 을 선택하고 item 이름을 입력 한 뒤 OK를 눌러 생성한다.


Push Events, Merge Request Events에 Jenkins가 빌드 할 수 있도록 사진과 같이 선택 해 주었다.
빨강 박스의 URL은 Gitlab Webhook을 생성 시 사용한다.

이제 조금 더 아래로 내리면 Build When a change is pushed to GitLab...에 해당하는 고급 버튼이 있으니 클릭한다.

조금 더 내리다 보면 Secret token 항목이 있는데 하단의 Generate 버튼을 눌러 token을 생성한다.
이 Secret token은 Gitlab Webhook 생성 시 사용한다.

마지막으로 Pipeline 설정을 할 것이다.

Definition 에는 Pipeline scriptPipeline script from SCM 이 있다. Pipeline script from scm을 선택한다.

SCM을 None이 아닌 Git으로 설정한다.

Repository : Repository 주소 입력
Credentials : 2번에서 등록한 Credential 중 Gitlab에 해당하는 것 선택
맞게 설정 되었다면 에러 문구는 사라진다.

Branch Specifier(blank for 'any') : Jenkinsfile을 가져오는 브랜치

Script Path : 프로젝트 내 Jenkinsfile의 경로

입력 완료 후 저장을 눌러 설정을 완료한다.


4. Gitlab Webhook 생성

Gitlab Repository의 Setting \rarr Webhooks로 들어간다.

Jenkins 설정에서 보았던 URL, Secret token을 적고, Push events가 일어날 브랜치명을 적는다.

그리고 하단의 Add webhook 버튼을 눌러 추가한다.


결과

Jenkins Pipeline과 Gitlab Webhook을 생성하여 서로 연결하였다.
이제 Jenkinsfile을 프로젝트 내에 생성하여 빌드부터 배포까지의 스크립트를 작성해 볼 예정이다.


[참고]

https://juicy-blender-478.notion.site/Springboot-Jenkins-62e7ebad93ba4c4cbfa1808ac29ac647
https://velog.io/@sileeee/Jenkins-Pipeline-%EA%B5%AC%EC%84%B1%ED%95%98%EA%B8%B0

0개의 댓글