Omnibus-GitLab에서 테스트 보고서 생성

allure-report를 생성하는 동안 다음 세 가지 파이프라인이 생성됩니다.

  • Omnibus 파이프라인
  • TRIGGERED_CE/EE_PIPELINE 자식 파이프라인 (수동으로 트리거됨)
  • QA-SUBSET-TEST 자식 파이프라인

Omnibus MR 파이프라인

Omnibus-GitLab 프로젝트 MR 파이프라인은 두 가지 방법으로 트리거될 수 있습니다.

  • 파이프라인을 수동으로 실행
  • MR이 존재하고 커밋이 리포지토리에 푸시됨

파이프라인의 테스트는 현재 수동으로 다음을 통해 트리거됩니다.

  • Trigger:ce-package 작업
  • Trigger:ee-package 작업

Trigger:ce/ee-package 작업

이 작업은 generate-facts 작업이 완료된 후 수동으로 트리거될 수 있습니다. 이 작업을 트리거하면 자식 파이프라인이 생성됩니다.

자식 파이프라인은 Omnibus-GitLab 리포지토리에 생성된 TRIGGERED_CE/EE_PIPELINE입니다.

TRIGGERED_CE/EE_PIPELINE 자식 파이프라인

이 자식 파이프라인은 qa-subset-test라는 작업으로 구성되어 있으며, 이는 주요 GitLab 프로젝트의 test-on-omnibus/main.gitlab-ci.yml 파일을 사용합니다.

qa-subset-test 작업

qa-subset-test 작업은 Omnibus-GitLab 리포지토리에서 또 다른 자식 파이프라인을 트리거합니다.

MR에 주석으로 allure 보고서 스냅샷을 가져오려면 다음 환경 변수를 qa-subset-test에 전달해야 합니다.

환경 변수 설명
GITLAB_AUTH_TOKEN 이는 Danger 봇이 omnibus-gitlab 리포지토리에 주석을 게시할 수 있도록 하는 데 사용됩니다. 우리는 $DANGER_GITLAB_API_TOKEN을 사용하고 있으며, 이는 omnibugs-gitlab에서 Danger 봇 관련 접근에 사용됩니다. ci-variable에서 언급된 바와 같습니다.
ALLURE_MERGE_REQUEST_IID 이는 e2e-test-report-job에서 사용될 MR ID를 나타내며, 이는 allure-report-publisher를 사용하여 제공된 ID로 MR에 메시지를 게시합니다. 예: !6190

qa-remaining-test-manual

qa-remaining-test-manual 작업은 수동으로 트리거되는 파이프라인입니다. 이는 qa-subset-test와 동일한 파이프라인을 트리거하지만 qa-subset-test 작업의 일환으로 실행되지 않은 테스트를 실행합니다.

qa-subset-test에서 사용되는 환경 변수는 allure 보고서를 생성하는 데 사용되는 환경 변수와 동일합니다.

QA-SUBSET-TEST 자식 파이프라인

이 파이프라인은 GitLab QA 프로젝트를 사용하여 모든 조정된 테스트의 하위 집합을 실행하며, 이는 각 실행된 테스트에 대한 보고서 소스 파일을 생성하고 공용 폴더에 파일을 저장합니다. instance, decomposition-single-db, decomposition-multiple-db, praefect와 같은 특정 조정 작업은 처음에 전체 스위트를 실행했던 스모크 테스트만 실행합니다.

e2e-test-report 작업

e2e-test-report 작업은 .generate-allure-report-base 작업을 포함하며, 이는 allure-report-publisher 젬을 사용하여 언급된 폴더에 있는 모든 보고서를 하나의 보고서로 집계하고 이를 s3 버킷에 업로드합니다.

또한 ALLURE_MERGE_REQUEST_IID 변수에 전달된 ID를 가진 MR에 대해 주석으로 allure 보고서를 게시합니다.

allure-report-publisher는 백엔드에서 allure를 사용하는 젬입니다. 이는 GitLab을 위해 보고서를 업로드하고 MR에 주석을 게시하도록 설계되었습니다.

Omnibus MR 파이프라인에서 QA의 전체 흐름은 다음과 같습니다.

%%{init: {'theme':'base'}}%% graph TD B0 --->|각 커밋마다 MR 파이프라인 트리거됨| A0 A0 ---->|자식 파이프라인 생성| A1 A1 ---->|자식 파이프라인 생성| A2 A2 -->|"테스트가 성공하면 <br> e2e-test-report 작업 호출"| B1 B2 -.-|포함| B1 B1 -->|실행| C1 A3 -.-|포함| A1 C1 -.->|보고서 업로드| C2 C1 -.->|MR에 보고서 링크 주석으로 게시| B0 C3 -.->|가져옴| B2 subgraph Omnibus 파이프라인의 QA 흐름 subgraph Omnibus 부모 파이프라인 B0((병합 <br> 요청)) A0["`**_trigger-package_** 단계 <br> 수동 **_Trigger:ce/ee-package_** 작업 시작됨`"] end subgraph Trigger:CE/EE-job 자식 파이프라인 A1["`**_trigger-qa_** 단계 <br> **_qa-subset-test_** 작업`"] A3(["`_test-on-omnibus/main.gitlab-ci.yml_ <br> from _gitlab-org/gitlab_`"]) end subgraph qa-subset-test 자식 파이프라인 A2["`from <br> **_test-on-omnibus/main.gitlab-ci.yml_** in **_gitlab-org/gitlab_**`"] B1["`**_report_** 단계 <br> **_e2e-test-report_** 작업`"] B2(["`_.generate-allure-report-base_ 작업 from<br> _quality/pipeline-common_`"]) C1["`**_allure-report-publisher_** 젬`"] C2[("`AWS S3 <br> **_gitlab-qa-allure-report_** <br> in <br> **_eng-quality-ops-ci-cd-shared-infra_** <br> 프로젝트`")] C3["`가져옴 <br> 이미지 _andrcuns/allure-report-publisher:1.6.0_`"] end end

Allure 보고서 및 QA 파이프라인 데모

파이프라인과 Allure 보고서를 사용하는 방법에 대한 심층 비디오 워크스루는 YouTube에서 확인할 수 있습니다.