자동 병합
- 파이프라인 성공 시 병합 및 파이프라인 성공 시 병합 기차에 추가는 GitLab 16.0에서 자동 병합으로 이름이 변경되었습니다 플래그를 사용하여
auto_merge_labels_mr_widget
으로 기본적으로 활성화되어 있습니다.- 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
가 활성화되었습니다.- GitLab 17.4에서 기본적으로
merge_when_checks_pass
플래그가 활성화되었습니다.
merge_when_checks_pass
기능 플래그를 활성화하면, 병합 요청의 내용이 병합할 준비가 완료되었을 때, 자동 병합으로 설정을 선택할 수 있습니다. 모든 필수 검사가 성공적으로 완료되면 병합 요청이 자동으로 병합되며, 병합 요청을 수동으로 병합할 필요를 잊지 않아도 됩니다.
자동 병합을 설정한 후에는 다음 검사가 모두 통과해야 병합 요청이 병합됩니다:
- 모든 필수 승인들이 주어져야 합니다.
- 다른 병합 요청이 이 병합 요청을 막지 않아야 합니다.
- 병합 충돌이 없어야 합니다.
- CI/CD 파이프라인이 성공적으로 완료되어야 하며, 프로젝트 설정과 상관없이 이루어져야 합니다.
- 모든 논의가 해결되어야 합니다.
- 병합 요청이 초안이 아니어야 합니다.
- 모든 외부 상태 검사가 통과해야 합니다.
- 병합 요청이 열려 있어야 합니다.
- 거부된 정책이 존재하지 않아야 합니다.
- 프로젝트가 병합 요청에 Jira 문제를 참조하도록 요구하는 경우, 병합 요청 제목 또는 설명에 Jira 문제 링크가 포함되어야 합니다.
전체 검사 목록 및 API 동등물에 대해서는 병합 상태를 참조하세요.
병합 요청 자동 병합하기
전제 조건:
- 프로젝트에 대한 개발자 역할이 있어야 합니다.
- 프로젝트 구성에서 요구하는 경우, 병합 요청의 모든 스레드가 해결되어야 합니다.
- 병합 요청이 모든 필수 승인을 받았어야 합니다.
- 병합 기차는 지원되지 않습니다. 자세한 내용은 문제 443395를 참조하세요.
명령줄에서 푸시할 때는 merge_request.merge_when_pipeline_succeeds
푸시 옵션을 사용하세요.
GitLab 사용자 인터페이스에서 수행하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 코드 > 병합 요청을 선택합니다.
- 편집할 병합 요청을 선택합니다.
- 병합 요청 보고서 섹션으로 스크롤합니다.
- 선택 사항. 소스 브랜치 삭제, 커밋 압축 또는 커밋 메시지 편집과 같은 원하는 병합 옵션을 선택합니다.
- 병합 요청 위젯의 내용을 검토합니다. 만약 그 내용이
문제 자동 종료 패턴을 포함하고 있다면,
이 작업이 병합될 때 문제가 닫혀야 함을 확인합니다:
- 자동 병합을 선택합니다.
자동 병합을 선택한 후 파이프라인이 완료되기 전 병합 요청에 댓글을 달면, 기존 스레드가 모두 해결될 때까지 병합이 차단됩니다.
자동 병합 사용 시 병합 트레인
자세한 내용은 이력서를 참조하십시오.
프로젝트에서 병합 트레인을 사용하는 경우
다음 두 기능 플래그를 활성화하면 자동 병합 기능을 사용할 수 있습니다:
merge_when_checks_pass
merge_when_checks_pass_merge_train
두 기능 플래그를 모두 활성화하면, 병합 요청에서 자동 병합으로 설정을 선택하면
모든 검사가 통과한 후 병합 트레인에 추가됩니다.
자동 병합을 위한 파이프라인 성공
파이프라인이 성공하면 병합 요청이 병합됩니다.
파이프라인이 실패하면 작성자는 실패한 작업을 다시 시도하거나 실패를 수정하기 위해 새로운 커밋을 푸시할 수 있습니다:
- 다시 시도한 작업이 두 번째 시도에서 성공하면 병합 요청이 병합됩니다.
- 병합 요청에 새로운 커밋을 추가하면, GitLab은 병합 전에 새로운 변경 사항이 검토되도록 요청을 취소합니다.
- 병합 요청의 대상 브랜치에 새로운 커밋을 추가하고, 프로젝트가 오직 패스트 포워드 병합 요청만 허용하는 경우,
GitLab은 병합 충돌을 방지하기 위해 요청을 취소합니다.
파이프라인 상태에 대한 엄격한 제어를 위해,
병합 전에 성공적인 파이프라인을 요구할 수 있습니다.
자동 병합 취소
병합 요청에서 자동 병합을 취소할 수 있습니다.
전제 조건:
- 병합 요청의 작성자이거나, 최소한 개발자 역할을 가진 프로젝트 멤버여야 합니다.
- 병합 요청의 파이프라인이 여전히 진행 중이어야 합니다.
이 작업을 수행하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 코드 > 병합 요청을 선택합니다.
- 편집할 병합 요청을 선택합니다.
- 병합 요청 보고서 섹션으로 스크롤합니다.
- 자동 병합 취소를 선택합니다.
병합을 위한 성공적인 파이프라인 요구
병합 전에 완전하고 성공적인 파이프라인을 요구하도록 프로젝트를 구성할 수 있습니다.
이 설정은 다음 두 가지 모두에 적용됩니다:
- GitLab CI/CD 파이프라인.
- 외부 CI 통합에서 실행된 파이프라인.
결과적으로, GitLab CI/CD 파이프라인 비활성화하면
이 기능이 비활성화되지 않지만, 외부 CI 제공자로부터 파이프라인을 사용할 수 있습니다.
전제 조건:
- 프로젝트의 CI/CD 구성에서 모든 병합 요청에 대해 파이프라인을 실행합니다.
- 프로젝트에 대해 최소한 유지 관리자 역할을 가져야 합니다.
이 설정을 활성화하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 설정 > 병합 요청을 선택합니다.
-
병합 확인으로 스크롤하고 파이프라인이 성공해야 함을 선택합니다.
이 설정은 파이프라인이 없는 경우에도 병합 요청이 병합되는 것을 방지합니다.
이는 일부 규칙과 충돌할 수 있습니다. - 저장을 선택합니다.
병합 요청에 대해 여러 파이프라인 유형이 실행되는 경우,
병합 요청 파이프라인은 다른 파이프라인 유형보다 우선합니다. 예를 들어,
이전의 성공적인 병합 요청 파이프라인은 새로운 실패한 브랜치 파이프라인에도 불구하고 병합 요청을 병합할 수 있게 합니다.
건너뛴 파이프라인 후 병합 허용
프로젝트에 대해 파이프라인이 성공해야 함을 설정하면,
병합 요청이 병합되지 않도록 방지합니다.
전제 조건:
- 프로젝트에 대해 최소한 유지 관리자의 역할이 있어야 합니다.
이 행동을 변경하려면:
-
왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
-
설정 > 병합 요청을 선택합니다.
-
병합 체크에서:
- 파이프라인이 성공해야 함을 선택합니다.
- 건너뛴 파이프라인은 성공으로 간주됨을 선택합니다.
- 저장을 선택합니다.
문제 해결
실패한 파이프라인이 없는 경우에도 병합할 수 없는 병합 요청
경우에 따라 병합을 위해 성공하는 파이프라인을 요구할 수 있지만,
실패한 파이프라인이 없는 병합 요청을 병합할 수 없을 수 있습니다. 이 설정은
실패한 파이프라인의 부재가 아니라 성공하는 파이프라인의 존재를 요구합니다. 파이프라인이 전혀 없는 병합 요청은
성공하는 파이프라인을 가진 것으로 간주되지 않으며, 병합할 수 없습니다.
이 설정을 활성화할 때는 rules
또는
workflow:rules
를 사용하여
모든 병합 요청에 대해 파이프라인이 실행되도록 해야 합니다.
실패한 파이프라인이 있어도 여전히 병합할 수 있는 병합 요청
경우에 따라 병합을 위해 성공하는 파이프라인을 요구할 수 있지만,
실패한 파이프라인이 있는 병합 요청을 여전히 병합할 수 있습니다.
병합 요청 파이프라인은 파이프라인이 성공해야 함 설정에 대해 가장 높은 우선 순위를 가집니다.
동일한 병합 요청에 대해 여러 유형의 파이프라인이 실행되는 경우, GitLab은 성공을 확인하기 위해
오직 병합 요청 파이프라인만을 확인합니다.
병합 요청은 다음과 같은 경우 여러 파이프라인을 가질 수 있습니다:
-
하나의 병합 요청 파이프라인 및 하나의 브랜치 파이프라인. 이 경우, 최신 병합 요청 파이프라인의 상태가
병합 요청이 병합될 수 있는지를 결정하며, 브랜치 파이프라인은 고려하지 않습니다.
-
동일한 브랜치를 대상으로 하는 외부 도구에 의해 트리거된 파이프라인입니다.
모든 경우에 대해, 동일한 병합 요청에 대해 여러 유형의 파이프라인을 방지하기 위해 CI/CD 구성을 업데이트하세요.