스케줄 파이프라인
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
cron 패턴을 기반으로 정기적인 간격으로 파이프라인을 실행하는 파이프라인 스케줄을 생성하세요. 커밋이나 머지 리퀘스트에 의해 트리거되는 파이프라인과 달리, 스케줄 파이프라인은 코드 변경과 독립적으로 실행됩니다. 프로젝트나 그룹이 삭제로 표시되면 스케줄 파이프라인이 중단됩니다.
cron 패턴을 기반으로 정기적인 간격으로 파이프라인을 실행하는 파이프라인 스케줄을 생성하세요. 코드 변경에 의해 트리거되는 것이 아닌 시간 기반 스케줄로 실행해야 하는 작업에 파이프라인 스케줄을 사용하세요.
커밋이나 머지 리퀘스트에 의해 트리거되는 파이프라인과 달리, 스케줄 파이프라인은 코드 변경과 독립적으로 실행됩니다. 이를 통해 배포를 최신 상태로 유지하거나 정기적인 유지 보수를 실행하는 것처럼 개발 활동과 관계없이 수행해야 하는 작업에 적합합니다.
프로젝트나 그룹이 삭제로 표시되면 스케줄 파이프라인이 중단됩니다.
파이프라인 스케줄 생성#
히스토리
- GitLab 17.11에서 입력 옵션이 도입됨.
파이프라인 스케줄을 생성하면 스케줄 소유자가 됩니다. 파이프라인은 사용자의 권한으로 실행되며 사용자의 접근 수준에 따라 보호된 환경에 접근하고 CI/CD job 토큰을 사용할 수 있습니다.
전제 조건:
- 프로젝트에 Developer, Maintainer, 또는 Owner 권한이 있어야 합니다.
- 기본 이메일 주소가 인증되어 있어야 합니다.
- 보호된 브랜치를 대상으로 하는 스케줄의 경우, 타겟 브랜치에 대한 머지 권한이 있어야 합니다.
.gitlab-ci.yml파일에 유효한 구문이 있어야 합니다. 스케줄 설정 전에 구성을 검증할 수 있습니다.
파이프라인 스케줄을 생성하려면:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- Build > Pipeline schedules를 선택합니다.
- New schedule을 선택합니다.
- 필드를 입력합니다.
- Interval Pattern: 사전 구성된 간격 중 하나를 선택하거나 cron 표기법으로 사용자 정의 간격을 입력합니다. cron 값을 사용할 수 있지만, 스케줄 파이프라인은 인스턴스의 최대 스케줄 파이프라인 주기보다 더 자주 실행될 수 없습니다.
- Target branch or tag: 파이프라인을 위한 브랜치 또는 태그를 선택합니다.
- Inputs: 파이프라인의
spec:inputs섹션에 정의된 입력에 대한 값을 설정합니다. 이러한 입력 값은 스케줄 파이프라인이 실행될 때마다 사용됩니다. 스케줄당 최대 20개의 입력을 가질 수 있습니다. - Variables: 스케줄에 임의의 수의 CI/CD 변수를 추가합니다. 이러한 변수는 스케줄 파이프라인이 실행될 때만 사용할 수 있으며, 다른 파이프라인 실행에서는 사용할 수 없습니다. 보안 및 유연성이 향상된 파이프라인 구성에는 변수 대신 입력이 권장됩니다.
프로젝트가 파이프라인 스케줄의 최대 수에 도달한 경우 새 스케줄을 추가하기 전에 사용하지 않는 스케줄을 삭제하세요.
파이프라인 스케줄 편집#
전제 조건:
- 스케줄 소유자이거나 스케줄 소유권을 갖고 있어야 합니다.
- 프로젝트에 Developer, Maintainer, 또는 Owner 권한이 있어야 합니다.
- 보호된 브랜치를 대상으로 하는 스케줄의 경우, 타겟 브랜치에 대한 머지 권한이 있어야 합니다.
- 보호된 태그에서 실행되는 스케줄의 경우, 보호된 태그를 생성할 수 있는 권한이 있어야 합니다.
파이프라인 스케줄을 편집하려면:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- Build > Pipeline schedules를 선택합니다.
- 스케줄 옆에서 Edit (✏️)를 선택합니다.
- 변경 사항을 적용한 다음 Save changes를 선택합니다.
수동으로 실행#
스케줄 파이프라인을 분당 한 번씩 수동으로 실행할 수 있습니다. 스케줄 파이프라인을 수동으로 실행할 때 스케줄 소유자의 권한 대신 사용자의 권한이 사용됩니다.
다음 예약 시간을 기다리지 않고 파이프라인 스케줄을 즉시 트리거하려면:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- Build > Pipeline schedules를 선택합니다.
- 스케줄 옆에서 Run ([play])을 선택합니다.
소유권 가져오기#
원래 소유자를 사용할 수 없어 파이프라인 스케줄이 비활성화된 경우 소유권을 가져올 수 있습니다.
스케줄 파이프라인은 스케줄을 소유한 사용자의 권한으로 실행됩니다.
전제 조건:
- 프로젝트에 Maintainer 또는 Owner 권한이 있어야 합니다.
스케줄의 소유권을 가져오려면:
- 상단 바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
- Build > Pipeline schedules를 선택합니다.
- 스케줄 옆에서 Take ownership을 선택합니다.
스케줄 파이프라인 보기#
히스토리
- GitLab 18.4에서 도입됨.
모든 프로젝트에 걸쳐 사용자가 소유한 활성 파이프라인 스케줄을 보려면:
- 오른쪽 상단에서 아바타를 선택합니다.
- Edit profile을 선택합니다.
- Account를 선택합니다.
- Scheduled pipelines you own으로 스크롤합니다.
관련 항목#
문제 해결#
파이프라인 스케줄로 작업할 때 다음과 같은 문제가 발생할 수 있습니다.
스케줄 파이프라인이 비활성화됨#
스케줄 파이프라인 상태가 예기치 않게 Inactive로 변경되면, 스케줄 소유자가 차단되었거나 프로젝트에서 제거되었을 수 있습니다.
스케줄의 소유권을 가져와 재활성화하세요.
파이프라인 스케줄 분산으로 시스템 부하 방지#
너무 많은 파이프라인이 동시에 시작되어 발생하는 과도한 부하를 방지하려면 파이프라인 스케줄을 검토하고 분산하세요:
-
다음 명령을 실행하여 스케줄 데이터를 추출하고 형식화합니다:
outfile=/tmp/gitlab_ci_schedules.tsv sudo gitlab-psql --command " COPY (SELECT ci_pipeline_schedules.cron, ci_pipeline_schedules.cron_timezone, namespaces.path AS group, projects.path AS project, users.email FROM ci_pipeline_schedules JOIN projects ON projects.id = ci_pipeline_schedules.project_id JOIN namespaces ON namespaces.id = projects.namespace_id JOIN users ON users.id = ci_pipeline_schedules.owner_id WHERE ci_pipeline_schedules.active = 't' ) TO '$outfile' CSV HEADER DELIMITER E'\t' ;" sort "$outfile" | uniq -c | sort -n -
출력을 검토하여 자주 사용되는
cron패턴을 파악합니다. 예를 들어, 많은 스케줄이 매 시간 시작 시(0 * * * *)에 실행될 수 있습니다. -
스케줄을 조정하여 분산된
cron패턴을 만듭니다. 특히 대형 저장소의 경우 그렇습니다. 예를 들어, 여러 스케줄이 매 시간 시작 시에 실행되는 대신 시간 전체에 걸쳐 분산시킵니다(5 * * * *,15 * * * *,25 * * * *).
