자동 Merge
- 파이프라인이 성공하면 Merge하기 및 파이프라인 성공시 Merge 열차에 추가하기는 GitLab 16.0에서
auto_merge_labels_mr_widget
이라는 플래그로 자동 Merge으로 이름이 변경되었습니다.- GitLab 16.0에서 일반적으로 사용 가능합니다. 피처 플래그
auto_merge_labels_mr_widget
이 제거되었습니다.- GitLab 16.5에서
merge_when_checks_pass
및additional_merge_when_checks_ready
라는 두 가지 플래그로 도입되었습니다. 기본적으로 비활성화됩니다.- GitLab 17.0에서 GitLab.com에서
merge_when_checks_pass
및additional_merge_when_checks_ready
플래그가 활성화되었습니다.
플래그: 이 기능의 사용 가능성은 플래그로 제어됩니다. 자세한 내용은 히스토리를 참조하십시오. 이 기능은 테스트용으로 사용할 수 있지만 본격적인 운영에는 준비되지 않았습니다.
merge_when_checks_pass
피처 플래그가 활성화되면, Merge Request의 내용이 Merge할 준비가 되었다면, 자동 Merge 설정을 선택할 수 있습니다. 필요한 모든 확인 사항이 성공적으로 완료되면 Merge Request이 자동으로 Merge되며 매뉴얼으로 Merge할 필요가 없습니다.
자동 Merge을 설정한 후, 이러한 확인 사항은 모두 통과해야 Merge Request이 Merge됩니다:
- 필요한 모든 승인을 해야 합니다.
- 이 Merge Request을 차단하는 다른 Merge Request이 없어야 합니다.
- Merge 충돌이 없어야 합니다.
- 프로젝트 설정과 관계없이 CI/CD 파이프라인은 성공적으로 완료되어야 합니다.
- 모든 의논이 해결되어야 합니다.
- Merge Request이 임시 보류 상태여서는 안 됩니다.
- 모든 외부 상태 확인이 통과해야 합니다.
- Merge Request은 열려 있어야 합니다.
- 거절된 정책이 없어야 합니다.
- 프로젝트가 Merge Request이 Jira 이슈를 참조해야 하는 경우, Merge Request 제목 또는 설명에 Jira 이슈 링크가 포함되어 있어야 합니다.
모든 확인 사항과 그 API 동등 항목의 전체 디렉터리은 Merge 상태를 참조하십시오.
Merge Request 자동 Merge하기
사전 요구 사항:
- 프로젝트에서 적어도 Developer 역할이 있어야 합니다.
- 프로젝트 구성에 따라 Merge Request의 모든 스레드는 해결되어 있어야 합니다.
- Merge Request이 필요한 모든 승인을 받아야 합니다.
- Merge 열차는 지원되지 않습니다. 자세한 내용은 이슈 443395를 참조하십시오.
명령줄에서 푸시할 때 이 작업을 수행하려면 merge_request.merge_when_pipeline_succeeds
푸시 옵션을 사용하십시오.
GitLab 사용자 인터페이스에서 이 작업을 수행하려면:
- 왼쪽 사이드바에서 검색 또는 참조를 선택하여 프로젝트를 찾습니다.
- 코드 > Merge Request을 선택합니다.
- 편집할 Merge Request을 선택합니다.
- Merge Request 보고서 섹션으로 스크롤합니다.
- 원하는 Merge 옵션(예: 소스 브랜치 삭제, 커밋 통합, 또는 커밋 메시지 편집)을 선택합니다.
- 자동 Merge을 선택합니다.
Merge Request에 자동 Merge을 선택한 후에 파이프라인이 완료되기 전에 새로운 코멘트를 추가하면, 기존 스레드를 모두 해결하십시오.
자동 Merge을 위한 파이프라인 성공
파이프라인이 성공하면 Merge Request이 Merge됩니다. 파이프라인이 실패하면 작성자는 다음을 수행할 수 있습니다:
- 다시 시도한 작업이 두 번째 시도에서 성공하면 Merge Request이 Merge됩니다.
- Merge Request에 새로운 커밋을 추가하면, 새로운 변경 사항이 Merge되기 전에 검토를 받도록 GitLab이 요청을 취소합니다.
- Merge Request의 대상 브랜치에 새로운 커밋을 추가하고 프로젝트가 오직 패스트-포워드 Merge Request만 허용하는 경우, Merge Request을 취소하여 Merge 충돌을 방지합니다.
더 엄격한 파이프라인 상태 제어를 위해 Merge하기 전에 성공적인 파이프라인이 필요한 경우도 참고하십시오.
자동 Merge 취소
Merge Request의 자동 Merge을 취소할 수 있습니다.
사전 요구 사항:
- Merge Request의 작성자이거나 적어도 프로젝트에서 Developer 역할을 가져야 합니다.
- Merge Request의 파이프라인이 아직 진행 중이어야 합니다.
이를 수행하려면:
- 왼쪽 사이드바에서 검색 또는 참조를 선택하여 프로젝트를 찾습니다.
- 코드 > Merge Request을 선택합니다.
- Merge Request을 선택합니다.
- Merge Request 보고서 섹션으로 스크롤합니다.
- 자동 Merge 취소를 선택합니다.
Merge을 위한 성공적인 파이프라인 요구
Merge 전에 완료되고 성공적인 파이프라인이 필요한 프로젝트를 구성할 수 있습니다. 이 구성은 다음에서 작동합니다:
- GitLab CI/CD 파이프라인.
- 외부 CI 통합에서 실행된 파이프라인.
사전 요구 사항:
- 프로젝트의 CI/CD 구성이 모든 Merge Request에 대해 파이프라인을 실행하도록 보장해야 합니다.
- 프로젝트에서 적어도 Maintainer 역할이 있어야 합니다.
이 설정을 활성화하려면:
- 왼쪽 사이드바에서 검색 또는 참조를 선택하여 프로젝트를 찾습니다.
- 설정 > Merge Request을 선택합니다.
- Merge 확인으로 스크롤하고 파이프라인이 성공해야 함을 선택합니다. 이 설정은 파이프라인이 없는 경우 Merge Request이 Merge되지 않도록 하며, 일부 규칙과 충돌할 수 있습니다.
- 저장을 선택합니다.
동일한 Merge Request에 대해 여러 파이프라인 유형이 실행되는 경우, Merge Request 파이프라인은 다른 파이프라인 유형보다 우선합니다. 예를 들어, 더 오래된 성공적인 Merge Request 파이프라인은 더 신규하지만 실패한 브랜치 파이프라인을 허용합니다.
건너뛴 파이프라인 후 Merge 허용
프로젝트에서 파이프라인이 성공해야 함을 설정했을 때, 건너뛴 파이프라인은 Merge Request은 Merge되지 못하게 합니다.
사전 요구 사항:
- 프로젝트에서 적어도 Maintainer 역할이 있어야 합니다.
이 동작을 변경하려면:
- 왼쪽 사이드바에서 검색 또는 참조를 선택하여 프로젝트를 찾습니다.
- 설정 > Merge Request을 선택합니다.
-
Merge 확인 아래에서:
- 파이프라인이 성공해야 함을 선택합니다.
- 건너뛴 파이프라인은 성공으로 간주함을 선택합니다.
- 저장을 선택합니다.
문제 해결
실패한 파이프라인이 없음에도 불구하고 Merge Request이 Merge되지 않는 경우
경우에 따라 Merge을 위한 성공적인 파이프라인이 필요한 경우를 설정하였지만 실패한 파이프라인이 없는 Merge Request을 Merge할 수 없는 경우가 발생할 수 있습니다. 해당 설정은 성공적인 파이프라인의 존재를 요구하므로 실패한 파이프라인의 부재가 아닌 경우에 적용됩니다. Merge Request에 파이프라인이 전혀 없는 경우, 성공적인 파이프라인이 존재하는 것으로 간주되지 않으며 Merge할 수 없습니다.
이 설정을 사용할 때는 모든 Merge Request에 대해 파이프라인이 실행되도록 rules
또는 workflow:rules
를 사용하도록하여 파이프라인이 실행되도록 보장하십시오.
Merge Request은 실패한 파이프라인이 있더라도 Merge될 수 있습니다
일부 경우에는 Merge을 위해 성공한 파이프라인이 필요할 수 있지만, 여전히 실패한 파이프라인이 있는 Merge Request을 Merge할 수 있습니다.
Merge Request 파이프라인은 파이프라인은 성공해야 함 설정에서 가장 높은 우선순위를 갖습니다. 동일한 Merge Request에 대해 여러 파이프라인 유형이 실행되는 경우, Merge Request 파이프라인만이 성공 여부를 확인합니다.
동일한 Merge Request에서 여러 파이프라인 유형이 발생하는 이유는 다음과 같습니다:
-
중복 파이프라인 피하기 위한
rules
구성: 한 가지는 Merge Request 파이프라인이고 다른 하나는 브랜치 파이프라인입니다. 이 경우 최신 Merge Request 파이프라인의 상태가 Merge Request의 Merge 가능 여부를 결정하며 브랜치 파이프라인은 그 영향을 미치지 않습니다. - Merge Request과 동일한 브랜치를 대상으로 하는 외부 도구에 의해 트리거된 파이프라인.
어떤 경우에도 동일한 Merge Request에 대해 여러 파이프라인 유형을 방지하도록 CI/CD 구성을 업데이트하세요.