Omnibus-GitLabでのテストレポート生成

allure-reportを生成する際には、以下の3つのパイプラインが作成されます。

  • Omnibus パイプライン
  • TRIGGERED_CE/EE_PIPELINE 子パイプライン (手動トリガー)
  • QA-TEST 子パイプライン

Omnibus MRパイプライン

Omnibus-GitLabプロジェクトのMRパイプラインは、次の2つの方法でトリガーできます。

  • 手動でパイプラインを実行
  • MR が存在し、リポジトリにコミットがプッシュされます。

パイプライン内のテストは、現在手動で

  • Trigger:ce-package ジョブ
  • Trigger:ee-package ジョブ

トリガー:ce/ee-packageジョブ

これらのジョブは、generate-facts のジョブが完了したら手動でトリガーできます。これらのジョブをトリガーすると、子パイプラインが作成されます。

子パイプラインはTRIGGERED_CE/EE_PIPELINE と呼ばれ、Omnibus-GitLabリポジトリに生成されます。

TRIGGERED_CE/EE_PIPELINE 子パイプライン

この子パイプラインは、メインのGitLabプロジェクトのpackage-and-test/main.gitlab-ci.yml ファイルを使用するqa-test というジョブで構成されています。

qa-test ジョブ

qa-test ジョブは、Omnibus-GitLabリポジトリ内の別の子パイプラインをトリガーします。 MRのコメントとしてallureレポートのスナップショットを取得するには、以下の環境変数を渡す必要があります。qa-job

環境変数説明
GITLAB_AUTH_TOKENこれはomnibus-gitlab リポジトリにコメントを投稿するために Danger bot にアクセス権を与えるために使用されます。私たちは$DANGER_GITLAB_API_TOKEN を使用しています。この変数はomnibugs-gitlab の他の Danger bot 関連のアクセスにも使用されています。
ALLURE_MERGE_REQUEST_IIDこれはe2e-test-report-jobによって使用されるMR IDを表します。e2e-test-report-jobは allure-report-publisher 、提供されたIDでMRにメッセージを投稿します。

QA-TEST 子パイプライン

このパイプラインは GitLab QA プロジェクトを使ってオーケストレーションされたテストをすべて実行し、allure gem を使って実行された各テストのレポートソースファイルを生成して共通のフォルダに保存します。

e2e-test-report ジョブ

e2e-test-report ジョブには.generate-allure-report-baseジョブが含まれています。このジョブはallure-report-publisher gem を使用して、指定されたフォルダ内のすべてのレポーターを単一のレポートに照合し、s3 バケットにアップロードします。

また、qa-test-jobの ALLURE_MERGE_REQUEST_IID 変数に渡されたIDを持つMRのコメントとしてallureレポートを投稿します。

allure-report-publisherはバックエンドで allure を使う gem です。GitLabに対応し、レポートをアップロードしてコメントをMRに投稿します。

Omnibus MRパイプラインにおけるQA全体の流れは以下の通りです。

%%{init: {'theme':'base'}}%% graph TD B0 --->|MR Pipeline Triggered on each commit| A0 A0 ---->|Creates Child Pipeline| A1 A1 ---->|Creates Child Pipelines| A2 A2 -->|"Once tests are successful <br> calls e2e-test-report job"| B1 B2 -.-|includes| B1 B1 -->|Runs| C1 A3 -.-|includes| A1 C1 -.->|uploads report| C2 C1 -.->|Posts report link as a comment on MR| B0 C3 -.->|pulls| B2 subgraph QA flow in omnibus pipeline subgraph Omnibus Parent Pipeline B0((Merge <br> Request)) A0["`**_trigger-package_** stage <br> Manual **_Trigger:ce/ee-package_** job kicked off`"] end subgraph Trigger:CE/EE-job Child Pipeline A1["`**_trigger-qa_** stage <br> **_qa-test_** job`"] A3(["`_package-and-test/main.gitlab-ci.yml_ <br> from _gitlab-org/gitlab_`"]) end subgraph qa-test Child Pipeline A2["`from <br> **_package-and-test/main.gitlab-ci.yml_** in **_gitlab-org/gitlab_**`"] B1["`**_report_** stage <br> **_e2e-test-report_** job`"] B2(["`_.generate-allure-report-base_ job from<br> _quality/pipeline-common_`"]) C1["`**_allure-report-publisher_** gem`"] C2[("`AWS S3 <br> **_gitlab-qa-allure-report_** <br> in <br> **_eng-quality-ops-ci-cd-shared-infra_** <br> project`")] C3["`pulls <br> image _andrcuns/allure-report-publisher:1.6.0_`"] end end

AllureレポートとQAパイプラインのデモ

パイプラインの詳細とAllureレポートの使い方はYouTubeでご覧いただけます。