CI/CD Schedules

파이프라인은 일반적으로 충족되는 특정 조건에 따라 실행됩니다. 예를 들어, 브랜치가 리포지터리로 푸시되는 경우입니다.

파이프라인 스케줄을 사용하여 특정 간격으로 파이프라인을 실행할 수도 있습니다. 예를 들면 :

  • 특정 브랜치에 대해 매월 22일
  • 매일 한 번

GitLab UI를 사용하는 것 외에도 Pipeline schedules API를 사용하여 파이프라인 스케줄을 유지 관리할 수 ​​있습니다.

스케줄 타이밍은 Fugit에 의해 파싱된 cron 표기법으로 구성됩니다.

전제 조건

예약된 파이프라인을 성공적으로 생성하려면 :

  • 스케줄 소유자는 대상 브랜치에 병합할 권한이 있어야 합니다.
  • 파이프라인 구성이 유효해야 합니다.

그렇지 않으면 파이프라인이 생성되지 않습니다.

파이프라인 스케줄 구성

프로젝트의 파이프라인을 예약하려면 :

  1. 프로젝트의 CI/CD > Schedules 페이지로 이동합니다.
  2. New schedule 버튼을 클릭합니다.
  3. Schedule a new pipeline 양식을 채웁니다.
  4. Save pipeline schedule 버튼을 클릭합니다.
GitLab CI/CD 파이프라인 스케줄 생성 | 인포그랩 GitLab

참고 : 파이프라인 실행 타이밍은 Sidekiq의 자체 스케줄에 따라 다릅니다.

Schedules 인덱스 페이지에서 실행하도록 예약되어 있는 파이프라인의 목록을 볼 수 있습니다. 다음 실행은 GitLab이 설치된 서버에서 자동으로 계산됩니다.

GitLab CI/CD 예약된 파이프라인 목록 | 인포그랩 GitLab

변수 사용

임의의 변수를 얼마든지 전달할 수 있습니다. GitLab CI/CD에서 사용할 수 있으므로 .gitlab-ci.yml 파일에서 사용할 수 있습니다.

GitLab CI/CD 변수 설정 | 인포그랩 GitLab

only 및 except 사용

파이프라인이 예약된 경우에만 (또는 그 반대) 실행되도록 Job을 구성하려면 구성 키워드 only 및 except를 사용합니다.

예를 들면 :

job:on-schedule:
only:
- schedules
script:
- make world

job:
except:
- schedules
script:
- make build

고급 구성

스케줄은 간격에 따라 실행되는 Sidekiq에 의해 처리되기 때문에 파이프라인은 예정대로 정확하게 실행되지 않습니다.

예를 들어, 다음과 같은 경우 하루에 두 개의 파이프라인만 생성됩니다.

  • 1분마다 파이프라인을 생성하도록 스케줄을 설정합니다. ( * * * * *)
  • Sidekiq worker는 매일 00:00 및 12:00에 실행됩니다. ( 0 */12 * * *)

Sidekiq worker의 빈도를 변경하려면 :

  1. 인스턴스의 gitlab.rb 파일에서 gitlab_rails['pipeline_schedule_worker_cron']의 값을 편집합니다.
  2. 변경사항을 적용하려면 GitLab을 재구성합니다.

예약된 파이프라인 작업

구성 후 GitLab은 예약된 파이프라인 작업을 위한 많은 기능을 지원합니다.

수동으로 실행

파이프라인 스케줄을 수동으로 트리거하려면 "Play" 버튼을 클릭합니다.

GitLab CI/CD 파이프라인 스케줄 수동 트리거 | 인포그랩 GitLab

이렇게 하면 파이프라인 스케줄을 실행하기 위한 백그라운드 Job이 예약됩니다. 플래시 메시지는 CI/CD 파이프라인 인덱스 페이지에 대한 링크를 제공합니다.

참고 : 남용을 방지하기 위해 사용자는 1분에 한 번 파이프라인을 트리거하는 속도로 제한됩니다.

소유권 확보

파이프라인은 스케줄을 소유한 사용자로 실행됩니다. 이는 파이프라인이 액세스할 수 있는 프로젝트 및 기타 리소스에 영향을 줍니다.

사용자가 파이프라인을 소유하지 않은 경우, Take ownership 버튼을 클릭하여 소유권을 가져올 수 있습니다. 다음에 파이프라인이 예약될 때 자격 증명이 사용됩니다.

GitLab CI/CD 파이프라인 소유권 가져오기 | 인포그랩 GitLab

파이프라인 스케줄의 소유자가 대상 브랜치에서 파이프라인을 생성할 수 없는 경우, 스케줄은 새 파이프라인 생성을 중지합니다.

예를 들어, 다음과 같은 경우에 발생할 수 있습니다.

  • 소유자가 프로젝트에서 차단되거나 제거된 경우
  • 대상 분기 또는 태그가 보호된 경우

이 경우 충분한 권한을 가진 사람이 일정의 소유권을 가져야 합니다.

GitLab 원문 보기