Databricks AppsエージェントのCI/CDを設定する
CI/CDパイプラインでは、エージェントへのすべての変更がコードレビューと自動デプロイを経て実行されるため、本番運用でのリリースは特定の開発者のラップトップに依存しません。パイプラインが構成されると、メインブランチへのすべてのマージにより、Databricks Apps 上でエージェントがデプロイされ、再起動されます。
このページでは、エージェント固有の側面について説明します。GitHub Actions を使用した Databricks Apps の CI/CD は、主要なワークフローのセットアップ(ワークロード ID フェデレーション、GitHub 環境、およびデプロイ YAML)について文書化しています。まずそのページを完了し、その後、ここに戻ってエージェントアプリに適用される追加情報を参照してください。
要件
- OpenAI Agents SDK、LangGraph、またはカスタムフレームワークを使用してDatabricks Appsに少なくとも1回デプロイされたエージェントアプリ。AIエージェントを作成してDatabricks Appsにデプロイするを参照してください。
- GitHub Actionsフェデレーションポリシーとアプリ上の
CAN MANAGEを持つDatabricksサービスプリンシパル。ステップ1. ワークロードIDフェデレーションを構成するを参照してください。 - 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を持つようになったことを確認してください。- 変更をコミットします。
エクスペリメントはワークスペーススコープであるため、同じIDがそのワークスペースをターゲットとするすべてのCIデプロイに有効です。複数のワークスペースにデプロイする場合は、databricks.ymlにターゲットごとのエクスペリメント(各targets.<env>ブロックに1つ)を宣言するか、バンドル変数を使用してください。
ステップ 3. デプロイされたエージェントのスモークテストを実施します。
databricks bundle run ランナーがエージェントの開始を通知するとすぐに戻りますが、エージェント プロセスは起動中に失敗する場合があります。ステップ 5. アプリが正常になるまで待機するによるヘルスチェックの後、deploy.yml に次のスモークテスト ステップを追加します。これは、/invocations にカナリア リクエストを送信します:
- 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は他のトークンタイプを拒否します。