- 머지 기차 워크플로우
- 병합 트레인 활성화
- 병합 트레인 시작
- 병합 트레인 보기
- 머지 트레인에 머지 요청 추가
- 머지 트레인에서 머지 요청 제거
- 머지 트레인을 건너뛰고 즉시 머지
- 문제 해결
머지 기차
세부정보: Tier: Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
- GitLab 16.0 이상에서 Merge train 시작 및 파이프라인 성공 시 Merge train 시작 버튼은 자동 병합으로 설정으로 변경되었습니다. Merge train에서 제거는 자동 병합 취소로 변경되었습니다.
- Fast-forward 및 semi-linear 병합 방법에 대한 지원이 GitLab 16.5에서 기능 플래그
fast_forward_merge_trains_support
와 함께 도입되었습니다. 기본적으로 활성화되어 있습니다.- GitLab 16.11에서 기능 플래그
fast_forward_merge_trains_support
가 제거되었습니다.
기본 브랜치에 자주 병합되는 프로젝트에서는 서로 다른 머지 요청이 서로 충돌할 수 있습니다.
머지 기차를 사용하여 머지 요청을 대기열에 넣으세요.
각 머지 요청은 이전의 다른 머지 요청과 비교되어 모두 함께 작동하는지 확인합니다.
자세한 정보는 다음을 참조하세요:
- 머지 기차가 작동하는 방법에 대한 내용은 머지 기차 워크플로우를 검토하세요.
- 머지 기차를 사용하는 이유에 대한 내용은 머지 기차의 시작이 DevOps의 효율성을 향상시키는 방법을 읽어보세요.
머지 기차 워크플로우
머지 기차는 대기 중인 머지 요청이 없고
Merge 또는 자동 병합으로 설정을 선택하면 시작됩니다.
GitLab은 변경 사항이 기본 브랜치에 병합될 수 있는지 확인하는
머지 기차 파이프라인을 시작합니다.
이 첫 번째 파이프라인은
병합된 결과 파이프라인과 동일하며,
소스 및 대상 브랜치의 변경 사항이 결합되어 실행됩니다.
내부 병합 결과 커밋의 작성자는
병합을 시작한 사용자입니다.
두 번째 머지 요청을 첫 번째 파이프라인이 완료된 직후에 병합하도록 대기열에 추가하려면,
Merge 또는 자동 병합으로 설정을 선택하여 기차에 추가하세요.
이 두 번째 머지 기차 파이프라인은
대상 브랜치와 결합된 _두 개_의 머지 요청 변경 사항에서 실행됩니다.
마찬가지로, 세 번째 머지 요청을 추가하면
그 파이프라인은 대상 브랜치와 병합된 세 개의 머지 요청의 변경 사항에서 실행됩니다.
모든 파이프라인은 병렬로 실행됩니다.
각 머지 요청은 오직 다음 조건을 충족한 후에만
대상 브랜치에 병합됩니다:
- 머지 요청의 파이프라인이 성공적으로 완료됩니다.
- 그 이전에 대기열에 들어간 모든 다른 머지 요청이 병합됩니다.
머지 기차 파이프라인이 실패하면,
해당 머지 요청은 병합되지 않습니다.
GitLab은 해당 머지 요청을 머지 기차에서 제거하고,
그 후에 대기 중이던 모든 머지 요청에 대해 새 파이프라인을 시작합니다.
예를 들어:
세 개의 머지 요청(A
, B
, C
)이 순서대로 머지 기차에 추가되면,
병렬로 실행되는 세 개의 병합된 결과 파이프라인이 생성됩니다:
- 첫 번째 파이프라인은 대상 브랜치와 결합된
A
의 변경 사항에서 실행됩니다. - 두 번째 파이프라인은 대상 브랜치와 결합된
A
와B
의 변경 사항에서 실행됩니다. - 세 번째 파이프라인은 대상 브랜치와 결합된
A
,B
및C
의 변경 사항에서 실행됩니다.
만약 B
의 파이프라인이 실패하면:
- 첫 번째 파이프라인(
A
)은 계속 실행됩니다. -
B
는 기차에서 제거됩니다. -
C
의 파이프라인은 자동 파이프라인 취소되며,
A
와C
의 변경 사항이 결합된 대상 브랜치에 대한 새 파이프라인이 시작됩니다
(B
의 변경 사항은 제외).
만약 A
가 성공적으로 완료되면,
대상 브랜치에 병합되고, C
는 계속 실행됩니다.
기차에 새로 추가된 머지 요청은
이제 대상 브랜치에 있는 A
의 변경 사항과
머지 기차의 C
의 변경 사항을 포함합니다.
머지 기차의 병렬 실행이 기본 브랜치의 커밋이 깨지는 것을 방지하는 방법에 대한 시연 동영상을 시청하세요.
자동 파이프라인 취소
GitLab CI/CD는 중복 파이프라인을 감지하고 리소스를 절약하기 위해 이를 취소합니다.
중복 병합 트레인 파이프라인이 발생하는 경우는 다음과 같습니다:
- 병합 트레인에서 하나의 병합 요청에 대한 파이프라인이 실패할 때.
- 병합 트레인을 건너뛰고 즉시 병합할 때.
- 병합 트레인에서 병합 요청을 제거할 때.
이러한 경우, GitLab은 트레인에서 일부 또는 모든 병합 요청에 대해 새로운 병합 트레인 파이프라인을 생성해야 합니다. 이전 병합 트레인에서 이전의 결합된 변경 사항과 비교하고 있었던 오래된 파이프라인은 더 이상 유효하지 않으므로 이러한 오래된 파이프라인은 취소됩니다.
병합 트레인 활성화
disable_merge_trains
기능 플래그는 GitLab 16.5에서 제거되었습니다.
전제 조건:
- Maintainer 역할이 있어야 합니다.
- 여러분의 저장소는 GitLab 저장소여야 하며, 외부 저장소가 아니어야 합니다.
- 여러분의 파이프라인은 병합 요청 파이프라인을 사용하도록 설정되어야 합니다. 그렇지 않으면 병합 요청이 해결되지 않은 상태에 갇히거나 파이프라인이 삭제될 수 있습니다.
- 병합된 결과 파이프라인이 활성화되어야 합니다.
병합 트레인을 활성화하려면:
-
왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
-
설정 > 병합 요청을 선택합니다.
-
GitLab 16.4 및 이전 버전에서는 병합 방법 섹션에서 병합 커밋이 선택되어 있는지 확인합니다.
GitLab 16.5 및 이후 버전에서는 어떤 병합 방법을 사용해도 됩니다.
-
병합 옵션 섹션에서 병합된 결과 파이프라인 활성화가 활성화되어 있는지 확인하고 병합 트레인 활성화를 선택합니다.
-
변경 사항 저장을 선택합니다.
병합 트레인 시작
전제 조건:
- 대상 브랜치에 병합하거나 푸시할 권한이 있어야 합니다.
병합 트레인을 시작하려면:
-
병합 요청으로 이동합니다.
-
선택합니다:
-
파이프라인이 실행 중이지 않을 때, 병합.
-
파이프라인이 실행 중일 때, 자동 병합 설정.
-
병합 요청의 병합 트레인 상태는 파이프라인 위젯 아래에 새로운 병합 트레인이 시작되었으며 이 병합 요청이 대기열의 첫 번째입니다. 병합 트레인 세부 정보를 보세요.
와 비슷한 메시지로 표시됩니다. 링크를 선택하여 병합 트레인을 확인할 수 있습니다.
다른 병합 요청을 이제 트레인에 추가할 수 있습니다.
병합 트레인 보기
- 병합 트레인 시각화는 GitLab 17.3에서 도입되었습니다.
병합 트레인을 보아 대기열의 병합 요청의 순서와 상태를 보다 잘 이해할 수 있습니다.
병합 트레인 세부 정보 페이지에는 대기열의 활성 병합 요청과 트레인의 일부였던 병합된 병합 요청이 표시됩니다.
병합 요청 목록에서 병합 트레인 세부정보에 접근하려면:
-
왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
-
코드 > 병합 요청을 선택합니다.
-
병합 요청 목록 상단에서 병합 트레인을 선택합니다.
-
선택 사항. 대상 브랜치별로 병합 트레인을 필터링합니다.
여기에서 병합 트레인 세부 정보를 확인할 수 있습니다:
-
병합 트레인에 추가된 병합 요청의 파이프라인 위젯 및 시스템 노트에서 병합 트레인 세부정보 보기를 선택하여.
-
병합 트레인 파이프라인의 파이프라인 세부정보 페이지에서.
병합 트레인 세부정보 뷰에서 병합 요청을 제거()할 수도 있습니다.
머지 트레인에 머지 요청 추가
사전 요구 사항:
- 대상 브랜치에 머지 또는 푸시할 권한이 있어야 합니다.
머지 요청을 머지 트레인에 추가하려면:
- 머지 요청을 방문합니다.
- 선택하십시오:
- 파이프라인이 실행되고 있지 않은 경우, 병합.
- 파이프라인이 실행 중인 경우, 자동 병합으로 설정.
머지 요청의 머지 트레인 상태는 파이프라인 위젯 아래에 이 머지 요청은 큐의 3개 중 2개입니다.
와 같은 메시지로 표시됩니다.
각 머지 트레인은 최대 20개의 파이프라인을 동시에 실행할 수 있습니다. 머지 트레인에 20개 이상의 머지 요청을 추가하면, 추가 머지 요청은 파이프라인이 완료될 때까지 대기열에 대기합니다. 머지 트레인에 합류를 기다리는 대기 머지 요청의 수에는 제한이 없습니다.
머지 트레인에서 머지 요청 제거
머지 트레인에서 머지 요청을 제거하면:
- 제거된 머지 요청 뒤에 대기 중인 모든 머지 요청의 파이프라인이 재시작됩니다.
- 중복 파이프라인은 취소됩니다.
나중에 머지 요청을 다시 머지 트레인에 추가할 수 있습니다.
머지 요청을 머지 트레인에서 제거하려면:
- 머지 요청에서 자동 병합 취소를 선택합니다.
- 머지 트레인 세부정보에서, 머지 요청 옆의 {닫기}를 선택합니다.
머지 트레인을 건너뛰고 즉시 머지
우선 순위가 높은 머지 요청이 있는 경우, 즉시 머지가 필요한 중요한 패치와 같은 경우, 즉시 병합을 선택할 수 있습니다.
머지 요청을 즉시 병합하면:
- 머지 요청의 커밋이 병합되며, 머지 트레인의 상태는 무시됩니다.
- 트레인에 있는 모든 다른 머지 요청의 머지 트레인 파이프라인은 취소됩니다.
-
새 머지 트레인이 시작되고 원래 머지 트레인의 모든 머지 요청이 이 새 머지 트레인에 추가됩니다.
각 머지 요청마다 새로운 머지 트레인 파이프라인이 생성됩니다. 이 새로운 머지 트레인 파이프라인은 즉시 병합된 머지 요청에서 추가된 커밋을 포함합니다.
경고: 즉시 병합하면 많은 CI/CD 리소스를 사용할 수 있습니다. 이 옵션은 중요한 상황에서만 사용하십시오.
참고: 프로젝트가 빠른 병합 방법을 사용하는 경우 및 소스 브랜치가 대상 브랜치보다 뒤쳐져 있는 경우 즉시 병합 옵션을 사용할 수 없습니다. 자세한 내용은 이슈 434070를 참조하십시오.
머지 트레인을 건너뛰어 즉시 병합하도록 허용
세부정보: 상태: 실험
- GitLab 16.5에서 소개됨
merge_trains_skip_train
라는 플래그와 함께. 기본적으로 비활성화되어 있습니다.- GitLab 16.10에서 실험 기능으로 활성화됨.
플래그:
셀프 관리 GitLab에서는 이 기능이 기본적으로 제공됩니다. 이 기능을 숨기려면,
관리자가 merge_trains_skip_train
이라는 기능 플래그를 비활성화
할 수 있습니다. GitLab.com 및 GitLab Dedicated에서는 이 기능이 제공됩니다.
머지 요청을 전체적으로 재시작하지 않고도 병합할 수 있도록 허용할 수 있습니다. 이 기능은 파이프라인을 안전하게 건너뛸 수 있는 변경 사항을 빠르게 병합하는 데 사용됩니다. 예를 들어 경미한 문서 업데이트와 같이 말입니다.
빠른 병합 또는 반선형 병합 방법에 대해 머지 트레인을 건너뛸 수 없습니다. 자세한 정보는 이슈 429009를 참조하십시오.
머지 트레인을 건너뛰는 것은 실험적 기능입니다. 향후 릴리스에서 변경되거나 완전히 제거될 수 있습니다.
경고: 이 기능을 사용하여 보안 또는 버그 수정을 빠르게 병합할 수 있지만, 건너뛰어진 머지 요청의 변경 사항은 트레인 내 다른 머지 요청에 대해 검증되지 않습니다. 이러한 다른 머지 트레인 파이프라인이 성공적으로 완료되고 병합되면, 결합된 변경 사항이 호환되지 않을 위험이 있습니다. 이 경우 대상 브랜치는 새로운 실패를 해결하기 위해 추가 작업이 필요할 수 있습니다.
사전 요구 사항:
- 유지 관리자 역할이 있어야 합니다.
- 머지 트레인 활성화가 필요합니다.
파이프라인 재시작 없이 트레인을 건너뛰도록 활성화하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 설정 > 머지 요청을 선택합니다.
- 머지 옵션 섹션에서 병합 결과 파이프라인 활성화 및 머지 트레인 활성화 옵션이 활성화되어 있는지 확인합니다.
- 머지 트레인 건너뛰기 허용을 선택합니다.
- 변경 내용 저장을 선택합니다.
머지 트레인을 건너뛰어 머지 요청을 병합하려면, 머지 요청 병합 API 엔드포인트를 사용하여 skip_merge_train
속성을 true
로 설정하여 머지합니다.
머지 요청이 병합되고 기존 머지 트레인 파이프라인은 취소되거나 재시작되지 않습니다.
문제 해결
병합 요청이 병합 기차에서 제외됨
병합 기차 파이프라인이 실행되는 동안 병합 요청이 병합 불가능해지면, 병합 기차는 자동으로 병합 요청을 제외합니다. 예를 들어, 이는 다음으로 인해 발생할 수 있습니다:
- 병합 요청을 초안으로 변경하는 경우.
- 병합 충돌.
- 해결되지 않은 새 대화 스레드가 있을 때, 모든 스레드는 해결되어야 합니다.
병합 요청이 병합 기차에서 제외된 이유는 시스템 노트에서 확인할 수 있습니다. 개요 탭의 활동 섹션에서 다음과 유사한 메시지를 확인하세요:
사용자가 이 병합 요청을 병합 기차에서 제거했습니다 ...
자동 병합을 사용할 수 없음
병합 기차가 활성화된 경우, 자동 병합(이전 명칭 파이프라인 성공시 병합)을 사용하여 병합 기차를 건너 뛸 수 없습니다.
자세한 내용은 문제 12267를 참조하세요.
병합 기차 파이프라인을 다시 시도할 수 없음
병합 기차 파이프라인이 실패하면, 해당 병합 요청은 기차에서 제외되므로 실패 후 파이프라인을 다시 시도할 수 없습니다.
병합 기차 파이프라인은 병합 요청의 변경 사항과 이미 기차에 올라탄 다른 병합 요청의 변경 사항의 병합 결과에서 실행됩니다.
병합 요청이 기차에서 제외되면, 병합 결과가 오래되어 파이프라인을 다시 시도할 수 없습니다.
다음과 같은 조치를 취할 수 있습니다:
재시도가 성공하면 병합 요청은 병합 기차에서 제거되지 않습니다.
병합 기차에 추가할 수 없음
파이프라인은 성공해야 합니다가 활성화되어 있지만, 최신 파이프라인이 실패하면:
- 자동 병합 설정 또는 병합 옵션이 제공되지 않습니다.
- 병합 요청에
이 병합 요청의 파이프라인이 실패했습니다. 작업을 다시 시도하거나 문제를 해결하기 위해 새 커밋을 푸시하십시오.
라는 메시지가 표시됩니다.
병합 요청을 병합 기차에 다시 추가하기 전에 다음을 시도할 수 있습니다:
- 실패한 작업을 다시 시도합니다. 성공하면, 다른 작업이 실패하지 않은 경우 파이프라인이 성공으로 표시됩니다.
- 전체 파이프라인을 다시 실행합니다. 파이프라인 탭에서 파이프라인 실행을 선택합니다.
- 문제를 해결하는 새 커밋을 푸시하여 새로운 파이프라인을 트리거합니다.
자세한 내용은 관련 문제를 참조하세요.