Continuous Testing と Datadog CI Azure DevOps 拡張機能

Visual Studio Marketplace Version Build Status License

概要

SyntheticsRunTests タスクを使用すると、Azure パイプラインの構成内で Synthetic テストを実行し、Azure DevOps を使用しているすべてのチームが、ソフトウェア ライフサイクルの各段階で Synthetic テストの恩恵を受けられるようにすることができます。

利用可能な構成の詳細については、 datadog-ci synthetics run-tests のドキュメントを参照してください。

認証

サービス接続

Datadog サイトに接続するには、Datadog は SyntheticsRunTests タスクの構成時にカスタム サービス接続を設定することを推奨しています。

以下の入力が必要です。

  • Datadog site: ご利用の Datadog サイト。使用可能な値はこちらの表に記載されています。
  • Custom subdomain (デフォルト: app): Datadog 組織にアクセスするためのカスタム サブドメイン。URL が myorg.datadoghq.com の場合、カスタム サブドメインは myorg になります。
  • API key: Datadog API キー。このキーは Datadog 組織内で作成されます。
  • Application key: Datadog アプリケーション キー。このキーは Datadog 組織内で作成されます。

API キーとアプリケーションキー

  • API key: Datadog API キーです。このキーは Datadog 組織内で作成され、シークレットとして保存する必要があります。
  • Application key: Datadog アプリケーション キーです。このキーは Datadog 組織内で作成され、シークレットとして保存する必要があります。
  • Datadog サイト: ご利用の Datadog サイト。使用可能な値はこちらの表に記載されています。
  • Custom subdomain (オプション): Datadog 組織にアクセスするためのカスタム サブドメイン。URL が myorg.datadoghq.com の場合、カスタム サブドメインは myorg になります。

セットアップ

Datadog アカウントに接続するために、Azure パイプラインプロジェクトで Datadog CI サービス接続を作成します。一度作成すれば、あとはタスクにサービス接続の名前を入れるだけです。

  1. Azure Organization に Visual Studio Marketplace から Datadog Continuous Testing 拡張機能をインストールします。
  2. Datadog CI サービス接続に、または Azure パイプラインプロジェクトのシークレットとして Datadog API キーとアプリケーションキーを追加します。
  3. Azure DevOps パイプラインで、SyntheticsRunTests タスクを使用します。

タスクはシンプルまたは複雑にすることができます。

シンプルの使用

公開 ID を使用したタスク例

- task: SyntheticsRunTests@1
  displayName: Run Datadog Synthetic tests
  inputs:
    authenticationType: 'connectedService'
    connectedService: 'my-datadog-ci-connected-service'
    publicIds: |
      abc-d3f-ghi
      jkl-mn0-pqr

既存の synthetics.json ファイルを使用したタスク例

- task: SyntheticsRunTests@1
  displayName: Run Datadog Synthetic tests
  inputs:
    authenticationType: 'connectedService'
    connectedService: 'my-datadog-ci-connected-service'
    files: 'e2e-tests/*.synthetics.json'

テストファイルの例としては、この test.synthetics.json ファイルを参照してください。

認証にパイプラインシークレットを使用したタスク例

- task: SyntheticsRunTests@1
  inputs:
    authenticationType: 'apiAppKeys'
    apiKey: '$(DatadogApiKey)'
    appKey: '$(DatadogAppKey)'
    datadogSite: '$(DatadogSite)'
    subdomain: 'myorg'

複雑の使用

testSearchQuery を使用したタスク例

- task: SyntheticsRunTests@1
  displayName: Run Datadog Synthetic tests
  inputs:
    authenticationType: 'connectedService'
    connectedService: 'my-datadog-ci-connected-service'
    testSearchQuery: 'tag:e2e-tests'

testSearchQuery と変数のオーバーライドを使用したタスク例

- task: SyntheticsRunTests@1
  displayName: Run Datadog Synthetic tests
  inputs:
    authenticationType: 'connectedService'
    connectedService: 'my-datadog-ci-connected-service'
    testSearchQuery: 'tag:e2e-tests'
    variables: |
      START_URL=https://staging.website.com
      PASSWORD=$(StagingPassword)

configPath でグローバル構成ファイルを使用したタスク例

デフォルトでは、グローバル構成ファイルへのパスは datadog-ci.json です。このパスは config_path の入力値でオーバーライドすることができます。

