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_ciduo_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에서만 사용할 수 있어요.

전제 조건

플로우 사용하기

Jenkinsfile을 GitLab CI/CD로 변환하는 방법:

  1. 상단 바에서 Search or go to를 선택하고 프로젝트를 찾아요.
  2. Jenkinsfile을 열어요.
  3. 파일 위에서 Convert to GitLab CI/CD를 선택해요.
  4. AI > Sessions를 선택해서 진행 상황을 확인해요.
  5. 파이프라인이 성공적으로 실행되면 왼쪽 사이드바에서 Code > Merge requests를 선택해요. Duo Workflow: Convert to GitLab CI라는 제목의 MR이 표시됩니다.
  6. 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

더 알아보기 (Learn more)