GitLab 프로젝트 파이프라인
GitLab 프로젝트(`gitlab-org/gitlab`)의 CI/CD 파이프라인 구성, 예측 테스트 선택, 병렬화, 호환성 테스트 등을 설명합니다.
gitlab-org/gitlab ( dev 인스턴스 포함)의 파이프라인은 일반적인 .gitlab-ci.yml 에 구성되어 있으며, 유지 관리를 편리하게 하기 위해 .gitlab/ci/ 하위 파일들을 포함합니다. 우리는 가능한 한 GitLab CI/CD 기능과 모범 사례 를 dogfood 하기 위해 노력합니다. dev.gitlab.com 인스턴스에 미러링되지 않은 CI/CD 컴포넌트 는 gitlab-org/gitlab 파이프라인에서 사용하지 마세요. CI/CD 컴포넌트는 서로 다른 인스턴스 간에 작동하지 않으며, 해당 인스턴스에 존재하지 않으면 dev.gitlab.com 미러에서 파이프라인 실패를 유발합니다 . 파이프라인 티어 # 머지 리퀘스트는 일반적으로 여러 CI/CD 파이프라인을 실행합니다. 머지 리퀘스트가 승인 프로세스에서 어느 단계에 있는지에 따라 다른 종류의 파이프라인이 트리거됩니다. 이러한 파이프라인 종류를 파이프라인 티어 라고 합니다. 현재 세 가지 티어가 있습니다: pipeline::tier-1 : 머지 리퀘스트에 승인이 없는 경우 pipeline::tier-2 : 머지 리퀘스트에 하나 이상의 승인이 있지만 아직 더 많은 승인이 필요한 경우 pipeline::tier-3 : 머지 리퀘스트에 필요한 모든 승인이 완료된 경우 일반적으로 파이프라인 티어가 낮을수록 파이프라인 속도가 빨라야 합니다. 파이프라인 티어가 높을수록 더 많은 테스트를 실행하여 더 높은 신뢰도를 제공해야 합니다. 구현에 대한 자세한 내용은 MR 파이프라인에서 "티어" 도입 에픽을 참조하세요. 머지 리퀘스트 승인 전 예측 테스트 job # 파이프라인 비용을 줄이고 job 실행 시간을 단축하기 위해, 머지 리퀘스트가 승인되기 전에 파이프라인은 해당 머지 리퀘스트 변경 사항에서 실패할 가능성이 높은 RSpec 및 Jest 테스트의 예측 집합을 실행합니다. 머지 리퀘스트가 승인된 후에는 파이프라인에 전체 RSpec 및 Jest 테스트가 포함됩니다. 이를 통해 머지 리퀘스트가 병합되기 전에 모든 테스트가 실행되었는지 확인합니다. GitLab 프로젝트 테스트 의존성 개요 # 예측 테스트 job이 어떻게 실행되는지 이해하려면 GitLab 코드(프론트엔드 및 백엔드)와 각 테스트(Jest 및 RSpec) 간의 의존성을 이해해야 합니다. 이 의존성은 다음 다이어그램으로 시각화할 수 있습니다: flowchart LR subgraph frontend fe["Frontend code"]--tested with-->jest end subgraph backend be["Backend code"]--tested with-->rspec end be--generates-->fixtures["frontend fixtures"] fixtures--used in-->jest 요약하면: RSpec 테스트는 백엔드 코드에 의존합니다. Jest 테스트는 프론트엔드 및 백엔드 코드 모두에 의존하며, 후자는 프론트엔드 픽스처를 통해 의존합니다. detect-tests CI job # gitlab-or