- task: SyntheticsRunTests@1
  displayName: Run Datadog Synthetic tests
  inputs:
    authenticationType: 'connectedService'
    configPath: './global.config.json'
    connectedService: 'my-datadog-ci-connected-service'

入力

利用可能な構成の詳細については、 datadog-ci synthetics run-tests のドキュメントを参照してください。

名前説明
apiKeyDatadog API キーです。このキーは Datadog 組織内で作成され、シークレットとして保存する必要があります。
authenticationType == apiAppKeys の場合は必須
appKeyDatadog アプリケーション キーです。このキーは Datadog 組織内で作成され、シークレットとして保存する必要があります。
authenticationType == apiAppKeys の場合は必須
authenticationType(必須) 資格情報の保存・取得方法。
apiAppKeys または connectedService のいずれかになります
batchTimeoutCI バッチのタイムアウト時間をミリ秒単位で指定します。バッチがタイムアウトすると CI ジョブは失敗し、新しいテスト実行はトリガーされませんが、進行中のテスト実行は正常に完了します。
デフォルト: 1800000 (30分)
connectedServiceDatadog CI サービス接続の名前。
authenticationType == connectedService の場合は必須
configPathdatadog-ci の構成に使用されているグローバル構成ファイルへのパス。
デフォルト: datadog-ci.json
datadogSiteご利用の Datadog サイト。使用可能な値はこちらの表に記載されています。
デフォルト: datadoghq.com

に設定します (右側で正しい SITE が選択されていることを確認してください)。
failOnCriticalErrorsレート制限、認証失敗、Datadog インフラストラクチャーの問題など、通常は一過性の重大なエラーが発生した場合に CI ジョブを失敗させます。
デフォルト: false
failOnMissingTests実行するテストのリストが空であるか、リストに明示されたテストが欠けている場合に CI ジョブを失敗させます。
デフォルト: false
failOnTimeoutCI バッチがタイムアウトにより失敗した場合に CI ジョブを失敗させます。
デフォルト: true
filesSynthetic テストの構成ファイルを検出するための Glob パターン (改行区切り)。
デフォルト: {,!(node_modules)/**/}*.synthetics.json
jUnitReportJUnit レポートを生成したい場合のファイル名。
デフォルト: なし
locationsテストを実行する場所のリストをオーバーライドします (改行またはカンマ区切り)。使用可能な値は、こちらの API 応答に記載されています。
デフォルト: なし
publicIds実行する Synthetic テストの公開 ID (改行またはカンマ区切り)。値が指定されない場合、テストは Synthetic テスト構成ファイルから検出されます。
デフォルト: なし
selectiveRerun失敗したテストだけを再実行するかどうかを指定します。あるコミットでテストが既に合格している場合、それ以降の CI バッチではそのテストを再実行しません。デフォルトでは、組織のデフォルト設定が使用されます。構成でデフォルトが有効になっている場合でも、false に設定するとフル実行を強制します。
デフォルト: なし
subdomainauthenticationType == apiAppKeys の場合に、Datadog 組織にアクセスするためのカスタム サブドメイン。URL が myorg.datadoghq.com の場合、カスタム サブドメインは myorg になります。
デフォルト: app
testSearchQuery検索クエリを使用して、実行する Synthetic テストを選択します。Synthetic Tests list ページの検索バーを使ってクエリを作成し、コピー&ペーストしてください。
デフォルト: なし
variablesSynthetic テストで、既存のローカル変数とグローバル変数を上書きするか、キーと値のペアとして新しいローカル変数とグローバル変数を追加します (改行またはカンマ区切り)。例: START_URL=https://example.org,MY_VARIABLE=My title
デフォルト: なし

出力

名前説明
batchUrlCI バッチの URL。
criticalErrorsCountCI バッチ実行中に発生した重大なエラーの数。
failedCountCI バッチ実行中に失敗した結果の数。
failedNonBlockingCountCI バッチ実行中に CI をブロックすることなく失敗した結果の数。
passedCountCI バッチ実行中に合格した結果の数。
previouslyPassedCount同じコミットに対する以前の CI バッチで既に合格した結果の数。
testsNotFoundCountCI バッチの開始時に見つけられなかったテストの数。
testsSkippedCountCI バッチの開始時にスキップされたテストの数。
timedOutCountCI バッチのタイムアウトにより失敗した結果の数。
rawResultssynthetics.Result[] の配列を JSON エンコードした文字列。

参考資料

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