자동 병합

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
  • 파이프라인 성공 시 병합파이프라인 성공 시 병합 트레인에 추가은 GitLab 16.0에서 이름이 변경되어 auto_merge_labels_mr_widget라는 플래그로 기본으로 활성화된 상태로 자동 병합으로 변경됩니다.
  • GitLab 16.0에서 일반 사용 가능합니다. 기능 플래그 ‘auto_merge_labels_mr_widget’가 제거되었습니다.

병합 요청의 내용이 병합할 준비가 되었다면, 병합 요청에 자동 병합으로 설정합니다. 나중에 수동으로 작업을 병합해야 하는 것을 기억할 필요가 없습니다. 설정하면 병합 요청이 다음 조건이 모두 충족될 때 자동으로 병합됩니다:

  • 병합 요청 파이프라인이 성공적으로 완료되어야 합니다.
  • 필요한 모든 승인이 있어야 합니다.

자동 병합 준비 상태

GitLab 16.9부터 제공되는 파이프라인이 성공하면 병합 기능은 자동 병합 프로세스에 더 많은 점검을 추가합니다.

병합 요청 자동 병합

전제 조건:

  • 프로젝트에서 적어도 Developer 역할을 가져야 합니다.
  • 프로젝트가 이를 요구하도록 구성되었다면 병합 요청의 모든 쓰레드가 해결되어야 합니다.
  • 병합 요청에서 필요한 모든 승인을 받아야 합니다.

명령 줄에서 푸시할 때, GitLab 사용자 인터페이스에서 이 작업을 수행하려면 merge_request.merge_when_pipeline_succeeds 푸시 옵션을 사용합니다.

GitLab 사용자 인터페이스에서 이를 수행하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. Code > 병합 요청을 선택합니다.
  3. 편집할 병합 요청을 선택합니다.
  4. 병합 요청 보고서 섹션으로 스크롤합니다.
  5. 원하는 병합 옵션을 선택합니다(예: 소스 브랜치 삭제, 커밋 통합, 또는 커밋 메시지 편집 등).
  6. 자동 병합을 선택합니다.

병합 요청에 자동 병합을 선택한 후 파이프라인이 완료되기 전에 새로운 코멘트가 추가되면, GitLab은 모든 기존 스레드를 해결할 때까지 병합을 차단합니다.

파이프라인이 성공하면 병함

파이프라인이 성공하면 병합 요청이 병합됩니다. 파이프라인이 실패하면 작성자는 실패한 작업을 다시 시도하거나 실패를 해결하기 위해 새로운 커밋을 푸시할 수 있습니다:

  • 다시 시도한 작업이 두 번째 시도에서 성공하면 병합 요청이 병합됩니다.
  • 새로운 커밋이 병합 요청에 추가되면, GitLab은 새로운 변경이 병합되기 전에 리뷰되도록 요청을 취소합니다.
  • 병합 요청의 대상 브랜치에 새로운 커밋이 추가되고 순방향(fast-forward) 전용 병합 요청이 구성된 경우, GitLab은 충돌을 방지하기 위해 새로운 변경 사항이 병합되기 전에 요청을 취소합니다.

점검 통과 시 병합

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed
  • GitLab 16.5에 도입되었으며 merge_when_checks_passadditional_merge_when_checks_ready라는 두 개의 플래그로 enabled되었습니다. 기본적으로 비활성화되어 있습니다.
  • GitLab 16.9에서 GitLab.com에 활성화되었습니다.
Self-managed GitLab에서는 기본적으로 이 기능을 사용할 수 없습니다. 기능을 활성화하려면 관리자가 merge_when_checks_passadditional_merge_when_checks_ready라는 기능 플래그를 활성화해야 합니다. GitLab.com에서는 이 기능을 사용할 수 있습니다. GitLab Dedicated에서는 이 기능을 사용할 수 없습니다.

GitLab 16.9 및 이후, 점검 통과 시 병합은 자동 병합 프로세스에 더 많은 점검을 추가합니다. 자동 병합으로 설정할 경우, 병합 요청이 병합되려면 다음 점검이 모두 통과해야 합니다:

  • 병합 요청 파이프라인이 성공적으로 완료되어야 합니다.
  • 필요한 모든 승인이 있어야 합니다.
  • 병합 요청이 Draft 상태여서는 안 됩니다.
  • 모든 토론이 해결되어 있어야 합니다.
  • 모든 블로킹 병합 요청이 병합되거나 닫혀 있어야 합니다.

자동 병합 취소

병합 요청이 자동 병합으로 설정되어 있으면 취소할 수 있습니다.

