GitLab CI/CD Flow로 전환하기
GitLab CI/CD Flow로 전환하기 (Convert to GitLab CI/CD)
Jenkins 파이프라인을 GitLab CI/CD로 옮기고 싶다면, GitLab이 제공하는 'Convert to GitLab CI/CD Flow'가 전환 작업을 대신해줘요. 기존 Jenkins 파이프라인 구성을 분석하고, Jenkins 문법을 GitLab CI/CD YAML로 변환하며, 모범 사례까지 제안해 줍니다.
출처: 문서
본문
- 티어(Tier): Free, Premium, Ultimate
- 제공 방식(Offering): GitLab.com, GitLab Self-Managed, GitLab Dedicated
변경 이력
- GitLab 18.3에서 베타로 도입, 기능 플래그 이름은
duo_workflow_in_ci. 기본적으로 비활성화되어 있지만 인스턴스나 사용자 단위로 활성화할 수 있어요. - GitLab 18.4에서 기능 플래그
duo_workflow_in_ci가 기본 활성화. 기능 플래그duo_workflow도 활성화되어 있어야 하지만 기본적으로 켜져 있어요. - GitLab 18.8에서 일반 공개(GA).
- GitLab 18.9에서 기능 플래그
duo_workflow_in_ci와duo_workflow제거. - GitLab 18.10에서 GitLab.com Free 티어에서 GitLab Credits로 사용 가능.
Convert to GitLab CI/CD Flow는 Jenkins 파이프라인을 GitLab CI/CD로 마이그레이션하는 데 도움을 줘요. 이 플로우는:
- 기존 Jenkins 파이프라인 구성을 분석해요.
- Jenkins 파이프라인 문법을 GitLab CI/CD YAML로 변환해요.
- GitLab CI/CD 구현을 위한 모범 사례를 제안해요.
- 변환된 파이프라인 구성으로 머지 요청(MR)을 만들어요.
- Jenkins 플러그인을 GitLab 기능으로 전환하는 방법을 안내해요.
이 플로우는 GitLab UI에서만 사용할 수 있어요.
전제 조건
- GitLab Duo Agent Platform의 전제 조건을 충족해야 해요.
- 최상위 그룹에 대해 Allow foundational flows와 Convert to GitLab CI/CD를 켜야 해요.
- 대상 GitLab 프로젝트에서 Developer, Maintainer 또는 Owner 역할이 있어야 해요.
- Jenkins 파이프라인 구성에 접근할 수 있어야 해요.
- 서비스 계정을 허용하도록 push 규칙을 구성해야 해요.
- 자체 러너를 구성하거나 프로젝트에 GitLab 호스팅 러너를 켜야 해요.
- 권장 사항: 플로우가 프로젝트의 툴체인과 의존성에 접근할 수 있도록 에이전트 구성 파일을 만들어 두세요.
플로우 사용하기
Jenkinsfile을 GitLab CI/CD로 변환하는 방법:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾아요.
- Jenkinsfile을 열어요.
- 파일 위에서 Convert to GitLab CI/CD를 선택해요.
- AI > Sessions를 선택해서 진행 상황을 확인해요.
- 파이프라인이 성공적으로 실행되면 왼쪽 사이드바에서 Code > Merge requests를 선택해요.
Duo Workflow: Convert to GitLab CI라는 제목의 MR이 표시됩니다. - MR을 검토하고 필요하면 수정해요.
변환 과정
이 과정은 다음 항목을 변환해요:
- 파이프라인 스테이지와 단계(steps).
- 환경 변수.
- 빌드 트리거와 파라미터.
- 아티팩트와 의존성.
- 병렬 실행.
- 조건부 로직.
- 빌드 후 작업(post-build actions).
예시
Jenkinsfile 입력:
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'npm install'
sh 'npm build'
}
}
stage('Test') {
steps {
sh 'npm test'
}
}
stage('Deploy') {
when { branch 'main' }
steps {
sh './deploy.sh'
}
}
}
}
GitLab 출력:
stages:
- build
- test
- deploy
build:
stage: build
script:
- npm install
- npm build
artifacts:
paths:
- node_modules/
- dist/
test:
stage: test
script:
- npm test
deploy:
stage: deploy
script:
- ./deploy.sh
only:
- main