Jenkins
이동됨 GitLab Free에서 13.7로.
Jenkins는 프로젝트를 빌드, 배포 및 자동화하는 오픈 소스 자동화 서버입니다.
Jenkins와 GitLab의 통합을 사용해야 하는 경우:
- 향후 CI를 Jenkins에서 GitLab CI/CD로 마이그레이션할 계획이지만 임시 솔루션이 필요할 때입니다.
- Jenkins 플러그인에 투자했으며 앱 빌드를 위해 Jenkins를 계속 사용하기로 선택했을 때입니다.
이 통합은 GitLab에 변경 사항이 푸시될 때 Jenkins 빌드를 트리거할 수 있습니다.
이 통합을 사용하여 Jenkins에서 GitLab CI/CD 파이프라인을 트리거할 수는 없습니다. 대신, Jenkins 작업에서 파이프라인 트리거 API 엔드포인트를 사용하여 파이프라인 트리거 토큰으로 인증합니다.
Jenkins 통합을 구성한 후, 코드를 리포지토리에 푸시하거나 GitLab에서 병합 요청을 생성할 때 Jenkins에서 빌드를 트리거합니다. Jenkins 파이프라인 상태는 병합 요청 위젯과 GitLab 프로젝트의 홈페이지에 표시됩니다.
Jenkins 통합에 대한 개요는
GitLab 작업 흐름과 Jira 이슈 및 Jenkins 파이프라인을 참조하세요.
GitLab과의 Jenkins 통합을 구성하려면:
- Jenkins에 GitLab 프로젝트에 대한 액세스 권한을 부여합니다.
- Jenkins 서버를 구성합니다.
- Jenkins 프로젝트를 구성합니다.
- GitLab 프로젝트를 구성합니다.
Jenkins에 GitLab 프로젝트에 대한 액세스 권한 부여
-
개인, 프로젝트 또는 그룹 액세스 토큰을 생성합니다.
- 개인 액세스 토큰 만들기: 해당 사용자의 모든 Jenkins 통합에 대해 토큰을 사용합니다.
- 프로젝트 액세스 토큰 만들기: 프로젝트 수준에서만 토큰을 사용합니다. 예를 들어, 다른 프로젝트의 Jenkins 통합에 영향을 주지 않고 프로젝트에서 토큰을 철회할 수 있습니다.
- 그룹 액세스 토큰 만들기: 해당 그룹의 모든 프로젝트의 모든 Jenkins 통합에 대해 토큰을 사용합니다.
- 액세스 토큰 범위를 API로 설정합니다.
- Jenkins 서버를 구성하기 위해 액세스 토큰 값을 복사합니다.
Jenkins 서버 구성
GitLab과의 연결을 승인하기 위해 Jenkins 플러그인을 설치하고 구성합니다.
- Jenkins 서버에서 Manage Jenkins > Manage Plugins를 선택합니다.
-
Available 탭을 선택합니다.
gitlab-plugin
을 검색하고 설치를 선택합니다.
플러그인 설치의 다른 방법은 Jenkins GitLab 문서를 참조하세요. - Manage Jenkins > Configure System을 선택합니다.
- GitLab 섹션에서 ‘/project’ 엔드포인트에 대한 인증 활성화를 선택합니다.
- Add를 선택한 다음 Jenkins Credential Provider를 선택합니다.
- 토큰 유형으로 GitLab API token을 선택합니다.
-
API Token에서 복사한 액세스 토큰 값을 붙여넣으세요
그리고 Add를 선택합니다. - GitLab host URL에 GitLab 서버의 URL을 입력합니다.
-
연결을 테스트하려면 Test Connection을 선택합니다.
자세한 내용은
Jenkins에서 GitLab로의 인증을 참조하세요.
Jenkins 프로젝트 구성하기
당신의 빌드를 실행할 Jenkins 프로젝트를 설정하세요.
-
Jenkins 인스턴스에서 New Item을 선택합니다.
-
프로젝트 이름을 입력합니다.
-
Freestyle 또는 Pipeline을 선택하고 OK를 선택합니다.
Jenkins 플러그인이 GitLab에서 빌드 상태를 업데이트하기 때문에 프리스타일 프로젝트를 선택해야 합니다. 파이프라인 프로젝트에서는 GitLab에서 상태를 업데이트하기 위한 스크립트를 구성해야 합니다. -
드롭다운 목록에서 GitLab 연결을 선택합니다.
-
GitLab에 변경 사항이 푸시될 때 빌드를 선택합니다.
- 다음 체크박스를 선택합니다:
- Accepted Merge Request Events
- Closed Merge Request Events
- GitLab에 빌드 상태가 보고되는 방식을 지정합니다:
- 프리스타일 프로젝트를 생성한 경우, Post-build Actions 섹션에서 Publish build status to GitLab을 선택합니다.
-
파이프라인 프로젝트를 생성한 경우, Jenkins Pipeline 스크립트를 사용하여 GitLab에서 상태를 업데이트해야 합니다.
예시 Jenkins Pipeline 스크립트:
pipeline { agent any stages { stage('gitlab') { steps { echo 'Notify GitLab' updateGitlabCommitStatus name: 'build', state: 'pending' updateGitlabCommitStatus name: 'build', state: 'success' } } } }
더 많은 Jenkins Pipeline 스크립트 예시는 Jenkins GitLab 플러그인 리포지토리에서 확인하세요.
GitLab 프로젝트 구성하기
다음 방법 중 하나로 Jenkins와의 GitLab 통합을 구성하세요.
Jenkins 서버 URL 사용하기
Jenkins 서버 URL과 인증 정보를 GitLab에 제공할 수 있는 경우 이 접근 방식을 사용해야 합니다.
-
왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
-
Settings > Integrations를 선택합니다.
-
Jenkins를 선택합니다.
-
Active 체크박스를 선택합니다.
- GitLab이 Jenkins 빌드를 트리거하도록 하려는 이벤트를 선택합니다:
- Push
- Merge request
- Tag push
-
Jenkins 서버 URL을 입력합니다.
-
선택 사항: Enable SSL verification 체크박스를 해제하여 SSL 검증을 비활성화합니다.
-
Project name을 입력합니다.
프로젝트 이름은 URL 친화적이어야 하며, 공백은 밑줄로 대체해야 합니다. 프로젝트 이름이 유효한지 확인하려면 Jenkins 프로젝트를 볼 때 브라우저의 주소 표시줄에서 복사합니다. -
Jenkins 서버에 인증이 필요한 경우, Username과 Password를 입력합니다.
-
선택 사항: Test settings를 선택합니다.
- Save changes를 선택합니다.
웹훅 사용하기
Jenkins 서버 URL과 인증 정보를 GitLab에 제공할 수 없는 경우, GitLab과 Jenkins를 통합하기 위해 웹훅을 구성할 수 있습니다.
-
Jenkins 작업의 구성에서 GitLab 구성 섹션에서 Advanced를 선택합니다.
-
Secret Token에서 Generate를 선택합니다.
-
토큰을 복사하고 작업 구성을 저장합니다.
- GitLab에서:
- 프로젝트에 대한 웹훅을 생성합니다.
- 트리거 URL을 입력합니다 (예:
https://JENKINS_URL/project/YOUR_JOB
). - Secret Token에 토큰을 붙여넣습니다.
- 웹훅을 테스트하려면 Test를 선택합니다.
관련 주제
- GitLab Jenkins 통합
- 로컬 머신에 Jenkins 설정하는 방법
- Jenkins에서 GitLab CI/CD로 마이그레이션하는 방법
- Jenkins에서 GitLab로: CI/CD 환경 현대화를 위한 궁극적인 가이드
문제 해결
오류: 연결 실패. 설정을 확인하십시오
GitLab을 구성할 때 연결 실패. 설정을 확인하십시오
라는 오류가 발생할 수 있습니다.
이 문제는 여러 가능성이 있는 원인과 해결책이 있습니다:
원인 | 해결 방법 |
---|---|
GitLab이 제공된 주소에서 Jenkins 인스턴스에 도달할 수 없습니다. | GitLab 인스턴스가 셀프 매니지드인 경우, GitLab 인스턴스에 제공된 도메인에서 Jenkins 인스턴스를 핑(ping)합니다. |
Jenkins 인스턴스가 로컬 주소에 있으며, GitLab 설치의 허용 목록에 포함되어 있지 않습니다. | 인스턴스를 GitLab 설치의 허용 목록에 추가합니다. |
Jenkins 인스턴스의 자격 증명이 충분한 접근 권한이 없거나 유효하지 않습니다. | 자격 증명에 충분한 접근 권한을 부여하거나 유효한 자격 증명을 생성합니다. |
/project 엔드포인트에 대한 인증 활성화 체크박스가 Jenkins 플러그인 구성에서 선택되어 있지 않습니다. | 체크박스를 선택합니다. |
오류: CI 서버에 연결할 수 없습니다
병합 요청에서 CI 서버에 연결할 수 없습니다
라는 오류가 발생할 수 있으며, 이는 GitLab이 커밋 상태 API를 통해 Jenkins로부터 빌드 상태 업데이트를 받지 못했기 때문입니다.
이 문제는 Jenkins가 올바르게 구성되지 않았거나 API를 통해 상태를 보고하는 데 오류가 발생할 때 발생합니다.
이 문제를 해결하려면:
- Jenkins 서버 구성을 GitLab API 액세스를 위해 구성합니다.
- Jenkins 프로젝트 구성하고, 프리스타일 프로젝트를 생성하는 경우 “GitLab에 빌드 상태 게시” 후속 작업을 선택합니다.
병합 요청 이벤트가 Jenkins 파이프라인을 트리거하지 않습니다
이 문제는 요청이 웹후크 타임아웃 제한을 초과할 때 발생할 수 있으며, 기본적으로 10초로 설정됩니다.
이 문제에 대해 다음을 확인하십시오:
- 요청 실패에 대한 통합 웹후크 로그
-
/var/log/gitlab/gitlab-rails/production.log
에서 다음과 같은 메시지 확인:WebHook Error => Net::ReadTimeout
또는
WebHook Error => execution expired
셀프 매니지드 GitLab 인스턴스에서는 웹후크 타임아웃 값 증가를 통해 이 문제를 해결할 수 있습니다.
Jenkins에서 작업 로그 활성화
통합 문제를 해결하려면 Jenkins에서 작업 로그를 활성화하여 빌드에 대한 자세한 정보를 얻을 수 있습니다.
Jenkins에서 작업 로그를 활성화하려면:
- 대시보드 > Jenkins 관리 > 시스템 로그로 이동합니다.
- 새 로그 기록기 추가를 선택합니다.
- 로그 기록기의 이름을 입력합니다.
- 다음 화면에서 추가를 선택하고
com.dabsquared.gitlabjenkins
를 입력합니다. - 로그 수준이 모두로 설정되어 있는지 확인하고 저장을 선택합니다.
로그를 보려면:
- 빌드를 실행합니다.
- 대시보드 > Jenkins 관리 > 시스템 로그로 이동합니다.
- 기록기를 선택하고 로그를 확인합니다.