[CI/CD] Gitlab과 Jenkins로 CI/CD 구축하기

배현호·2021년 9월 8일
0

CICD 구축하기

목록 보기
3/3

시작하기에 앞서 Gitlab과 Jenkins 둘 다 Docker Linux Container에서 실행하고 있습니다.
docker로 Gitlabjenkins에 접속하는 방법을 모른다면 다음 포스트를 참고해 주세요.

Jenkins 설정하기

Plugin 설정하기

먼저 젠킨스에서 Gitlab과 연동하기 위한 Git plugin들을 다운 받는다.

Dashboard -> Jenkins 관리 -> 플러그인 관리

플러그인 관리에 들어가게 되면 위와 같이 화면이 나올 것이다.
여기서 설치 가능을 누른 뒤, git을 검색하여 git & gitlab과 관련된 플러그인을 다운 받으면 된다.

Credentials 설정하기

그 다음 Jenkins에서 Credentials를 추가해야 한다.

Dashboard -> Jenkins 관리 -> Manage Credentials

저기서 global을 누른 뒤, 나오는 페이지에서 Add Credentials를 눌러준다.

Add Credentials를 누르면 다음과 같은 화면이 나오게 된다.

여기에 이제 Gitlab의 유저 정보를 입력해서 OK를 눌러주면 된다.

  • Username : gitlab의 사용자 id (필수)
  • Password : gitlab의 사용자 password (필수)
  • ID : Credentials를 구분하는 ID (필수)
  • Description : 이 Credentials의 대한 부연설명 (선택)

Item 생성하기

이제 Dashboard에서 새로운 Item을 생성할 차례이다.

Dashboard -> 새로운 Item

새로운 Item에 들어가서 Item의 이름을 설정한 뒤, Freestyle projectPipeline중에서 선택하면 된다.

  • Freestyle project : 자신이 원하는 형태 및 스크립트로 빌드 진행
  • Pipeline : Jenkins Script를 직접 작성하거나 Jenkinsfile을 선택하여 빌드 진행

본인이 Jenkinsfile을 작성해두었거나 Pipeline script로 빌드를 진행할 거면 Pipeline을, 그렇지 않으면 Freestyle project를 선택하면 된다.

선택한 이후 들어와서 중간에 보면 소스 코드 관리라고 존재한다.
여기서 Git을 선택하면 다음과 같은 화면이 뜨게 된다.

여기서 Repository URL에 Gitlab Repository URL을 넣어주면 된다.
Gitlab repository에 들어가서 Clone을 누르면 Clone with HTTP라는 것이 있다.

이것의 오른쪽 버튼을 눌러 복사해준 뒤, Jenkins의 Repository URL에 넣어주면 된다.

그 다음 그 밑에 있는 Credentials를 설정해줘야 한다.

기존에는 아마 none으로 설정 돼있을 것이다.
이것을 클릭하여 위에서 설정했던 Gitlab Credentials로 지정해주면 된다.

그 다음 jenkins build가 돌아갈 브런치를 지정해주면 된다.

default로는 master로 지정이 되는데, 이것은 본인이 jenkins build를 돌릴 gitlab의 브런치로 지정해주면 된다. (ex. */main, */develop)

그 다음 빌드 유발을 지정할 차례이다.
빌드 유발에서는 Build when a change is pushed to GitLab. GitLab webhook URL: [jenkins url]을 선택하면 된다.
jenkins url은 이후에 Gitlab 설정할 때 쓰일 것이다.

여기서 Accepted Merge Request EventsClosed Merge Request Events를 체크해준다.
이후에 밑에 고급을 눌러 Allowed branches를 찾는다.

그럼 밑에 Secret token이라는 목록이 보일 것이다.
오른쪽 밑에 Generate를 눌러 현재 Item의 token을 생성해준 뒤, 맨 밑에 저장 혹은 Apply를 눌러 생성한 token을 저장시킨다.
이 Secret token은 이후 Gitlab Webhooks 설정에서 쓰이게 될 것이다.

그 다음 Build 방법에 대해서 지정할 차례인데, 이것은 프로젝트를 Freestyle Project와 Pipeline으로 지정했을 때가 다르기 때문에 상황에 맞게 보면 될 것이다.

