자동 Merge
- 파이프라인 성공 시 Merge 및 파이프라인 성공 시 Merge 훈련에 추가 GitLab 16.0에서 자동 Merge으로 이름 변경됨. 기본적으로 활성화됨.
- GitLab 16.0에서 GA(Generally available)로 사용 가능. 피처 플래그
auto_merge_labels_mr_widget
이 제거됨.
Merge Request의 내용이 Merge할 준비가 되면, Merge Request에서 자동 Merge으로 설정을 사용합니다. 작업을 매뉴얼으로 Merge할 필요가 없게 됩니다. 설정되면 Merge Request은 모든 다음 조건을 충족할 때 자동으로 Merge됩니다.
- Merge Request 파이프라인은 성공적으로 완료되어야 합니다.
- 필요한 승인이 모두 이루어져야 합니다.
GitLab 16.9 이상에서 제공되는 파이프라인 통과 시 Merge 기능이 자동 Merge 프로세스에 추가적인 확인을 추가합니다.
Merge Request의 자동 Merge
전제 조건:
- 프로젝트에서 적어도 Developer 역할이 있어야 합니다.
- 프로젝트가 그것을 요구하도록 설정되어 있다면, Merge Request의 모든 스레드는 해결되어야 합니다.
- Merge Request은 필요한 모든 승인을 받았어야 합니다.
명령줄에서 푸시할 때, merge_request.merge_when_pipeline_succeeds
push 옵션을 사용합니다.
GitLab 사용자 인터페이스에서 이를 위해:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 코드 > Merge Request을 선택합니다.
- 편집하려는 Merge Request을 선택합니다.
- Merge Request 보고서 섹션으로 스크롤합니다.
- 원하는 Merge 옵션을 선택하세요, 예를 들어 소스 브랜치 삭제, 커밋 통합, 또는 커밋 메시지 편집.
- 자동 Merge을 선택합니다.
자동 Merge을 선택한 후에 Merge Request에 새 댓글이 추가되지만 파이프라인이 완료되기 전에는 GitLab이 모든 기존 스레드를 해결할 때까지 Merge을 차단합니다.
파이프라인 통과 시 Merge
파이프라인이 성공하면 Merge Request이 Merge됩니다. 파이프라인이 실패하면 작성자는 실패한 작업을 다시 시도하거나 새 커밋을 푸시할 수 있습니다.
- 재시도한 작업이 두 번째 시도에서 성공하면 Merge Request이 Merge됩니다.
- 새로운 커밋이 Merge Request에 추가되면, GitLab이 새 변경 사항이 Merge되기 전에 검토되도록 요청을 취소합니다.
- Merge Request의 대상 브랜치에 새 커밋이 추가되고 오직 빨리 앞으로만 Merge Request이 설정된 경우, Merge Request이 충돌을 방지하기 위해 요청을 취소합니다.
확인 통과 시 Merge
- GitLab 16.5에서 두 개의 플래그
merge_when_checks_pass
및additional_merge_when_checks_ready
를 가지고 도입됨. 기본적으로 비활성화됨.- GitLab 16.9에서 GitLab.com에서 활성화 됨.
merge_when_checks_pass
및 additional_merge_when_checks_ready
라는 피처 플래그를 사용하도록 설정할 수 있습니다.
GitLab.com에서는 이 기능을 사용할 수 있습니다. GitLab Dedicated에서는 이 기능을 사용할 수 없습니다.GitLab 16.9 이상에서 확인 통과 시 Merge은 자동 Merge 프로세스에 추가적인 확인을 추가합니다. 자동 Merge으로 설정되면 Merge Request이 Merge되려면 다음 모든 확인이 통과해야 합니다.
- Merge Request 파이프라인은 성공적으로 완료되어야 합니다.
- 필요한 승인이 모두 이루어져야 합니다.
- Merge Request이 드래프트여서는 안 됩니다.
- 모든 토의가 해결되어 있어야 합니다.
- 모든 블로킹 Merge Request이 Merge되거나 닫혀 있어야 합니다.
자동 Merge 취소
Merge Request이 자동 Merge으로 설정되어 있으면 취소할 수 있습니다.
전제 조건:
- Merge Request의 작성자이거나 적어도 Developer 역할을 가진 프로젝트 구성원이어야 합니다.
- Merge Request의 파이프라인이 여전히 진행 중이어야 합니다.
다음을 수행하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 코드 > Merge Request을 선택합니다.
- 편집하려는 Merge Request을 선택합니다.
- Merge Request 보고서 섹션까지 스크롤합니다.
- 자동 Merge 취소를 선택합니다.
Merge을 위한 성공적인 파이프라인 필요
Merge 전에 완료된 성공적인 파이프라인이 필요한 프로젝트를 구성할 수 있습니다. 이 설정은 두 가지 모두에 대해 동작합니다.
- GitLab CI/CD 파이프라인.
- 외부 CI 통합에서 실행된 파이프라인.
결과적으로, GitLab CI/CD 파이프라인 비활성화는 이 기능을 비활성화하지 않습니다. 그러나 이 기능을 사용하여 외부 CI 제공자의 파이프라인을 사용할 수 있습니다.
전제 조건:
- CI/CD가 모든 Merge Request에 대해 파이프라인을 실행하도록 구성되어 있는지 확인합니다.
- 프로젝트에서 적어도 Maintainer 역할을 가지고 있어야 합니다.
이 설정을 활성화하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 설정 > Merge Request을 선택합니다.
- Merge 확인으로 이동하고 파이프라인이 성공해야 함을 선택합니다. 이 설정은 파이프라인이 없는 경우 Merge Request이 Merge되는 것을 방지하므로 일부 규칙과 충돌이 발생할 수 있습니다.
- 저장을 선택합니다.
동일한 Merge Request에 대해 여러 파이프라인 유형이 실행되는 경우, 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 구성을 업데이트하세요.