InfoGrab DocsInfoGrab Docs

`workflow` 키워드

파이프라인 제어, 규칙 관리, 중복 파이프라인 방지를 위한 GitLab CI/CD `workflow` 키워드 사용법을 설명합니다.

.gitlab-ci.yml 파일에서 workflow 키워드를 사용하여 파이프라인이 언제 생성되는지 제어합니다. workflow 키워드는 job보다 먼저 평가됩니다. 예를 들어 어떤 job이 태그에 대해 실행되도록 구성되어 있더라도, workflow가 태그 파이프라인을 막으면 해당 job은 절대 실행되지 않습니다. workflow:rules 에서 자주 사용하는 if 절 # workflow: rules 에 사용할 수 있는 if 절의 예시입니다: 예시 규칙 설명 if: '$CI_PIPELINE_SOURCE == "merge_request_event"' 머지 리퀘스트 파이프라인이 실행되는 시점을 제어합니다. if: '$CI_PIPELINE_SOURCE == "push"' 브랜치 파이프라인과 태그 파이프라인이 모두 실행되는 시점을 제어합니다. if: $CI_COMMIT_TAG 태그 파이프라인이 실행되는 시점을 제어합니다. if: $CI_COMMIT_BRANCH 브랜치 파이프라인이 실행되는 시점을 제어합니다. 더 많은 예시는 rules 에 자주 사용하는 if 절 을 참고합니다. workflow: rules 예시 # 다음 예시에서는 다음과 같이 동작합니다: 모든 push 이벤트(브랜치에 대한 변경 및 새 태그)에 대해 파이프라인이 실행됩니다. 커밋 메시지가 -draft 로 끝나는 push 이벤트에 대한 파이프라인은 when: never 로 설정되어 있으므로 실행되지 않습니다. 스케줄이나 머지 리퀘스트에 대한 파이프라인도 실행되지 않는데, 이는 해당 파이프라인에 대해 참으로 평가되는 규칙이 없기 때문입니다. workflow: rules: - if: $CI_COMMIT_MESSAGE =~ /-draft$/ when: never - if: $CI_PIPELINE_SOURCE == "push" 이 예시는 엄격한 규칙을 사용하므로, 그 외의 경우에는 파이프라인이 실행되지 않습니다. 다른 방법으로는, 모든 규칙을 when: never 로 설정하고 마지막에 when: always 규칙을 두는 방법도 있습니다. when: never 규칙과 일치하는 파이프라인은 실행되지 않으며, 그 외의 모든 파이프라인 유형은 실행됩니다. 예를 들면 다음과 같습니다: workflow: rules: - if: $CI_PIPELINE_SOURCE == "schedule" when: never - if: $CI_PIPELINE_SOURCE == "push" when: never - when: always 이 예시는 스케줄 파이프라인 또는 push (브랜치 및 태그) 파이프라인의 실행을 막습니다. 마지막 when: always 규칙은 머지 리퀘스트 파이프라인을 포함한 그 외의 모든 파이프라인 유형을 실행합니다. 브랜치 파이프라인과 머지 리퀘스트 파이프라인 간 전환 # 머지 리퀘스트가 생성된 후 파이프라인이 브랜치 파이프라인에서 머지 리퀘스트 파이프라인 으로 전환되도록 하려면, .gitlab-ci.yml 파일에 workflow: rules 섹션을 추가합니다. 두 파이프라인 유형을 동시에 사