Item을 Freestyle Project로 지정한 경우

Freestyle Project를 선택했으면 다음과 같이 Build와 빌드 후 조치라는 것이 존재한다.

Build는 말 그대로 코드를 어떻게 Build 할 것인지 순서와 명령어를 입력하는 곳이고, 빌드 후 조치는 빌드가 완료됐을 때 어떻게 할 것인가를 지정하는 것이다.

Add Build Step을 누르면 다음과 같은 선택지들이 나오게 된다.

여기서 본인이 선택하고 싶은 것을 선택한 뒤, 빌드 명령어를 입력해주면 된다.
간단하게 젠킨스가 돌아가는 것을 확인하고 싶으면 Execute shell을 선택한 뒤, ls -al명령어를 입력해주면 된다.

빌드 후 조치 역시 누르면 여러가지가 나오게 되는데, Gitlab에 빌드 성공 여부를 띄우기 위해 Publish build status to Gitlab을 선택한다.

위와 같이 지정했을 때, Jenkins build가 성공한다면 다음과 같이 표시가 나타나게 된다.

Item을 Pipeline으로 지정한 경우

Pipeline을 선택했다면 pipeline 스크립트를 통해 jenkins build를 사용할 수 있다.

위 script 부분에다가 pipeline 스크립트를 넣은 뒤, 본인이 빌드 하고 싶은 순서대로 stage를 나누어 작성하면 된다.

만일 pipeline script가 아니라 Jenkinsfile을 이용할 것이라면 Definition을 선택하여 Pipeline script from SCM으로 바꿔준다.

SCM으로 바꾸게 되면 소스코드 관리 설정과 똑같은 화면이 생기게 된다.
여기서 소스코드 관리와 똑같이 Jenkinsfile이 있는 repository URL과, Gitlab Credentials, 브런치를 지정해주면 된다.

그 다음 Script Path를 Jenkinsfile로 지정을 해주면 된다.

물론 Gitlab에 올라가 있는 파일 이름이 Jenkinsfile이 아니라 다른 것이라면 그에 맞게 지정을 해줘야 한다.

Gitlab 설정하기

Allow Local Network 설정하기

먼저 Gitlab에서 로컬 테스트를 할 수 있도록 설정해줘야 한다.
Gitlab의 root계정으로 접속한 다음 다음 경로로 들어간다.

좌측 상단 Menu -> Admin

들어가게 되면 Admin 전용 Dashboard창이 보이게 될 것이다.

Settings -> Network

위 경로로 들어가게 되면 다음과 같은 화면이 나오게 된다.

여기서 Outbound requests에서 white list를 추가해줘야 한다.

Allow requests 부분들을 체크해주고, 본인이 접속하는 url을 입력해준다. (ex. 127.0.0.1)
이후 Save changes를 눌러 설정을 완료해준다.

Webhooks 설정하기

그 다음 이제 본인이 생성한 repository로 이동한다.

Settings -> Webhooks

위 경로로 이동하게 되면 Webhooks를 지정하는 화면이 나오게 된다.

하나씩 살펴보면 다음과 같다.

  • URL : Jenkins의 URL로, jenkins 설정 중 빌드 유발 부분에 나오는 jenkins url이 들어가면 된다.
  • Secret token : 빌드 유발 부분에서 Generate로 생성한 Secret token이 들어가면 된다.
  • Trigger : Trigger를 발생시키는 시점을 선택하는 것으로 필자는 Push event만 체크하고 이벤트를 발생시킬 branch를 지정해주었다.

위 설정을 모두 마친 뒤 Add webhook을 누르면 다음과 같이 밑에 Project Hooks가 추가될 것이다.

Webhooks Test하기

생성한 Project Hooks에서 test를 누르면 다음과 같은 목록이 나오게 된다.

여기서 본인이 설정했던 trigger 발생 시점에 맞게 test를 진행하면 된다.
Push events를 지정했으면 Push events를 누르면 test trigger가 발생하게 된다.

트리거 발생에 성공하면 다음과 같이 뜨는 것을 확인할 수 있다.

그 다음 jenkins에 돌아가 확인해보면 성공적으로 test가 진행되는 것을 확인할 수 있다.

profile
Spring Boot 공부하고 있는 고등학생입니다.

0개의 댓글