머지 트레인
GitLab CI/CD에서 머지 트레인으로 머지 리퀘스트를 대기열에 넣고 브랜치 충돌을 방지하는 방법을 설명합니다.
기본 브랜치에 자주 머지되는 프로젝트에서는 서로 다른 머지 리퀘스트의 변경 사항이 충돌할 수 있습니다. 머지 트레인을 사용하면 머지 리퀘스트를 대기열에 넣을 수 있습니다. 각 머지 리퀘스트는 대기열에서 앞서 있는 다른 머지 리퀘스트와 비교되어, 모두 함께 정상적으로 동작하는지 확인됩니다. 병합 결과 파이프라인 은 하나의 머지 리퀘스트 변경 사항을 대상 브랜치와 결합해 테스트합니다. 병합 결과 파이프라인은 비슷한 시점에 머지되는 다른 머지 리퀘스트를 고려하지 않습니다. 두 머지 리퀘스트가 각각 자신의 파이프라인은 통과하더라도, 두 변경 사항을 결합하면 여전히 충돌할 수 있습니다. 둘 다 머지되면 모든 파이프라인이 성공했더라도 대상 브랜치가 깨질 수 있습니다. Mermaid 다이어그램 (12줄) 소스 코드 보기 %%{init: { "fontFamily": "GitLab Sans" }}%% graph LR accTitle: Two merge requests that pass individually but conflict together accDescr: Merge request A and merge request B each pass a pipeline that tests their changes combined with the target branch alone. When both merge, the combined changes break the target branch. subgraph Without merge trains target[Target branch] --> pipeline_a[Pipeline for A: passes] target --> pipeline_b[Pipeline for B: passes] pipeline_a --> merge_both[Both merge] pipeline_b --> merge_both merge_both -.-> broken[Target branch breaks] end 머지 트레인은 대기열에서 앞서 있는 모든 머지 리퀘스트의 결합된 변경 사항과 비교해 각 머지 리퀘스트를 테스트함으로써 이러한 문제를 방지합니다. 이를 통해 충돌이 대상 브랜치에 도달하기 전에 발견됩니다. 다음에 해당하는 프로젝트라면 머지 트레인을 사용합니다. 기본 브랜치에 머지가 자주 발생하는 프로젝트 비슷한 시점에 머지 준비가 완료되는 머지 리퀘스트가 여러 개인 프로젝트 기본 브랜치의 파이프라인이 항상 성공 상태를 유지해야 하는 프로젝트 머지 트레인 워크플로 # 머지를 기다리는 머지 리퀘스트가 없는 상태에서 Merge 또는 Set to auto-merge 를 선택하면 머지 트레인이 시작됩니다. GitLab은 변경 사항이 기본 브랜치에 머지될 수 있는지 확인하는 머지 트레인 파이프라인을 시작합니다. 이 첫 번째 파이프라인은 소스 브랜치와 대상 브랜치의 변경 사항을 결합해 실행되는 병합 결과 파이프라인 과 동일합니다. 내부 병합 결과 커밋의 작성자는 머지를 시작한 사용자입니다. 첫 번째 파이프라인이 완료된 직후 머지되도록 두 번째 머