본문 바로가기
우당탕탕 개발생활/_Jenkins

[Jenkins] GitLab 연동 시 필수 설치 플러그인 목록

by J-2n 2023. 5. 28.

안녕하세요

이번에 회사에서 Jenkins 관련 업무를 할당을 받게 되었는데요.

워낙 개발만 해오고 서버 쪽이나 빌드 CI/CD에 대해서는 부족했었는데 이 부분을 보완할겸 공부하면서 업무 진행을 해보려고 합니다.


개발 서버 구축 조건

- 기존 SVN에서 Gitlab에 이전된 저장소 사용

- 개발서버 / 운영서버 분리 하여 관리

- gitlab에도 branch를 분리하여 관리

- 해당 branch에 push시 자동으로 빌드가 일어나도록

- 자동 빌드가 성공한다면 자동으로 배포가 일어나도록


 

# 설치 해야 할 플러그인은 다음과 같다.

- Git

Jenkins에서 Git 저장소를 관리하고 코드를 가져오는 데 사용된다. Jenkins 작업에서 Git 저장소의 소스 코드를 체크아웃하고, 브랜치를 전환하며, 변경 사항을 추적하는 등의 기능을 제공한다.

  1. 소스 코드 관리: Git 저장소에 저장된 소스 코드를 Jenkins 작업에서 사용해야 할 때 Git 플러그인을 사용된다. Jenkins에서 Git 저장소를 구성하고, 소스 코드를 체크아웃하여 빌드, 테스트, 배포 등의 작업을 수행할 수 있다.
  2. 다중 브랜치 관리: Git 플러그인을 사용하여 다중 브랜치 관리를 수행할 수 있다. Jenkins 작업에서 다양한 브랜치를 사용하고 각 브랜치에 대해 별도의 빌드 및 테스트 작업을 구성할 수 있다.
  3. 변경 사항 추적: Git 플러그인을 사용하여 Git 저장소의 변경 사항을 추적하고, 변경된 파일만 가져와 작업을 실행할 수 있다. 이를 통해 Jenkins는 변경된 파일에 대한 빌드 및 테스트 작업을 최적화하고, 불필요한 작업을 피할 수 있다.

- Git client

Jenkins에서 Git 클라이언트를 사용하기 위해 필요한 도구를 제공하는 플러그인 이다. Jenkins 서버에서 Git 명령을 실행하고 Git 저장소와 상호 작용하기 위해 사용된다.

  1. Git 설치 및 구성: Git Client 플러그인을 사용하여 Jenkins 서버에 Git을 설치하고 구성할 수 있다. 이를 통해 Jenkins에서 Git을 사용할 수 있게 되며, 소스 코드 체크아웃, 브랜치 전환 등 Git과 관련된 작업을 수행할 수 있다.
  2. 다양한 Git 클라이언트 구성: Git Client 플러그인을 사용하여 다양한 Git 클라이언트를 구성할 수 있다. Jenkins 서버에서 여러 Git 클라이언트를 사용해야 하는 경우, 이 플러그인을 사용하여 각 클라이언트의 구성을 관리하고 선택적으로 사용할 수 있다.
  3. Git 인증 및 인증서 관리: Git Client 플러그인을 사용하여 Git 인증 정보와 인증서를 관리할 수 있다. Jenkins 서버에서 Git 저장소에 액세스하기 위해 사용되는 인증 정보를 구성하고, SSL 인증서를 관리하는 데 사용할 수 있다.

- Generic Webhook Trigger

