Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Un pipeline CI/CD exécute chaque modification apportée à votre agent par le biais d’une révision de code et d’un déploiement automatisé, de sorte que les déploiements de production ne dépendent pas de l’ordinateur portable d’un développeur. Une fois le pipeline configuré, chaque fusion vers votre branche 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 documente la configuration principale du flux de travail : fédération d’identité de charge de travail, environnement GitHub et déploiement YAML. Terminez d’abord cette page, puis revenez ici pour les ajouts qui s’appliquent aux applications de l’agent.
Requirements
- Une application d’agent a été déployée au moins une fois sur Databricks Apps à l’aide du Kit de développement logiciel (SDK) Des agents OpenAI, de LangGraph ou d’une infrastructure personnalisée. Consultez Créer un agent IA et le déployer sur Databricks Apps.
- Un principal de service avec une stratégie de fédération GitHub Actions et
CAN MANAGEdans l’application. Consultez l’étape 1 : Configurer la fédération des identités de charge de travail. - L’interface CLI Databricks installée et authentifiée localement. Consultez Installer ou mettre à jour l’interface CLI Databricks.
Étape 1. Utiliser le flux de travail de démarrage
Plusieurs modèles d’agents dans databricks/app-templates sont fournis avec un .github/workflows/deploy.yml prêt à l’emploi, vous n’avez donc pas besoin d’écrire le flux de travail à partir de zéro.
- Choisissez un modèle d’agent à partir de databricks/app-templates, comme
agent-langgraphouagent-openai-agents-sdk. - Dans votre répertoire du modèle cloné, vérifiez si
.github/workflows/deploy.ymlexiste. - Configurez le flux de travail :
-
Si
deploy.ymlexiste : ouvrez-le, confirmez que l’étapedatabricks bundle runfait référence à la clé de ressource de votre bundle depuisdatabricks.yml, puis suivez les prérequis indiqués dans le commentaire d’en-tête du fichier. -
Si
deploy.ymln’existe pas : copiez-le à partir d’un modèle qui l’inclut, ou depuis l’étape 4 : ajoutez le workflow de déploiement. Ensuite, mettez à jour l’étapedatabricks bundle run <key>pour qu’elle corresponde à la clé de ressource de votre bundle.
-
Si
Étape 2. Préremplez l’ID d’expérience MLflow
Les modèles d’agent laissent MLFLOW_EXPERIMENT_ID vide dans databricks.yml. Le quickstart script le remplit localement lors de la première configuration, mais un nouveau exécuteur CI ne le fait pas. Si experiment_id est vide, databricks bundle deploy échoue avec une erreur de type Terraform (For input string: "").
Pour résoudre ce problème, validez la valeur renseignée :
- Exécutez
uv run quickstart --profile <your-profile>localement sur l’ordinateur sur lequel vous avez créé l’agent. - Vérifiez que la ressource d’expérience dans
databricks.yml(l’entrée avecname: 'experiment'sousresources.apps.<key>.resources) a maintenant un nombre numériqueexperiment_id. - Validez la modification.
L’expérience est délimitée à l’espace de travail. Par conséquent, le même ID est valide pour chaque déploiement CI ciblant cet espace de travail. Si vous effectuez un déploiement sur plusieurs espaces de travail, déclarez une expérience par cible dans databricks.yml (une par targets.<env> bloc) ou utilisez une variable groupée.
Accorder des autorisations Postgres pour les modèles de mémoire Lakebase
Les modèles d’agents avancés (agent-langgraph-advanced, agent-openai-advanced) déclarent directement dans databricks.yml une ressource Postgres Lakebase avec mise à l’échelle automatique. Avec Databricks CLI v0.295.0 et versions ultérieures, databricks bundle deploy provisionne la ressource en même temps que l’application.
La ressource DAB postgres accorde au principal de service de l’application un accès au niveau de l’espace de travail au projet Lakebase, mais Lakebase conserve une couche distincte de rôles Postgres pour l’accès à la base de données (schémas, tables et séquences). Le principal de service a besoin d’un rôle Postgres avec les privilèges appropriés avant que l’agent puisse lire ou écrire ses tables de mémoire. Consultez l’architecture d’authentification pour le modèle à deux couches.
L’octroi de ces privilèges de niveau Postgres est une configuration unique. Exécutez-le localement entre le premier bundle deploy et bundle run. CI se redéploie ensuite via le chemin standard deploy, puis run, car le rôle Postgres du principal de service persiste pendant toute la durée de vie de l’application.
Déployez l’offre groupée pour approvisionner la ressource Lakebase :
databricks bundle deploy --target prodAccordez au principal de service les privilèges de niveau Postgres dont il a besoin :
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>Pour le modèle LangGraph, passez
--memory-type langgraph. Le script prend aussi en charge--project <project> --branch <branch>pour Lakebase avec mise à l’échelle automatique, ou--instance-name <name>pour Lakebase provisionné.Démarrez l’application :
databricks bundle run <bundle-key> --target prod
Étape 3. Test de fumée de l’agent déployé
databricks bundle run se termine dès que l’exécuteur indique à l’agent de démarrer, mais le processus de l’agent peut néanmoins échouer pendant son initialisation. Après la vérification de l’état de santé de l’étape 5 : Attendez que l’application soit en bon état de fonctionnement, ajoutez à deploy.yml l’étape de test de validation rapide suivante, qui envoie une requête canary à /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."
Note
Databricks Apps accepte uniquement les jetons OAuth pour l’appel. Utiliser le jeton OAuth de l’espace de travail à partir de databricks auth token; Databricks Apps rejette tout autre type de jeton.