GitLab CI/CD `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 로 설정되어 있기 때문입니다. 스케줄이나 머지 리퀘스트에 대한 파이프라인도 실행되지 않습니다. 규칙이 해당 파이프라인에 대해 true로 평가되지 않기 때문입니다. 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 섹션을 추가합니다. 두 파이프라인 유형을 동시에 사용하면 중복 파이프라인 이 동시에 실행될 수 있습니다. 중복 파이프라인을 방지하려면 CI_OPEN_MERGE
