Quality Gates におけるルールスコープの仕組みを理解する

概要

Quality Gates を使用すると、Datadog のシグナルに基づいてワークフローをゲートできます。ルールを作成する際にルールスコープを定義し、どのタイミングでルールを評価するかを設定できます。

特定の CI パイプラインに対して評価されるルールを絞り込むには、ルールを作成するときにカスタムスコープを追加します。この手順では、ビルド設定で datadog-ci gate evaluate コマンド--scope オプションを使用する必要があります。

例:

datadog-ci gate evaluate --scope team:backend --scope team:frontend

ルールスコープの定義

datadog-ci gate evaluate コマンドが呼び出されると、コマンドコンテキストに一致するスコープを持つルールが評価されます。これにより、backendfrontend といったチームをタグ付けしたルールだけをフィルタリングできます。

常に評価されるルールのスコープ

各スコープ (例: branch) には、含める (Include) 値と除外する (Exclude) 値を設定できます。

  • 含める (Include) 値 を設定した場合、コマンドコンテキストに含める値のいずれかが含まれていれば、そのルールは評価されます。
  • 除外する (Exclude) 値 を設定した場合、コマンドコンテキストに除外する値がいずれか含まれていると、そのルールは評価されません。

例えば、example-repository というリポジトリのうち、main ブランチを除くすべてのブランチで評価されるルールを作成したい場合、以下のようにスコープを設定します。

  1. Select when to evaluate をクリックします。
  2. Repository フィールドに example-repository と入力し、Include をクリックします。
  3. Add Filter をクリックし、Branch を選択します。
  4. Branch フィールドに main と入力し、Exclude をクリックします。
example-repository のルールスコープであり、main ブランチのルールスコープではない

ルールにスコープが含まれていない場合、そのスコープのすべての値に対して評価されます。 例えば、ルールが repository スコープを含んでいない場合、すべてのリポジトリに対して評価されます。

カスタムスコープの追加

ブランチとリポジトリに加えて、カスタムスコープを定義して、特定の CI パイプラインに対して評価されるルールをフィルターすることができます。

Quality Gates でルールスコープにカスタムスコープを追加する

ルール作成時にカスタムスコープを追加するには

  1. + Add Filter をクリックし、Custom Scope を選択します。
  2. スコープ名を team のように定義します。
  3. スコープに含まれる値や除外される値を定義します。

branchrepository スコープとは異なり、カスタムスコープは datadog-ci gate evaluate コマンド--scope オプションを使用して指定しなければなりません。

例えば、example-repository リポジトリにおいて、チームが backend の場合にのみ評価されるルールを作成できます。

  1. Select when to evaluate をクリックします。

  2. Repository フィールドに example-repository と入力し、Include をクリックします。

  3. Add Filter をクリックし、Custom scope を選択します。

  4. タグ名を入力し、Add Custom Scope をクリックします。

    example-repository と team backend のルールスコープ
  5. team フィールドに backend と入力し、Include をクリックします。

example-repository と team backend のルールスコープ

このルールは example-repository リポジトリの CI パイプラインで以下のコマンドが呼び出された場合に評価されます。

  • datadog-ci gate evaluate --scope team:backend

一方、以下のコマンドではこのルールは評価されません

  • datadog-ci gate evaluate (team が指定されていないため)
  • datadog-ci gate evaluate --scope team:api --scope team:frontend (backend 以外のチームが指定されているため)

参考資料

お役に立つドキュメント、リンクや記事: