Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine CI/CD-Pipeline führt jede Änderung an Ihrem Agent durch Codeüberprüfung und eine automatisierte Bereitstellung aus, sodass Produktionsrollouts nicht von einem Laptop eines Entwicklers abhängen. Sobald die Pipeline konfiguriert ist, wird Ihr Agent bei jedem Merge in Ihren Haupt-Branch auf Databricks Apps bereitgestellt und neu gestartet.
Auf dieser Seite werden die agentspezifischen Teile behandelt. CI/CD für Databricks-Apps mit GitHub Actions dokumentiert die Einrichtung des grundlegenden Workflows: Workload Identity Federation, die GitHub-Umgebung und die Deploy-YAML-Datei. Schließen Sie diese Seite zuerst ab, und kehren Sie dann hier für die Ergänzungen zurück, die für Agent-Apps gelten.
Requirements
- Eine Agent-App, die mindestens einmal in Databricks-Apps mit dem OpenAI Agents SDK, LangGraph oder einem benutzerdefinierten Framework bereitgestellt wird. Weitere Informationen finden Sie unter Erstellen eines KI-Agenten und Bereitstellung in Databricks-Apps.
- Ein Dienstprinzipal mit einer GitHub Actions Verbundrichtlinie und
CAN MANAGEin der App. Siehe Schritt 1. Konfigurieren sie den Workload-Identitätsverbund. - Die Databricks CLI wurde lokal installiert und authentifiziert. Siehe Installieren oder Aktualisieren der Databricks CLI.
Schritt 1. Verwenden Sie den Startworkflow
Mehrere Agentvorlagen in Databricks/App-Vorlagen liefern eine einsatzbereite .github/workflows/deploy.ymlVorlage, sodass Sie den Workflow nicht von Grund auf neu schreiben müssen.
- Wählen Sie eine Agentvorlage aus databricks/app-templates, beispielsweise
agent-langgraphoderagent-openai-agents-sdk. - Überprüfen Sie im Verzeichnis der geklonten Vorlage, ob
.github/workflows/deploy.ymlvorhanden ist. - Richten Sie den Workflow ein:
-
Falls
deploy.ymlvorhanden ist: Öffnen Sie die Datei, vergewissern Sie sich, dass der Schrittdatabricks bundle runauf den Ressourcenschlüssel Ihres Bundles ausdatabricks.ymlverweist, und befolgen Sie die Voraussetzungen im Kommentar im Dateikopf. -
Wenn
deploy.ymlnicht vorhanden: Kopieren Sie sie aus einer Vorlage, die dies tut, oder aus Schritt 4. Fügen Sie den Bereitstellungsworkflow hinzu. Aktualisieren Sie dann dendatabricks bundle run <key>Schritt, um dem Ressourcenschlüssel Ihres Bundles zu entsprechen.
-
Falls
Schritt 2. Vorfüllen der MLflow-Experiment-ID
Agentvorlagen lassen MLFLOW_EXPERIMENT_ID in databricks.yml leer. Das quickstart Skript füllt es bei der Ersteinrichtung lokal aus, ein frischer CI-Runner jedoch nicht. Wenn experiment_id leer ist, schlägt databricks bundle deploy mit einem Terraform-Typfehler (For input string: "") fehl.
Um ihn zu beheben, übernehmen Sie den aufgefüllten Wert:
- Führen Sie
uv run quickstart --profile <your-profile>lokal auf dem Computer aus, auf dem Sie den Agenten erstellt haben. - Stellen Sie sicher, dass die Experiment-Ressource in
databricks.yml(der Eintrag mitname: 'experiment'unterresources.apps.<key>.resources) jetzt über eine numerischeexperiment_idverfügt. - Führen Sie für die Änderung einen Commit aus.
Das Experiment ist auf den Arbeitsbereich beschränkt, sodass dieselbe ID für jede CI-Bereitstellung gültig ist, die auf diesen Arbeitsbereich abzielt. Wenn Sie in mehreren Arbeitsbereichen bereitstellen, deklarieren Sie in databricks.yml ein Experiment pro Ziel (je eines pro targets.<env>-Block) oder verwenden Sie eine Bundle-Variable.
Gewähren von Postgres-Berechtigungen für Lakebase-Speichervorlagen
Die erweiterten Agent-Vorlagen (agent-langgraph-advanced, agent-openai-advanced) deklarieren eine automatisch skalierende Lakebase Postgres-Ressource direkt in databricks.yml. Ab Databricks CLI v0.295.0 stellt databricks bundle deploy die Ressource zusammen mit der App bereit.
Die DAB-Ressource postgres gewährt dem Service Principal der App Zugriff auf Arbeitsbereichsebene auf das Lakebase-Projekt, aber Lakebase verwendet für den Datenbankzugriff (Schemata, Tabellen und Sequenzen) eine separate PostgreSQL-Rollenebene. Der Dienstprinzipal benötigt eine Postgres-Rolle mit den richtigen Berechtigungen, bevor der Agent seine Speichertabellen lesen oder schreiben kann. Siehe Authentifizierungsarchitektur für das zweistufige Modell.
Die Gewährung dieser Berechtigungen auf Postgres-Ebene ist ein einmaliges Setup. Führen Sie den Vorgang lokal zwischen bundle deploy und bundle run aus. CI wird danach über den standardmäßigen deploy-dann-run-Pfad neu bereitgestellt, da die Postgres-Rolle des Dienstprinzipals während der gesamten Lebensdauer der App bestehen bleibt.
Stellen Sie das Bundle bereit, um die Lakebase-Ressource bereitzustellen:
databricks bundle deploy --target prodGewähren Sie dem Dienstprinzipal die Berechtigungen auf Postgres-Ebene, die er benötigt:
uv run python scripts/grant_lakebase_permissions.py \ "$(databricks apps get <app-name> --output json | jq -r '.service_principal_client_id')" \ --memory-type openai \ --autoscaling-endpoint <endpoint>Für die LangGraph-Vorlage
--memory-type langgraphübergeben. Das Skript akzeptiert auch--project <project> --branch <branch>für eine automatisch skalierte Lakebase oder--instance-name <name>für eine provisionierte Lakebase.Starten Sie die App:
databricks bundle run <bundle-key> --target prod
Schritt 3. Rauchtest des bereitgestellten Agents
databricks bundle run kehrt zurück, sobald der Runner dem Agenten signalisiert, zu starten, aber der Agentprozess kann beim Hochfahren dennoch fehlschlagen. Nach der Zustandsprüfung in Schritt 5. Warten Sie, bis die App funktionsfähig ist, fügen Sie deploy.yml den folgenden Smoke-Test-Schritt hinzu, der eine Canary-Anfrage an /invocations sendet:
- 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."
Note
Databricks-Apps akzeptieren nur OAuth-Token für Aufrufe. Verwenden Sie das Arbeitsbereich-OAuth-Token von databricks auth token; Databricks-Apps lehnen alle anderen Tokentypen ab.