Continuous Testing と CI GitHub アクション

概要

Datadog CI Synthetics コマンドを使って、GitHub のワークフローから Synthetic テストをトリガーすることができます。

セットアップ

始めるには

  1. Datadog API キーとアプリケーションキーを GitHub リポジトリにシークレットとして追加します。詳しくは、API とアプリケーションキーを参照してください。
  2. GitHub のワークフローで、DataDog/synthetics-ci-github-action を使用します。

ワークフローは、シンプルまたは複雑にすることができます。

シンプルなワークフロー

公開 ID を使用したワークフロー例

name: Run Synthetic tests using the test public IDs
jobs:
  e2e_testing:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Run Datadog Synthetic tests
        uses: DataDog/synthetics-ci-github-action@v0.17.0
        with:
          api_key: ${{secrets.DD_API_KEY}}
          app_key: ${{secrets.DD_APP_KEY}}
          public_ids: 'abc-d3f-ghi, jkl-mn0-pqr'

既存の synthetics.json ファイルを使用したワークフロー例

name: Run Synthetic tests using an existing synthetics.json file
jobs:
  e2e_testing:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Run Datadog Synthetic tests
        uses: DataDog/synthetics-ci-github-action@v0.17.0
        with:
          api_key: ${{secrets.DD_API_KEY}}
          app_key: ${{secrets.DD_APP_KEY}}

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

: デフォルトでは、このワークフローは {,!(node_modules)/**/}*.synthetics.json ファイルにリストされたすべてのテストを実行します (node_modules フォルダ内のものを除き、.synthetics.json で終わるすべてのファイルです)。また、public_id を指定するか、検索クエリを使って Synthetic テストのリストをトリガーすることができます。

複雑なワークフロー

test_search_query を使用したワークフロー例

name: Run Synthetic tests by test tag
jobs:
  e2e_testing:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Run Datadog Synthetic tests
        uses: DataDog/synthetics-ci-github-action@v0.17.0
        with:
          api_key: ${{secrets.DD_API_KEY}}
          app_key: ${{secrets.DD_APP_KEY}}
          test_search_query: 'tag:e2e-tests'

テスト検索クエリと変数のオーバーライドを使用したワークフロー例

name: Run Synthetic tests using search query
jobs:
  e2e_testing:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Run Datadog Synthetic tests
        uses: DataDog/synthetics-ci-github-action@v0.17.0
        with:
          api_key: ${{secrets.DD_API_KEY}}
          app_key: ${{secrets.DD_APP_KEY}}
          test_search_query: 'tag:staging'
          variables: 'START_URL=https://staging.website.com,PASSWORD=stagingpassword'

config_path によるグローバル構成オーバーライドを使用したワークフロー例

この GitHub Action は、グローバルな datadog-ci.config.json ファイルへのパスをオーバーライドします。

name: Run Synthetic tests with custom config
jobs:
  e2e_testing:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Run Datadog Synthetic tests
        uses: DataDog/synthetics-ci-github-action@v0.17.0
        with:
          api_key: ${{secrets.DD_API_KEY}}
          app_key: ${{secrets.DD_APP_KEY}}
          config_path: './synthetics-config.json'

テストファイルの例としては、この global.config.json ファイル をご覧ください。

入力

名前タイプ要件説明
api_key文字列必須Datadog API キー。このキーは Datadog 組織によって作成され、シークレットとして保存する必要があります。デフォルト: なし。
app_key文字列必須Datadog アプリケーションキー。このキーは Datadog 組織によって作成され、シークレットとして保存する必要があります。デフォルト: なし。
public_ids文字列オプショントリガーしたい Synthetic テストの公開 ID をカンマで区切ったリスト。値を指定しない場合は、synthetics.json という名前のファイルを検索します。デフォルト: なし。
test_search_query文字列オプション検索クエリに対応するトリガーテスト。デフォルト: なし。
subdomain文字列オプションDatadog アプリケーションにアクセスするために設定されたカスタムサブドメインの名前。Datadog にアクセスするための URL が myorg.datadoghq.com である場合、サブドメインの値は myorg に設定する必要があります。デフォルト: app
files文字列オプションSynthetic テストのコンフィギュレーションファイルを検出するための Glob パターン。デフォルト: {,!(node_modules)/**/}*.synthetics.json
datadog_site文字列オプションデータ送信先の Datadog サイトデフォルト: datadoghq.com
config_path文字列オプションテストを起動するときに使用されるグローバル JSON 構成。詳細はコンフィギュレーションファイル例を参照してください。デフォルト: datadog-ci.json
variables文字列オプションSynthetic テストに使用するグローバル変数をカンマで区切ったリスト。例: START_URL=https://example.org,MY_VARIABLE=My titleデフォルト: []
junit_report文字列オプションJUnit レポートを生成したい場合のファイル名。デフォルト: なし。
tunnelbooleanオプションContinuous Testing Tunnel を使用して、テストバッチを実行します。デフォルト: false
polling_timeout数値オプションアクションがテスト結果のポーリングを停止するまでの時間 (ミリ秒単位)。CI レベルでは、この時間以降に完了したテスト結果は失敗とみなされます。デフォルト: 30 分。
fail_on_critical_errorsbooleanオプションテストがトリガーされなかったり、Datadog から結果を取得できなかったりした場合に、CI ジョブを失敗させます。デフォルト: false
fail_on_missing_testsbooleanオプションパブリック ID (public_ids を使用するか、テストファイルにリストされている) を持つ指定されたテストが少なくとも 1 つ実行中に見つからない場合 (例えば、プログラム上または Datadog サイトで削除された場合)、CI ジョブを失敗させます。デフォルト: false
fail_on_timeoutbooleanオプション少なくとも 1 つのテストがデフォルトのテストタイムアウトを超えた場合、CI ジョブを失敗させます。デフォルト: true

開発



yarn test

# プロジェクト構築
yarn build

# プロジェクトとその依存関係をリリース用にコンパイルする
yarn package

プロセスのリリース

新しいバージョンの synthetics-ci-github-action をリリースするには:

  1. バージョンアップのための新しいブランチを作成します。

  2. パッケージのバージョンを更新するには、変更の内容に応じて yarn version [--patch|--minor|--major] を使ってください。何をインクリメントする必要があるかは Semantic Versioning を参照してください。yarn version コマンドを実行すると、新しいコミット vX.Y.Z と新しいタグが Git ツリーに追加されるはずです。

  3. README.md サンプルバージョンを更新し、yarn build && yarn package でプロジェクトのビルドとパッケージを行います。

    これらの変更は、必ず vX.Y.Z タグを含む同じコミット内でコミットするようにしてください。git commit --amend または git rebase -i HEAD~2 を使って、変更を同じコミットにマージすることができます。

  4. ブランチをリリースタグ (git push --tags) と一緒に上流 (GitHub) にプッシュします。

    説明で紹介した変更点を含むプルリクエストを作成します。このプルリクエストには少なくとも 1 つの承認が必要です。

  5. プルリクエストをマージします。

  6. タグページから GitHub Release を作成し、変更点を記述してください。

⚠️ リリースバージョンが期待される形式 vX.Y.Z に従っていることを確認します。

リリースが作成されると、新しいバージョンの Github Action がワークフローとして利用できるようになります。

その他の参考資料

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