Aller au contenu principal

Configurer le CI/CD pour votre agent Databricks Apps

Un pipeline CI/CD exécute chaque modification apportée à votre agent via une revue de code et un déploiement automatisé, de sorte que les déploiements de production ne dépendent pas de l'ordinateur portable d'un seul développeur. Une fois le pipeline configuré, chaque Merge vers votre Branch principale déploie et redémarre votre agent sur Databricks Apps.

Cette page couvre les éléments spécifiques à l'agent. CI/CD pour Databricks Apps avec GitHub Actions décrit la configuration du workflow de base : la fédération d'identité de charge de travail, l'environnement GitHub et le YAML de déploiement. Complétez d'abord cette page, puis retournez ici pour les ajouts qui s'appliquent aux applications d'agents.

Exigences

Étape 1. Utilisez le workflow de démarrage

Plusieurs Template d'agent dans databricks/app-templates fournissent un .github/workflows/deploy.yml prêt à l'emploi, de sorte que vous n'ayez pas à écrire le workflow à partir de zéro.

  1. Choisissez un template d'agent parmi databricks/app-templates, tel que agent-langgraph ou agent-openai-agents-sdk.
  2. Dans votre répertoire de Template cloné, vérifiez si .github/workflows/deploy.yml existe.
  3. Configurez le workflow :
    • **Si deploy.yml existe** : ouvrez-le, confirmez que databricks bundle run l'étape référence la clé de ressource de votre bundle à partir databricks.yml de, et suivez les prérequis dans le commentaire d'en-tête du fichier.
    • Si deploy.yml n'existe pas : Copiez-le depuis un Template qui existe, ou depuis Étape 4. ajoutez le workflow de déploiement. Ensuite, mettez à jour l'étape databricks bundle run <key> pour correspondre à la clé de ressource de votre bundle.

Étape 2. Préremplissez l’ID de l’expérience MLflow

Les Template d'agent laissent MLFLOW_EXPERIMENT_ID vide dans databricks.yml. Le script quickstart le remplit localement lors de la première configuration, mais un nouveau runner CI ne le fait pas. Si experiment_id est vide, databricks bundle deploy échoue avec une erreur de type Terraform (For input string: "").

Pour corriger cela, commit la valeur renseignée :

  1. Exécutez uv run quickstart --profile <your-profile> localement sur la machine où vous avez créé l'agent.
  2. Vérifiez que la Ressource d'Experimentation dans databricks.yml (l'entrée avec name: 'experiment' sous resources.apps.<key>.resources) a maintenant un experiment_id numérique.
  3. commit la modification.

L'expérimentation est limitée au workspace, donc le même ID est valide pour chaque déploiement CI ciblant ce workspace. Si vous déployez sur plusieurs workspaces, déclarez une expérimentation par cible dans databricks.yml (une par bloc targets.<env>) ou utilisez une variable de bundle.

Étape 3. Effectuer un test de fumée sur l'agent déployé

databricks bundle run revient dès que le runner signale à l’agent de start, mais le processus de l’agent peut encore échouer au démarrage. Après la vérification de l’état de santé de Étape 5. Attendez que l’application soit saine, ajoutez l’étape de test de fumée suivante à deploy.yml qui envoie une requête canari à /invocations:

YAML
- 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."
remarque

Databricks Apps n'acceptent que les jetons OAuth pour l'invocation. Utilisez le jeton OAuth de databricks auth token Workspace ; les Databricks Apps rejettent tout autre type de jeton.

Ressources supplémentaires