Jenkins에서 다양한 웹훅 이벤트를 처리하기 위해 사용되며 Jenkins에 HTTP POST 요청을 수신하고 웹훅 페이로드를 분석하여 작업을 트리거하는 데 사용된다.

  1. 외부 시스템과의 통합: Jenkins와 다른 애플리케이션 또는 서비스 간의 상호 작용이 필요한 경우에 사용된다. 예를 들어, 이슈 관리 시스템에서 이슈가 업데이트되면 Jenkins 작업을 자동으로 실행하고 테스트를 실행하는 등의 작업을 수행할 수 있는 것이다.
  2. Webhook 이벤트 트리거: GitLab 뿐만 아니라 다른 소스 코드 저장소나 형상 관리 도구에서 웹훅을 통해 Jenkins를 트리거하려는 경우에 사용된다. 이 플러그인을 사용하여 Jenkins 작업을 트리거하고 소스 코드 변경에 대한 자동화된 빌드 및 배포 프로세스를 구축할 수 있습니다.
  3. 외부 서비스 알림: 외부 시스템에서 발생하는 이벤트를 Jenkins에 푸시하고 알림을 받을 때 사용될 수 있다. 예를 들어, CI/CD 파이프라인 완료 시 알림을 받거나, 특정 이벤트가 발생했을 때 슬랙 또는 이메일로 알림을 보내는 등의 작업을 수행할 수 있게 된다.

- GitLab

Jenkins와 GitLab 간의 연동을 간편하게 처리하기 위해 사용된다. GitLab 프로젝트와 Jenkins 작업을 연결하고, 코드 푸시, 머지 리퀘스트 등의 GitLab 이벤트를 트리거하여 CI/CD 파이프라인을 자동화할 수 있도록 도와주게 된다.

  1. Code Push Trigger: GitLab 저장소에 코드가 푸시되면 Jenkins 작업을 자동으로 실행하고 빌드, 테스트, 배포 등의 작업을 수행할 수 있다. 이를 통해 개발자가 코드를 푸시할 때마다 자동으로 CI/CD 파이프라인이 실행되어 소프트웨어의 품질을 유지하고 배포 과정을 자동화할 수 있다.
  2. Merge Request Trigger: GitLab의 머지 리퀘스트 이벤트를 감지하여 Jenkins 작업을 트리거할 수 있다. Merge Request가 생성되거나 업데이트되면 Jenkins를 실행하여 머지 리퀘스트를 검증하고 테스트하는 등의 작업을 수행할 수 있습니다. 이를 통해 코드 리뷰 및 협업 과정을 자동화할 수 있다.
  3. GitLab 이슈 관리: GitLab의 이슈 이벤트를 감지하여 Jenkins 작업을 실행할 수 있다. 이슈가 생성되거나 업데이트되면 Jenkins를 실행하여 해당 이슈에 대한 작업을 수행할 수 있다. 예를 들어, 이슈를 생성하면 자동으로 Jenkins 작업이 시작되어 해당 이슈를 해결하는 등의 작업을 할 수 있다.

- GitLab API

Jenkins와 GitLab 간의 상호 작용을 위해 사용된다. GitLab의 RESTful API를 활용하여 GitLab 프로젝트, 브랜치, 이슈 등과 상호 작용할 수 있는 기능을 제공한다.

  1. GitLab 프로젝트 관리: Jenkins 작업에서 GitLab 프로젝트의 정보를 가져오거나 프로젝트를 생성, 삭제, 수정하는 등의 작업을 수행할 수 있다. 예를 들어, Jenkins에서 GitLab 저장소의 브랜치 목록을 가져와 특정 브랜치에 대한 빌드 작업을 실행하거나, GitLab 프로젝트의 이슈를 생성하는 등의 작업을 할 수 있다.
  2. GitLab 이벤트 모니터링: GitLab의 이벤트를 모니터링하여 Jenkins 작업을 자동으로 트리거할 수 있다. GitLab의 코드 푸시, 이슈 업데이트, 머지 리퀘스트 등의 이벤트가 발생하면 Jenkins를 트리거하고 자동화된 빌드, 테스트, 배포 프로세스를 실행할 수 있다.
  3. GitLab 이슈 관리: Jenkins 작업을 활용하여 GitLab의 이슈를 생성, 업데이트, 닫을 수 있다. 이를 통해 Jenkins에서 자동으로 이슈를 생성하고 작업의 상태를 업데이트하거나, 특정 이슈가 해결되었을 때 작업을 자동으로 종료하는 등의 작업을 할 수 있다.

공부하기 위한 기록으로 틀린 정보가 있을 시 알려주시면 감사하겠습니다 :)