Continuous Testing と CircleCI Orb
概要
Datadog CircleCI orb を使用して、CircleCI パイプラインで Synthetic テストを実行します。
CircleCI コマンド orb は datadog-ci をインストールし、datadog-ci synthetics run-tests
コマンドで Datadog Synthetic テストを実行するものです。
セットアップ
始めるには
- Datadog の API キーとアプリケーションキーを環境変数として CircleCI プロジェクトに追加します。詳しくは、API とアプリケーションキーを参照してください。
- orb を実行しているイメージが、cURL がインストールされた Linux x64 のベースイメージであることを確認します。
run-tests.yml
ファイルを作成し、命名規則に従ってワークフローの入力を指定することで、ワークフローをカスタマイズします。
ワークフローはシンプルまたは複雑にすることができます。
シンプルの使用
公開 ID を使用した orb 使用の例
version: 2.1
orbs:
synthetics-ci: datadog/synthetics-ci-orb@3.18.0
jobs:
e2e-tests:
docker:
- image: cimg/base:stable
steps:
- synthetics-ci/run-tests:
public_ids: 'abc-d3f-ghi, jkl-mn0-pqr'
workflows:
run-tests:
jobs:
- e2e-tests
グローバルコンフィグレーションのオーバーライドを使用した orb 使用の例
この orb では、テストファイルのパターンへのパスがオーバーライドされます。
version: 2.1
orbs:
synthetics-ci: datadog/synthetics-ci-orb@3.18.0
jobs:
e2e-tests:
docker:
- image: cimg/base:stable
steps:
- synthetics-ci/run-tests:
files: e2e-tests/*.synthetics.json
workflows:
run-tests:
jobs:
- e2e-tests
Synthetic テストをトリガーするパイプラインの別の例については、simple-example.yml
ファイルを参照してください。
複雑の使用
test_search_query
を使用した orb 使用の例
version: 2.1
orbs:
synthetics-ci: datadog/synthetics-ci-orb@3.18.0
jobs:
e2e-tests:
docker:
- image: cimg/base:stable
steps:
- synthetics-ci/run-tests:
test_search_query: 'tag:e2e-tests'
workflows:
run-tests:
jobs:
- e2e-tests
version: 2.1
orbs:
synthetics-ci: datadog/synthetics-ci-orb@3.18.0
jobs:
e2e-tests:
docker:
- image: your-image
steps:
- checkout
- run:
name: Running server in background
command: npm start
background: true
- synthetics-ci/run-tests:
config_path: tests/tunnel-config.json
files: tests/*.synthetics.json
test_search_query: 'tag:e2e-tests'
tunnel: true
workflows:
test-server:
jobs:
- build-image
- integration-tests:
requires:
- build-image
CircleCI パイプラインの pollingTimeout
をカスタマイズするなどの追加オプションについては、CI/CD インテグレーション構成を参照してください。ローカルサーバーを起動し、Continuous Testing Tunnel を使用して Synthetic テストをトリガーする別のサンプルパイプラインについては、advanced-example.yml
ファイルを参照してください。
入力
ワークフローをカスタマイズするために、run-tests.yml
ファイルに以下のパラメーターを設定することができます。
名前 | タイプ | デフォルト | 説明 |
---|
api_key | 環境変数名 | DATADOG_API_KEY | API キーが格納されている環境変数名。 |
app_key | 環境変数名 | DATADOG_APP_KEY | APP キーが格納されている環境変数名。 |
background | ブール値 | false | Whether or not this step should run in the background. See official CircleCI documentation. |
batch_timeout | 数値 | 30 分 | The duration (in milliseconds) after which the batch fails as timed out. The default is 30 minutes. |
config_path | 文字列 | datadog-ci.json | テストを起動する際に使用するグローバルな JSON 構成。 |
fail_on_critical_errors | ブール値 | false | テストがトリガーされなかったか、結果を取得できなかった場合に失敗します。 |
fail_on_missing_tests | ブール値 | false | パブリック ID (public_ids を使用するか、テストファイルにリストされている) を持つ指定されたテストが少なくとも 1 つ実行中に見つからない場合 (例えば、プログラム上または Datadog サイトで削除された場合)、失敗します。 |
fail_on_timeout | ブール値 | true | テストタイムアウトを超えた場合、CI を強制的に失敗 (または合格) させます。 |
files | 文字列 | {,!(node_modules)/**/}*.synthetics.json | A list of glob patterns to detect Synthetic tests config files, separated by new lines. |
junit_report | 文字列 | なし | JUnit レポートを生成したい場合のファイル名。 |
locations | 文字列 | テストファイルの値 | テストが実行される場所をオーバーライドするための、セミコロンで区切られた場所の文字列。 |
no_output_timeout | 文字列 | 30 分 | Elapsed time the command can run without output. The string is a decimal with unit suffix, such as “20m”, “1.25h”, “5s”. See official CircleCI documentation. |
polling_timeout | 数値 | 30 分 | DEPRECATED in favor of batch_timeout. The duration (in milliseconds) after which the action stops polling for test results. At the CI level, test results completed after this duration are considered failed. |
public_ids | 文字列 | テストファイルの値 | A list of test IDs for Synthetic tests you want to trigger, separated by new lines or commas. |
site | 文字列 | datadoghq.com | データ送信先となる Datadog のサイト。環境変数 DD_SITE が設定されている場合は、そちらが優先されます。 |
subdomain | 文字列 | app | Datadog アプリケーションにアクセスするために設定されたカスタムサブドメインの名前。 |
test_search_query | 文字列 | なし | 検索クエリに対応するテストをトリガーします。 |
tunnel | ブール値 | false | Continuous Testing Tunnel を使用してテストをトリガーします。 |
variables | 文字列 | なし | A list of global variables to use for Synthetic tests, separated by new lines or commas. For example: START_URL=https://example.org,MY_VARIABLE="My title" . |
CircleCI パイプラインの追加オプションについては、Continuous Testing と CI/CD インテグレーション構成を参照してください。
参考資料
お役に立つドキュメント、リンクや記事: