このページは日本語には対応しておりません。随時翻訳に取り組んでいます。翻訳に関してご質問やご意見ございましたら、お気軽にご連絡ください。
Test Optimization is not available in the selected site () at this time.
Join the Preview!
Test optimization for Go is in Preview.
Compatibility
Supported test frameworks:
Configuring reporting method
To report test results to Datadog, you need to configure the Datadog Go library:
GitHub Actions や CircleCI など、基盤となるワーカーノードにアクセスできないクラウド CI プロバイダーを使用している場合は、Agentless モードを使用するようにライブラリを構成します。そのためには、以下の環境変数を設定します。
DD_CIVISIBILITY_AGENTLESS_ENABLED=true
(必須)- Agentless モードを有効または無効にします。
デフォルト: false
DD_API_KEY
(必須)- テスト結果のアップロードに使用される Datadog API キー。
デフォルト: (empty)
さらに、データを送信する Datadog サイトを構成します。
DD_SITE
(必須)- 結果をアップロードする Datadog サイト。
デフォルト: datadoghq.com
Jenkins や自己管理型の GitLab CI など、オンプレミスの CI プロバイダーでテストを実行している場合は、Agent のインストール手順に従って、各ワーカーノードに Datadog Agent をインストールします。
これは、テスト結果をログおよび基盤となるホストのメトリクスに自動的にリンクできるため、推奨されるオプションです。
Kubernetes エグゼキュータを使用している場合は、Datadog が Datadog Operator の使用を推奨しています。
この Operator には Datadog Admission Controller が含まれており、自動的にビルドポッドにトレーサーライブラリを注入 することができます。
注: Datadog Operator を使用する場合、Admission Controller がトレーサーライブラリのダウンロードと注入を行うため、以下のステップを省略することができます。
ただし、Test Visibility を有効にするために必要な環境変数またはコマンドラインパラメーターをポッドで設定する必要があります。
Kubernetes を使用していない、または Datadog Admission Controller を使用できない場合で、CI プロバイダーがコンテナベースのエクゼキュータを使用している場合、トレーサーを実行するビルドコンテナの DD_TRACE_AGENT_URL
環境変数 (デフォルトは http://localhost:8126
) を、そのコンテナ内からアクセス可能なエンドポイントに設定します。注: ビルドコンテナ内で localhost
を使用すると、コンテナ自体を参照し、基盤となるワーカーノードや Container Agent が動作しているコンテナを参照しません。
DD_TRACE_AGENT_URL
は、プロトコルとポート (例えば、http://localhost:8126
) を含み、DD_AGENT_HOST
と DD_TRACE_AGENT_PORT
よりも優先され、CI Visibility のために Datadog Agent の URL を構成するために推奨される構成パラメーターです。
それでも Datadog Agent への接続に問題がある場合は、Agentless Mode を使用してください。
注: この方法を使用する場合、テストはログやインフラストラクチャーメトリクスと相関しません。
Installing Orchestrion
Orchestrion is a tool to process Go source code at compilation time and automatically insert instrumentation using dd-trace-go
.
Install orchestrion
from https://github.com/datadog/orchestrion using the command:
$ go install github.com/DataDog/orchestrion@latest
Optional: project go.mod registration
You can automatically add orchestrion
to your project’s dependencies by running:
This command has the following effects:
- Create a new
orchestrion.tool.go
file containing content similar to:// Code generated by `orchestrion pin`; DO NOT EDIT.
// This file is generated by `orchestrion pin`, and is used to include a blank import of the
// orchestrion package(s) so that `go mod tidy` does not remove the requirements rom go.mod.
// This file should be checked into source control.
//go:build tools
package tools
import _ "github.com/DataDog/orchestrion"
- Run
go get github.com/DataDog/orchstrion@<current-release>
to make sure the project version corresponds to the
one currently being used - Run
go mod tidy
to make sure your go.mod
and go.sum
files are up-to-date
If you do not run this command, it is done automatically when required. Once done, the version of orchestrion
used by this project can be controlled directly using the go.mod
file, as you would control any other dependency.
Orchestrion supports the two latest releases of Go, matching Go’s official release policy. It may
function correctly with older Go releases, but Datadog cannot support older releases that do not work.
In addition to this, Orchestrion only supports projects using Go modules.
Instrumenting tests
Set the following environment variables to configure the library:
DD_CIVISIBILITY_ENABLED=true
(Required)- Enables the Test Optimization product.
DD_ENV
(Required)- Environment where the tests are being run (for example:
local
when running tests on a developer workstation or ci
when running them on a CI provider).
Prefix your go test command with orchestrion
:
$ orchestrion go test -race ./...
If you have not run orchestrion pin
, you may see a message similar to the following appear, as orchestrion pin
is automatically executed:
╭──────────────────────────────────────────────────────────────────────────────╮
│ │
│ Warning: github.com/DataDog/orchestrion is not present in your go.mod │
│ file. │
│ In order to ensure build reliability and reproductibility, orchestrion │
│ will now add itself in your go.mod file by: │
│ │
│ 1. creating a new file named orchestrion.tool.go │
│ 2. running go get github.com/DataDog/orchestrion@v0.9.4 │
│ 3. running go mod tidy │
│ │
│ You should commit the resulting changes into your source control system. │
│ │
╰──────────────────────────────────────────────────────────────────────────────╯
Alternative
Orchestrion at the core is a standard Go toolchain -toolexec
proxy. Instead of using orchestrion go
, you can
also manually provide the -toolexec
argument to go
commands that accept it:
$ go build -toolexec 'orchestrion toolexec' .
$ go test -toolexec 'orchestrion toolexec' -race .
Further reading