GitLab CI/CD로 변환 플로우
Tier: [Free](/19.0/subscriptions/gitlab_credits/#for-the-free-tier), Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
GitLab CI/CD로 변환 플로우는 Jenkins 파이프라인을 GitLab CI/CD로 마이그레이션하는 데 도움을 줍니다. 이 플로우는 GitLab UI에서만 사용할 수 있습니다. Jenkinsfile을 변환하려면 다음이 필요합니다:
히스토리
- GitLab 18.3에서
duo_workflow_in_ci라는 플래그와 함께 베타로 도입. 기본적으로 비활성화되어 있지만 인스턴스 또는 사용자에 대해 활성화할 수 있습니다. - GitLab 18.4에서 기능 플래그
duo_workflow_in_ci가 기본적으로 활성화됨. 기능 플래그duo_workflow도 활성화되어야 하지만 기본적으로 활성화되어 있습니다. - GitLab 18.8에서 일반 공개.
- GitLab 18.9에서 기능 플래그
duo_workflow_in_ci와duo_workflow제거. - GitLab 18.10에서 GitLab Credits를 사용하여 GitLab.com의 Free 티어에서 사용 가능.
GitLab CI/CD로 변환 플로우는 Jenkins 파이프라인을 GitLab CI/CD로 마이그레이션하는 데 도움을 줍니다. 이 플로우는:
- 기존 Jenkins 파이프라인 구성을 분석합니다.
- Jenkins 파이프라인 구문을 GitLab CI/CD YAML로 변환합니다.
- GitLab CI/CD 구현을 위한 모범 사례를 제안합니다.
- 변환된 파이프라인 구성으로 머지 리퀘스트를 만듭니다.
- Jenkins 플러그인을 GitLab 기능으로 마이그레이션하는 방법을 안내합니다.
이 플로우는 GitLab UI에서만 사용할 수 있습니다.
전제 조건#
Jenkinsfile을 변환하려면 다음이 필요합니다:
- Jenkins 파이프라인 구성에 대한 액세스 권한.
- 대상 GitLab 프로젝트에서 Developer, Maintainer 또는 소유자 역할.
- 기타 전제 조건을 충족합니다.
- GitLab Duo 서비스 계정이 커밋과 브랜치를 만들 수 있는지 확인합니다.
- 최상위 그룹에 대해 기본 플로우 허용 및 GitLab CI/CD로 변환이 켜져 있는지 확인합니다.
플로우 사용#
Jenkinsfile을 GitLab CI/CD로 변환하려면:
- 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- Jenkinsfile을 엽니다.
- 파일 위에서 GitLab CI/CD로 변환을 선택합니다.
- AI > 세션을 선택하여 진행 상황을 모니터링합니다.
- 파이프라인이 성공적으로 실행되면 왼쪽 사이드바에서 코드 > 머지 리퀘스트를 선택합니다.
Duo Workflow: Convert to GitLab CI제목의 머지 리퀘스트가 표시됩니다. - 머지 리퀘스트를 검토하고 필요에 따라 변경합니다.
변환 프로세스#
프로세스는 다음을 변환합니다:
- 파이프라인 스테이지 및 단계.
- 환경 변수.
- 빌드 트리거 및 매개변수.
- 아티팩트 및 종속성.
- 병렬 실행.
- 조건부 로직.
- 빌드 후 작업.
예시#
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
