머지 트레인
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 머지 트레인은 각 머지 리퀘스트를 큐에서 앞에 있는 모든 머지 리퀘스트의 결합된 변경 사항과 함께 테스트하여 이를 방지합니다. 이를 통해 충돌이 대상 브랜치에 도달하기 전에 발견됩니다. 프로젝트가 다음에 해당하는 경우 머지 트레인을 사용하세요: 기본 브랜치에 머지가 빈번합니다 비슷한 시점에 머지 준비가 완료되는 머지 리퀘스트가 여러 개 있습니다 기본 브랜치의 파이프라인이 항상 통과 상태로 유지되어야 합니다 머지 트레인 워크플로우 # 머지 트레인은 대기 중인 머지 리퀘스트가 없을 때 머지 또는 자동 머지로 설정 을 선택하면 시작됩니다. GitLab은 변경 사항이 기본 브랜치에 머지될 수 있는지 확인하는 머지 트레인 파이프라인을 시작합니다. 이 첫 번째 파이프라인은 소스 및 대상 브랜치의 변경 사항을 함께 결합하여 실행되는 머지된 결과 파이프라인 과 동일합니다. 내부 머지 결과 커밋의 작성자는 머지를 시작한 사용자입니다. 첫 번째 파이프라인이 완료된 직후에 두 번째 머지 리퀘스트가 머지되도록 큐에 넣으려면, 머지 또는 자동 머지로 설정