Databricks AppsエージェントのCI/CDを設定する
CI/CDパイプラインは、コード レビューと自動デプロイを通じてエージェントに対するすべての変更を実行するため、本番運用のロールアウトは 1 人の開発者のラップトップに依存しません。 パイプラインが設定されると、メインブランチへのマージのたびに、Databricks Apps 上のエージェントがデプロイされ、再起動されます。
このページでは、エージェント固有の要素について説明します。Databricks AppsのCI/CDとGitHub Actionsについては、コアとなるセットアップ (ワークロード ID フェデレーション、 GitHub環境、デプロイ YAML) について説明しています。 まずそのページを完了してから、エージェントアプリに適用される追加情報を確認するためにこちらに戻ってください。
要件
- OpenAI Agents SDK、LangGraph、またはカスタムフレームワークを使用して、Databricks Appsに少なくとも一度デプロイされたエージェントアプリ。AIエージェントを作成してDatabricks Appsにデプロイする方法を参照してください。
- GitHub Actionsフェデレーション ポリシーとアプリ上の
CAN MANAGEを備えたDatabricksサービス プリンシパル。 「ステップ 1. Workload Identity フェデレーションを構成する」を参照してください。 - Databricks CLIがローカルにインストールされ、認証されました。Databricks CLI のインストールまたはアップデートを参照してください。
ステップ 1. スターターワークフローを使用する
databricks/app-templatesにあるいくつかのエージェント テンプレートには、すぐに使用できる.github/workflows/deploy.yml同梱されているため、ワークフローをゼロから記述する必要はありません。
- databricks/app-templatesからエージェントテンプレートを選択します。例えば、
agent-langgraphまたはagent-openai-agents-sdkなどです。 - クローンしたテンプレートディレクトリ内に、
.github/workflows/deploy.ymlが存在するかどうかを確認してください。 - ワークフローを設定する:
deploy.yml存在する場合 : それを開き、databricks bundle runステップがdatabricks.ymlのバンドルのリソース キーを参照していることを確認し、ファイルのヘッダー コメントの前提条件に従います。deploy.ymlが存在しない場合 : 存在するテンプレートから、またはステップ 4 からコピーします。デプロイ ワークフローを追加します。次に、バンドルのリソース キーと一致するようにdatabricks bundle run <key>ステップを更新します。
ステップ 2. MLflowエクスペリメント ID を事前に入力します
エージェントテンプレートでは、 databricks.ymlのMLFLOW_EXPERIMENT_ID空のままになります。quickstartスクリプトは初回セットアップ時にローカルでそれを埋めますが、新規の CI ランナーでは埋めません。experiment_idが空の場合、 databricks bundle deploy Terraform型エラー( For input string: "" )で失敗します。
修正するには、入力した値をコミットしてください。
- エージェントを作成したマシン上で、
uv run quickstart --profile <your-profile>ローカルで実行してください。 databricks.ymlエクスペリメント リソース (resources.apps.<key>.resourcesの下にあるname: 'experiment'のエントリ) に数値experiment_idが設定されていることを確認します。- 変更をコミットします。
エクスペリメントはワークスペースを対象とするため、そのワークスペースを対象とするすべての CI デプロイに対して同じ ID が有効です。 複数のワークスペースにデプロイする場合は、ターゲットごとのエクスペリメントをdatabricks.ymlで宣言するか ( targets.<env>ブロックごとに 1 つ)、バンドル変数を使用します。
ステップ 3. デプロイされたエージェントのスモークテスト
databricks bundle run ランナーがエージェントに起動を指示するとすぐに戻りますが、エージェントプロセスは起動中に失敗する可能性があります。ステップ 5 のヘルス チェックの後、アプリが正常になるまで待機し、カナリア リクエストを/invocationsにポストする次のスモークテスト ステップをdeploy.ymlに追加します。
- name: Smoke test invocations
env:
APP_NAME: my-agent
run: |
APP_URL=$(databricks apps get "$APP_NAME" --output json | jq -r '.url')
TOKEN=$(databricks auth token | jq -r '.access_token')
STATUS=$(curl -sS -o /tmp/canary.json -w "%{http_code}" \
-X POST "$APP_URL/invocations" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"input": [{"role": "user", "content": "ping"}], "stream": false}')
if [ "$STATUS" != "200" ]; then
echo "Smoke test failed with status $STATUS:" >&2
cat /tmp/canary.json >&2
exit 1
fi
echo "Smoke test passed."
Databricks Apps 、呼び出しにOAuthトークンのみを受け入れます。 databricks auth tokenのワークスペースOAuthトークンを使用します。 Databricks Appsは他のトークンタイプを拒否します。