전제 조건:

  • 병합 요청의 작성자이거나 적어도 Developer 역할을 가진 프로젝트 구성원이어야 합니다.
  • 병합 요청의 파이프라인이 아직 진행 중이어야 합니다.

다음을 수행합니다:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. Code > 병합 요청을 선택합니다.
  3. 편집할 병합 요청을 선택합니다.
  4. 병합 요청 보고서 섹션으로 스크롤합니다.
  5. 자동 병합 취소를 선택합니다.

상태

병합을 위해 성공적인 파이프라인이 필요합니다

병합 전에 프로젝트를 구성하여 완료된 성공적인 파이프라인을 요구할 수 있습니다. 이 설정은 다음 모두에게 적용됩니다.

  • GitLab CI/CD 파이프라인.
  • 외부 CI 통합에서 실행된 파이프라인.

결과적으로, GitLab CI/CD 파이프라인 비활성화는 이 기능을 비활성화하지 않지만, 외부 CI 공급업체의 파이프라인을 사용할 수 있습니다.

전제 조건:

  • 매 번 병합 요청마다 파이프라인을 실행하도록 CI/CD가 구성되어 있는지 확인하십시오.
  • 프로젝트에서 적어도 Maintainer 역할을 가지고 있어야 합니다.

이 설정을 활성화하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 병합 요청을 선택합니다.
  3. 병합 확인으로 스크롤하여 파이프라인이 성공해야 함을 선택합니다. 이 설정은 또한 병합 요청이 파이프라인이 없는 경우에도 병합되지 않도록 하며, 이는 일부 규칙과 충돌할 수 있습니다.
  4. 저장을 선택합니다.

같은 병합 요청에 대해 여러 파이프라인 유형이 실행되는 경우, 병합 요청 파이프라인은 다른 파이프라인 유형보다 우선시 됩니다. 예를 들어, 이전에 성공한 병합 요청 파이프라인이 있으면, 새로운 실패한 브랜치 파이프라인에도 불구하고 병합 요청을 병합할 수 있습니다.

건너뛴 파이프라인 후 병합 허용

파이프라인이 성공해야 함 확인란이 선택된 경우, 건너뛴 파이프라인은 병합 요청의 병합을 방해합니다.

전제 조건:

  • 프로젝트에서 적어도 Maintainer 역할을 가지고 있어야 합니다.

이 동작을 변경하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 병합 요청을 선택합니다.
  3. 병합 확인 아래에서:
    • 파이프라인이 성공해야 함을 선택합니다.
    • 건너뛴 파이프라인은 성공으로 간주를 선택합니다.
  4. 저장을 선택합니다.

문제 해결

실패한 파이프라인이 없음에도 불구하고 병합 요청이 병합되지 않는 경우

일부 경우에는 병합을 위해 성공적인 파이프라인이 필요합니다라고 설정했지만, 실패한 파이프라인이 없는 병합 요청을 병합할 수 없는 경우가 있습니다. 이 설정은 성공적인 파이프라인의 존재를 요구하며, 실패한 파이프라인의 부재를 요구하지는 않습니다. 병합 요청에 어떠한 파이프라인도 없는 경우, 성공적인 파이프라인으로 간주되지 않으며 병합할 수 없습니다.

이 설정이 활성화된 경우, 모든 병합 요청에 대해 파이프라인이 실행되도록 rules 또는 workflow:rules을 사용하여야 합니다.

실패한 파이프라인이 있음에도 불구하고 병합 요청이 병합될 수 있는 경우

일부 경우에는 병합을 위해 성공적인 파이프라인이 필요합니다라고 설정했지만, 여전히 실패한 파이프라인이 있는 병합 요청을 병합할 수 있는 경우가 있습니다.

병합 요청 파이프라인은 파이프라인이 성공해야 함 설정에 대해 가장 높은 우선순위를 갖습니다. 같은 병합 요청에 대해 여러 파이프라인 유형이 실행되는 경우, 병합 요청 파이프라인만이 성공 여부를 확인합니다.

같은 병합 요청에서 여러 파이프라인 유형은 다음과 같은 상황으로 인해 발생할 수 있습니다:

  • 중복 파이프라인을 피하는 규칙 구성: 하나는 병합 요청 파이프라인, 다른 하나는 브랜치 파이프라인. 이 경우, 최신 병합 요청 파이프라인의 상태가 병합 요청을 병합할 수 있는지를 결정하게 됩니다.
  • 병합 요청과 동일한 브랜치를 대상으로하는 외부 도구에 의해 트리거된 파이프라인.

모든 경우에 대해, 동일한 병합 요청에 대해 여러 파이프라인 유형을 방지하기 위해 CI/CD 구성을 업데이트하십시오.