머지 리퀘스트 파이프라인 문제 해결
GitLab v19.5Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
머지 리퀘스트 파이프라인을 사용할 때 다음과 같은 문제를 겪을 수 있습니다. 머지 리퀘스트에서 파이프라인이 중복으로 생성된다면, 파이프라인이 브랜치와 머지 리퀘스트 양쪽에서 동시에 실행되도록 설정되어 있을 수 있습니다.
머지 리퀘스트 파이프라인을 사용할 때 다음과 같은 문제를 겪을 수 있습니다.
브랜치에 푸시할 때 파이프라인이 두 개 생성되는 경우#
머지 리퀘스트에서 파이프라인이 중복으로 생성된다면, 파이프라인이 브랜치와 머지 리퀘스트 양쪽에서 동시에 실행되도록 설정되어 있을 수 있습니다. 중복 파이프라인 방지하기에 따라 파이프라인 설정을 조정합니다.
workflow:rules를 추가하면 브랜치 파이프라인에서 머지 리퀘스트 파이프라인으로 전환할 수 있습니다.
해당 브랜치에서 머지 리퀘스트가 열리면 파이프라인은 머지 리퀘스트 파이프라인으로 전환됩니다.
잘못된 CI/CD 설정 파일을 푸시할 때 파이프라인이 두 개 생성되는 경우#
머지 리퀘스트의 브랜치에 잘못된 CI/CD 설정을 푸시하면 파이프라인 탭에 실패한 파이프라인 두 개가 나타납니다. 하나는 실패한 브랜치 파이프라인이고, 다른 하나는 실패한 머지 리퀘스트 파이프라인입니다.
설정 구문을 수정하면 더 이상 실패한 파이프라인이 나타나지 않습니다. 설정 문제를 찾아 수정하려면 다음을 사용할 수 있습니다.
머지 리퀘스트의 파이프라인은 실패로 표시되지만 최신 파이프라인은 성공한 경우#
하나의 머지 리퀘스트의 Pipelines 탭에 브랜치 파이프라인과 머지 리퀘스트 파이프라인이 모두 존재할 수 있습니다. 이는 설정에 의한 것일 수도 있고, 의도치 않게 발생한 것일 수도 있습니다.
프로젝트에서 Pipelines must succeed가 활성화되어 있고 두 종류의 파이프라인이 모두 존재하는 경우, 브랜치 파이프라인이 아니라 머지 리퀘스트 파이프라인이 확인됩니다.
따라서 브랜치 파이프라인의 결과와 관계없이 머지 리퀘스트 파이프라인이 실패하면 MR 파이프라인 결과는 실패로 표시됩니다.
다만 다음 사항에 유의합니다.
- 이러한 조건은 강제되지 않습니다.
- 경쟁 조건(race condition)에 따라 어느 파이프라인의 결과가 머지 리퀘스트를 차단하거나 통과시키는 데 사용될지 결정됩니다.
이 버그는 이슈 384927에서 추적하고 있습니다.
An error occurred while trying to run a new pipeline for this merge request.#
이 오류는 머지 리퀘스트에서 Run pipeline을 선택했지만, 프로젝트에서 머지 리퀘스트 파이프라인이 더 이상 활성화되어 있지 않을 때 발생할 수 있습니다.
이 오류 메시지가 발생할 수 있는 몇 가지 이유는 다음과 같습니다.
-
프로젝트에서 머지 리퀘스트 파이프라인이 활성화되어 있지 않고 Pipelines 탭에 나열된 파이프라인이 없는 상태에서 Run pipelines를 선택한 경우.
-
프로젝트에서 이전에는 머지 리퀘스트 파이프라인이 활성화되어 있었지만 해당 설정이 제거된 경우. 예를 들면 다음과 같습니다.
- 머지 리퀘스트가 생성될 당시 프로젝트의
.gitlab-ci.yml설정 파일에서 머지 리퀘스트 파이프라인이 활성화되어 있습니다. - 머지 리퀘스트의 Pipelines 탭에서 Run pipeline 옵션을 사용할 수 있으며, 이 시점에 Run pipeline을 선택해도 오류는 발생하지 않습니다.
- 프로젝트의
.gitlab-ci.yml파일이 변경되어 머지 리퀘스트 파이프라인 설정이 제거됩니다. - 브랜치를 리베이스하여 변경된 설정을 머지 리퀘스트에 반영합니다.
- 이제 파이프라인 설정이 더 이상 머지 리퀘스트 파이프라인을 지원하지 않는 상태에서 머지 리퀘스트 파이프라인을 실행하려고 Run pipeline을 선택합니다.
- 머지 리퀘스트가 생성될 당시 프로젝트의
Run pipeline을 사용할 수 있지만 프로젝트에서 머지 리퀘스트 파이프라인이 활성화되어 있지 않다면 이 옵션을 사용하지 마십시오. 커밋을 푸시하거나 브랜치를 리베이스하면 새 브랜치 파이프라인을 트리거할 수 있습니다.
Merge blocked: pipeline must succeed. Push a new commit that fixes the failure 메시지#
이 메시지는 머지 리퀘스트 파이프라인, 병합 결과 파이프라인, 또는 머지 트레인 파이프라인이 실패했거나 취소된 경우에 표시됩니다. 브랜치 파이프라인이 실패한 경우에는 표시되지 않습니다.
머지 리퀘스트 파이프라인 또는 병합 결과 파이프라인이 취소되었거나 실패한 경우 다음을 할 수 있습니다.
- 머지 리퀘스트의 파이프라인 탭에서 Run pipeline을 선택하여 전체 파이프라인을 다시 실행합니다.
- 실패한 job만 재시도합니다. 전체 파이프라인을 다시 실행한다면 이 작업은 필요하지 않습니다.
- 실패를 수정하는 새 커밋을 푸시합니다.
머지 트레인 파이프라인이 실패한 경우 다음을 할 수 있습니다.
- 실패 내용을 확인하고
/merge퀵 액션을 사용해 머지 리퀘스트를 트레인에 즉시 다시 추가할 수 있는지 판단합니다. - 머지 리퀘스트의 파이프라인 탭에서 Run pipeline을 선택하여 전체 파이프라인을 다시 실행한 다음, 머지 리퀘스트를 트레인에 다시 추가합니다.
- 실패를 수정하는 커밋을 푸시한 다음, 머지 리퀘스트를 트레인에 다시 추가합니다.
머지 리퀘스트가 머지되기 전에 실패 없이 머지 트레인 파이프라인이 취소된 경우 다음을 할 수 있습니다.
- 트레인에 다시 추가합니다.