CLIを使用したアーティファクトの管理¶
プレミアム機能
Workload APIはプレミアム機能です。 この機能を有効にする方法については、DataRobotの担当者または管理者にお問い合わせください。
dr artifactコマンドグループは、ターミナルからワークロードアーティファクト、サーバー側のイメージビルド、およびそれらを支えるローカルコードを管理します。 コマンドの構成は以下のとおりです。
dr artifact <command> [flags]
このグループは、3つのサブコマンドグループに分かれています。
| サブコマンド | 説明 |
|---|---|
dr artifact |
サーバー上でアーティファクトを作成、一覧表示、検査、ロック、および削除します。 |
dr artifact build |
アーティファクトにおいて、サーバー側のイメージビルドをトリガー、監視、および検査します。 |
dr artifact code |
ローカルのプロジェクトディレクトリをアーティファクトにリンクし、コードを双方向に同期します。 |
Codeコマンドの状態ディレクトリ
codeのコマンドは、プロジェクトのルートにある.wapi/状態ディレクトリを管理し、各ディレクトリがどのアーティファクト、カタログ、バージョンに紐付けられているかを追跡します。 このモデルは概念的に.git/に似ています。つまり、ローカルでの作業はプロジェクトのルートで行われ、.wapi/は各操作でのドリフトを検出するために使用されるリモートバインディングと最後に同期された状態を記録します。
開始する前に、コマンドグループを有効にし、認証を行います。 dr artifactおよびdr workloadはデフォルトでは非表示になっています。1つの環境変数を設定することで、両方を有効にできます。
export DATAROBOT_CLI_FEATURE_WORKLOAD=true
dr auth login
以下は、これらのコマンドを使用した典型的なコードからワークロードへのフローです。
# Create the artifact on the server
dr artifact create --spec-file spec.json
# Link a local directory to it (use the printed ID)
dr artifact code init <artifact-id>
# Upload code and let sync fill in the codeRef
dr artifact code sync
# Build the container image server-side and wait for completion
dr artifact build create <artifact-id> --wait
# Lock the artifact for production
dr artifact lock <artifact-id>
詳細については、サブコマンドにある各サブコマンドの詳細なドキュメントを参照してください。
Subcommands¶
| サブコマンド | 説明 |
|---|---|
dr artifact create |
JSONまたはYAMLの仕様ファイルからワークロードアーティファクトを作成します。 |
dr artifact list |
必要に応じてフィルターを設定して、ワークロードアーティファクトを一覧表示します。 |
dr artifact get |
ID指定で単一のワークロードアーティファクトの詳細を表示します。 |
dr artifact delete |
ID指定でワークロードアーティファクトを削除します。 |
dr artifact lock |
ドラフトアーティファクトをロックし、変更不可にします。 |
dr artifact build create |
アーティファクトにおいて、サーバー側のイメージビルドをトリガーします。 |
dr artifact build get |
ID指定で単一のビルドの詳細を表示します。 |
dr artifact build list |
アーティファクトのビルドを一覧表示します。 |
dr artifact build logs |
特定のビルドのビルドログを出力します。 |
dr artifact code init |
プロジェクトディレクトリを既存のワークロードアーティファクトにリンクします。 |
dr artifact code sync |
このディレクトリとリンクされたアーティファクトの間で、ローカルでの編集内容をプッシュし、リモートでの変更内容をプルします。 |
dr artifact code versions |
このプロジェクトディレクトリがリンクされているアーティファクトのカタログバージョン履歴を一覧表示します。 |
dr artifact code checkout |
特定のカタログバージョンを.wapi/.checkouts/<version-id>/にダウンロードし、読み取り専用で確認できるようにします。 |
dr artifact create¶
JSONまたはYAMLの仕様ファイルからワークロードアーティファクトを作成します。
dr artifact create --spec-file <path> [--output-format text|json]
| 引数/フラグ | 説明 |
|---|---|
--spec-file <path> |
JSONまたはYAMLの仕様ファイルへのパス。 必須。 |
--output-format <text\ | json> |
出力形式。 デフォルトはtextです。 |
仕様ファイルの形式¶
仕様ファイルでは、ワークロードアーティファクトが定義されています。 JSON形式とYAML形式の両方がサポートされています。 まずは、以下の例を参照してください。
{
"name": "my-agent",
"spec": {
"containerGroups": [{
"containers": [{
"imageUri": "nginx:latest",
"port": 8080,
"primary": true
}]
}]
}
}
{
"name": "my-agent",
"spec": {
"containerGroups": [{
"containers": [{
"primary": true,
"port": 8080,
"imageBuildConfig": { "dockerfile": { "source": "provided" } }
}]
}]
}
}
{
"name": "my-agent",
"description": "Optional description shown in the DataRobot UI.",
"spec": {
"containerGroups": [{
"containers": [{
"primary": true,
"port": 8080,
"imageBuildConfig": {
"dockerfile": { "source": "provided" },
"codeRef": {
"datarobot": {
"catalogId": "67890abcdef1234567890abc",
"catalogVersionId": "67890abcdef1234567890def"
}
}
}
}]
}]
}
}
仕様ファイルの検証¶
以下の検証ルールが適用されます。
- クライアント側:
nameを空にしないでください。spec.containerGroupsには少なくとも1つのエントリーが含まれている必要があります。各グループのcontainers配列には、少なくとも1つのエントリーが含まれている必要があります。 - サーバー側:Workload APIはフィールドレベルの構造を検証し、不一致がある場合はJSONパスの詳細とともに
422を返します。 - 未知のフィールドはサーバーにそのまま渡されるため、サーバーが受け付けるフィールドであれば、ここですべて受け付けます。 仕様ファイルは厳密に解析されません。
コンテナのライフサイクル¶
以下のコンテナライフサイクルがサポートされています。
- 構築済みのイメージ — エントリーコンテナで
imageUri(およびportとprimary)を設定します。 - 提供されたDockerfileからの構築 —
imageBuildConfig.dockerfile.source = "provided"を設定して、同期されたコード内の./Dockerfileから構築します。 - 生成されたDockerfileからの構築 —
imageBuildConfig.dockerfile.source = "generated"を、executionEnvironmentId、executionEnvironmentVersionId、およびentrypointとともに設定して、サーバーがベースイメージからDockerfileを生成するようにします。
コード同期によるcodeRefの設定
dr artifact code syncを実行すると、最初のアップロード後にimageBuildConfig.codeRefが自動的に設定されます。そのため、通常、新しく作成されたアーティファクトには、コードを同期するまではcodeRefが設定されていません。
例¶
dr artifact create --spec-file spec.json
ID: 67890abcdef1234567890abc
Name: my-agent
Status: draft
Catalog ID: —
Version ID: —
Created: 2026-05-14 10:00 UTC
Updated: 2026-05-14 10:00 UTC
dr artifact create --spec-file spec.json --output-format json
{
"id": "67890abcdef1234567890abc",
"name": "my-agent",
"status": "draft",
"catalogId": "",
"versionId": "",
"createdAt": "2026-05-14T10:00:00Z",
"updatedAt": "2026-05-14T10:00:00Z"
}
dr artifact list¶
必要に応じてフィルターを設定して、ワークロードアーティファクトを一覧表示します。
dr artifact list [--limit <n>] [--status draft|locked] [--output-format text|json]
| 引数/フラグ | 説明 |
|---|---|
--limit <n> |
返されるアーティファクトの最大数。 デフォルトは100です。 正の整数にする必要があります。 |
--status <draft\ | locked> |
ステータスでフィルターします。 オプション。省略した場合は、すべてのステータスが返されます。 |
--output-format <text\ | json> |
出力形式。 デフォルトはtextです。 |
例¶
dr artifact list
枠付きの表として表示されます。
╭──────────────────────────┬───────────┬────────┬──────────────────────────┬──────────────────────────┬──────────────────────╮
│ ARTIFACT ID │ NAME │ STATUS │ CATALOG ID │ VERSION ID │ UPDATED │
├──────────────────────────┼───────────┼────────┼──────────────────────────┼──────────────────────────┼──────────────────────┤
│ 67890abcdef1234567890abc │ my-agent │ draft │ — │ — │ 2026-05-14 10:00 UTC │
│ 67890abcdef1234567890aaa │ chat-app │ locked │ 67890abcdef1234567890cat │ 67890abcdef1234567890ver │ 2026-05-13 14:32 UTC │
╰──────────────────────────┴───────────┴────────┴──────────────────────────┴──────────────────────────┴──────────────────────╯
一致するアーティファクトがない場合、テキスト出力は「アーティファクトが見つかりません。」となり、JSON出力は{"artifacts": []}となります。
dr artifact list --status draft --output-format json
{
"artifacts": [
{
"id": "67890abcdef1234567890abc",
"name": "my-agent",
"status": "draft",
"catalogId": "",
"versionId": "",
"createdAt": "2026-05-14T10:00:00Z",
"updatedAt": "2026-05-14T10:00:00Z"
}
]
}
dr artifact get¶
ID指定で単一のワークロードアーティファクトの詳細を表示します。
dr artifact get <artifact-id> [--output-format text|json]
| 引数/フラグ | 説明 |
|---|---|
<artifact-id> |
アーティファクトID。 必須。 |
--output-format <text\ | json> |
出力形式。 デフォルトはtextです。 |
例¶
dr artifact get 67890abcdef1234567890abc
ID: 67890abcdef1234567890abc
Name: my-agent
Status: draft
Catalog ID: —
Version ID: —
Created: 2026-05-14 10:00 UTC
Updated: 2026-05-14 10:00 UTC
dr artifact get 67890abcdef1234567890abc --output-format json
{
"id": "67890abcdef1234567890abc",
"name": "my-agent",
"status": "draft",
"catalogId": "",
"versionId": "",
"createdAt": "2026-05-14T10:00:00Z",
"updatedAt": "2026-05-14T10:00:00Z"
}
dr artifact delete¶
ID指定でワークロードアーティファクトを削除します。 2つのサーバー側ルールが適用されます:ロックされたアーティファクトは削除できません。また、ワークロードによってまだ参照されているドラフトアーティファクトは、ワークロードが最初に削除されるまで削除できません。
dr artifact delete <artifact-id> [-y|--yes]
| 引数/フラグ | 説明 |
|---|---|
<artifact-id> |
アーティファクトID。 必須。 |
-y, --yes |
確認プロンプトをスキップします。 |
dr artifact lock¶
ドラフトアーティファクトをロックすると、そのアーティファクトは変更不可になり、本番環境のワークロードで使用できるようになります。 ロックは元に戻せません。さらに変更を加えるには、アーティファクトのクローンを作成するか、新しいアーティファクトを作成してください。
dr artifact lock <artifact-id> [--output-format text|json]
| 引数/フラグ | 説明 |
|---|---|
<artifact-id> |
アーティファクトID。 必須。 |
--output-format <text\ | json> |
出力形式。 デフォルトはtextです。 |
ロックは元に戻せません
ロックされると、アーティファクトの名前、説明、および仕様は変更不可となり、そのアーティファクトは削除できなくなります。 さらに変更を加えるには、dr artifact createで新しいドラフトアーティファクトを作成してください。
dr artifact build create¶
アーティファクトにおいて、サーバー側のイメージビルドをトリガーします。 プラットフォームは、アーティファクトの現在のcodeRefからコンテナイメージを構築し、それをDataRobotの内部レジストリにプッシュした後、アーティファクトのimageUriにその情報を設定します。 構築できるのはドラフトアーティファクトのみです。
dr artifact build create [<artifact-id>] [--wait] [--output-format text|json]
| 引数/フラグ | 説明 |
|---|---|
<artifact-id> |
アーティファクトID。 dr artifact code initを通じてリンクされたディレクトリ内で実行する場合は省略可能です。IDは.wapi/config.jsonから読み込まれます。 |
--wait |
ビルドが最終状態(succeededまたはfailed)に達するまでポーリングを行い、失敗した場合はビルドログの末尾を出力します。 |
--output-format <text\ | json> |
出力形式。 デフォルトはtextです。 |
前提条件¶
- アーティファクトは
draftステータスである必要があります。 - アーティファクトには、少なくとも1つの同期済みカタログバージョンを指す
codeRefが含まれている必要があります。 アーティファクトにコードがない場合は、最初にdr artifact code syncを実行します。
例¶
# Trigger a build from a linked directory (no artifact-id needed)
dr artifact build create
# Trigger a build by artifact ID and return immediately
dr artifact build create 67890abcdef1234567890abc
# Trigger a build and wait for it to finish
dr artifact build create 67890abcdef1234567890abc --wait
dr artifact build get¶
ID指定で単一のビルドの詳細を表示します。
dr artifact build get <artifact-id> <build-id> [--output-format text|json]
| 引数/フラグ | 説明 |
|---|---|
<artifact-id> |
アーティファクトID。 必須。 |
<build-id> |
ビルドID。 必須。 |
--output-format <text\ | json> |
出力形式。 デフォルトはtextです。 |
dr artifact build list¶
アーティファクトのビルドを最新順に一覧表示します。
dr artifact build list <artifact-id> [--limit <n>] [--output-format text|json]
| 引数/フラグ | 説明 |
|---|---|
<artifact-id> |
アーティファクトID。 必須。 |
--limit <n> |
返されるビルドの最大数。 デフォルトは100です。 |
--output-format <text\ | json> |
出力形式。 デフォルトはtextです。 |
dr artifact build logs¶
特定のビルドのビルドログを出力します。 位置引数を1つ指定して呼び出した場合、アーティファクトIDは現在のディレクトリにある.wapi/config.jsonから読み込まれます。 2つ指定して呼び出した場合、最初の引数がアーティファクトIDとなります。
dr artifact build logs [<artifact-id>] <build-id> [--level <level>] [--output-format text|json]
| 引数/フラグ | 説明 |
|---|---|
<artifact-id> |
アーティファクトID。 リンクされたディレクトリ内で実行する場合は省略可能です。その場合、IDは.wapi/config.jsonから読み込まれます。 |
<build-id> |
ビルドID。 必須。 |
--level <level> |
表示されるログの最低レベル:debug、info、warn、error。 デフォルトはinfoです。 |
--output-format <text\ | json> |
出力形式。 デフォルトはtextです。 |
dr artifact code init¶
プロジェクトディレクトリを既存のワークロードアーティファクトにリンクします。 プロジェクトのルートに.wapi/状態ディレクトリを作成し、そのディレクトリがどのアーティファクト、カタログ、およびバージョンに関連付けられているかを記録します。 他のcodeコマンドを実行する前に必要です。
dr artifact code init [<artifact-id>] [--dir <path>] [-y|--yes] [--output-format text|json]
| 引数/フラグ | 説明 |
|---|---|
<artifact-id> |
オプションです。 対話モードで省略した場合は、プロンプトが表示されます。 |
--dir <path> |
プロジェクトのディレクトリ。 デフォルトは現在のディレクトリです。 |
-y, --yes |
対話型のプロンプトをスキップし、デフォルトを使用します。 DATAROBOT_CLI_NON_INTERACTIVE=trueを設定して有効にすることもできます。 |
--output-format <text\ | json> |
出力形式。 デフォルトはtextです。 |
前提条件¶
- そのアーティファクトはすでに存在している必要があります。
dr artifact createを使用するか、DataRobot UIで作成してください。 - アーティファクトは
draftステータスである必要があります。 ロックされたアーティファクトは変更不可です。
例¶
# Interactive: prompts for the directory
dr artifact code init 67890abcdef1234567890abc
# Non-interactive: link the current directory
dr artifact code init 67890abcdef1234567890abc --yes
# Link a sibling directory
dr artifact code init 67890abcdef1234567890abc --dir ./service
dr artifact code sync¶
このディレクトリとリンクされたアーティファクトの間で、ローカルでの編集内容をプッシュし、リモートでの変更内容をプルします。 最後に確認された状態との3方向の差分を計算し、競合を自動的に解決し(リモート側の変更が優先され、ローカルバージョンは*.LOCAL.<timestamp>という形式のコピーとして保存されます)、その結果得られたプランを1回のバージョン管理された操作で適用します。
dr artifact code sync [--dir <path>] [--dry-run | --diff] [-y|--yes] [--output-format text|json]
| 引数/フラグ | 説明 |
|---|---|
--dir <path> |
プロジェクトのディレクトリ。 デフォルトは現在のディレクトリです。 |
--dry-run |
何も書き込まずにプランを表示します。 リモート書き込みの前に終了します。 |
--diff |
プランと、ファイルごとの統合差分を表示します。 --dry-runとは同時に指定できません。 リモート書き込みの前に終了します。 |
-y, --yes |
プラン後のプロンプトを自動確認します。対話型ディレクトリプロンプトもスキップします。 |
--output-format <text\ | json> |
出力形式。 デフォルトはtextです。 |
前提条件¶
ディレクトリは、すでにdr artifact code initによってリンクされている必要があります。 そうでない場合、コマンドはnot linked: run 'dr artifact code init <artifact-id>' firstを返します。
競合の処理¶
同じファイルが両側で異なる場合、syncはリモート側のバージョンを採用し、ローカルコピーを<path>.LOCAL.<timestamp>という名前で並行して書き込むことで、自動的に解決します。 対話モードでは、競合が発生するとコマンドが一時停止するため、プランを確認して中止することができます。--yesを指定すると、プロンプトをスキップして無条件に適用します。
JSONモード¶
JSONモードでは、プランは常に最初のドキュメントとして出力されます。 --dry-runも--diffも設定されておらず、かつプランに明示的な確認が必要ない場合、実行結果は2番目のJSONドキュメントとして出力されます。
例¶
# Preview what would change
dr artifact code sync --dry-run
# Preview with per-file diffs
dr artifact code sync --diff
# Push and pull; prompt on conflicts
dr artifact code sync
# Push and pull non-interactively
dr artifact code sync --yes
dr artifact code versions¶
このプロジェクトディレクトリがリンクされているアーティファクトのカタログバージョン履歴を一覧表示します。
dr artifact code versions [--dir <path>] [--limit <n>] [--output-format text|json]
| 引数/フラグ | 説明 |
|---|---|
--dir <path> |
プロジェクトのディレクトリ。 デフォルトは現在のディレクトリです。 |
--limit <n> |
返されるバージョンの最大数。 デフォルトは100です。 正の整数にする必要があります。 |
--output-format <text\ | json> |
出力形式。 デフォルトはtextです。 |
出力¶
出力には、アーティファクトのcodeRefが現在指しているバージョンに*が付いて表示され、ローカルの.wapi/状態が最後に同期されたバージョンが報告されます。 これにより、バージョンのずれが一目でわかります。最後に同期されたバージョン以外のバージョンの横に*が付いている場合、syncを実行するとローカルファイルが更新されます。
前提条件¶
- ディレクトリは、
dr artifact code initを通じてリンクされている必要があります。 そうでない場合:not linked to an artifact. Run 'dr artifact code init <id>' first - リンクされたカタログにバージョンが存在するためには、少なくとも1回の同期が行われている必要があります。 そうでない場合:
no code has been synced yet. Run 'dr artifact code sync' first
例¶
dr artifact code versions
dr artifact code versions --limit 10
dr artifact code versions --output-format json
dr artifact code checkout¶
特定のカタログバージョンを.wapi/.checkouts/<version-id>/にダウンロードし、読み取り専用で確認できるようにします。 作業ディレクトリおよび.wapi/の同期状態は、一切変更されません。
dr artifact code checkout [<version-id>] [--dir <path>] [--clean] [-y|--yes] [--output-format text|json]
| 引数/フラグ | 説明 |
|---|---|
<version-id> |
完全なバージョン ID または一意のプレフィックス。 省略した場合(かつ--yesが設定されていない場合)、プロンプトが表示されます。 |
--dir <path> |
プロジェクトのディレクトリ。 デフォルトは現在のディレクトリです。 |
--clean |
ダウンロードする代わりに、チェックアウトディレクトリを削除します。 位置引数を指定しない場合は、すべてのチェックアウトが削除されます。位置引数を指定した場合は、一致するチェックアウトのみが削除されます。 |
-y, --yes |
対話型のプロンプトをスキップします。 |
--output-format <text\ | json> |
出力形式。 デフォルトはtextです。 |
例¶
# Prompt for a version, then download
dr artifact code checkout
# Download a specific version (full ID or any unique prefix)
dr artifact code checkout abcdef12
# Download into a different project directory
dr artifact code checkout abcdef12 --dir ./service
# Remove all checkouts
dr artifact code checkout --clean
# Remove a single checkout
dr artifact code checkout abcdef12 --clean
Error handling¶
| エラー | 原因と解決策 |
|---|---|
not authenticated |
まずdr auth loginを実行してください。すべてのdr artifactコマンドには認証が必要です。 |
invalid spec: required field 'name' is missing or empty |
仕様ファイルのnameが欠落しているか、空になっています。 空ではない文字列を追加してください。 |
invalid spec: 'spec.containerGroups' must contain at least one entry |
spec.containerGroups配列が空です。 少なくとも1つのグループを追加します。 |
file not found: <path> |
--spec-fileのパスは存在しません。 パスを確認してください。 |
invalid status "...": use draft or locked |
artifact listに渡された--statusの値は、受け入れ可能ないずれの値にも該当しません。 |
artifact <id> not found |
そのアーティファクトIDは存在しません。 dr artifact listでIDを確認してください。 |
artifact is locked (immutable); cannot init on a registered artifact |
ロックされたアーティファクトは、リンクしたり、変更を加えたりすることはできません。 dr artifact createを使用して、新しいドラフトアーティファクトを作成します。 |
not linked: run 'dr artifact code init <artifact-id>' first |
ディレクトリに.wapi/状態がありません。 まずdr artifact code initを実行します。 |
init aborted: project already linked |
ディレクトリにはすでに.wapi/状態が存在します。 dr artifact code syncを使用するか、.wapi/を削除してリンクを再設定してください。 |
no code has been synced yet. Run 'dr artifact code sync' first |
リンク先のアーティファクトには、まだカタログバージョンがありません。 syncを実行してコードをアップロードしてください。 |
Exit codes¶
| コード | Meaning |
|---|---|
0 |
Success. |
1 |
エラー(検証失敗、APIエラー、競合、未認証など)。 |
130 |
中断されました(Ctrl+C)。 |