Développement
Développement d'applications
Cette page sert de référence CLI et de guide des flux de travail pour Databricks Apps et AppKit. Elle couvre l'ajout de plugins, la génération de projet (scaffolding), le déploiement, la gestion et le dépannage de votre application.
Chaque commande ci-dessous est présentée avec une invocation courante, la liste complète de ses options et un tableau décrivant chacune d'elles. Exécutez databricks <command> --help pour connaître le comportement actuel des options : la CLI fait foi.
Configuration locale
Copiez .env.example vers .env, puis renseignez l'URL de votre workspace et les identifiants de vos ressources avant d'exécuter npm run dev. AppKit s'appuie sur ces valeurs pour établir les connexions locales aux ressources Databricks.
Exemple de fichier .env pour une application utilisant Lakebase Postgres :
DATABRICKS_HOST=https://<workspace>.cloud.databricks.com
LAKEBASE_ENDPOINT=projects/<project>/branches/production/endpoints/primarySi votre application utilise Lakebase, accordez également le rôle databricks_superuser à votre utilisateur local avant de l'exécuter en local. Le service principal de l'application crée les schémas et les tables lors du premier déploiement et en devient propriétaire. Sans cette autorisation, votre identité locale ne peut pas accéder à ces objets :
GRANT databricks_superuser TO "<your-email>";Consultez Développement Lakebase pour découvrir le workflow complet d'accès local.
Pour tester sur des données de production sans redéployer, consultez le pont distant.
Ajouter un plugin
Pour ajouter un plugin à une application existante, importez-le et enregistrez-le dans createApp, au sein de server/server.ts :
import { createApp, genie, lakebase, server } from "@databricks/appkit";
const AppKit = await createApp({
plugins: [server(), lakebase(), genie()],
});Régénérez ensuite appkit.plugins.json avec les besoins en ressources mis à jour :
npx @databricks/appkit plugin sync --writeCette opération s'exécute automatiquement lors de npm run dev et npm run build. Commitez le fichier appkit.plugins.json mis à jour avec votre code : c'est lui qui indique au pipeline de déploiement les ressources à provisionner.
Consultez la référence des plugins AppKit pour les options de configuration de chaque plugin, ou Créer des plugins personnalisés pour ajouter les vôtres.
Découvrir les plugins
Répertoriez les plugins disponibles et les champs de ressources qu'ils requièrent :
databricks apps manifest| Option | Description |
|---|---|
--branch | Branche ou tag Git (pour les modèles GitHub, mutuellement exclusif avec --version) |
--template | Chemin du modèle (répertoire local ou URL GitHub) |
--version | Version d'AppKit pour le modèle par défaut (valeur par défaut : main, utilisez 'latest' pour la branche main) |
--debug | activer la journalisation de débogage |
--output, -o | type de sortie : text ou json (text par défaut) |
--profile, -p | profil ~/.databrickscfg |
--target, -t | bundle target à utiliser (le cas échéant) |
--var | définir les valeurs des variables déclarées dans la configuration du bundle. Exemple : --var="key=value" |
Options de scaffold
Utilisez databricks apps init pour générer le scaffold d'un nouveau projet AppKit. Le Démarrage rapide Apps présente la méthode la plus rapide. Ces options permettent un scaffolding non interactif ou avancé.
databricks apps init --name my-app| Option | Description |
|---|---|
--branch | Branche ou tag Git (pour les modèles GitHub, mutuellement exclusif avec --version) |
--deploy | Déployer l'application après sa création |
--description | Description de l'application |
--features | Fonctionnalités/plugins à activer (séparés par des virgules, tels que définis dans le manifeste du modèle) |
--output-dir | Répertoire dans lequel écrire le projet |
--run | Exécuter l'application après sa création (none, dev, dev-remote) |
--set | Définir des valeurs de ressources (format : plugin.resourceKey.field=value, plusieurs possibles) |
--skip-install | Ignorer l'installation des dépendances du projet (par ex. npm install / uv sync). Incompatible avec --run. |
--template | Chemin du modèle (répertoire local ou URL GitHub) |
--version | Version d'AppKit à utiliser (par défaut : détection automatique, utilisez 'latest' pour la branche principale) |
--debug | activer la journalisation de débogage |
--output, -o | type de sortie : text ou json (text par défaut) |
--profile, -p | profil ~/.databrickscfg |
--target, -t | bundle target à utiliser (le cas échéant) |
--var | définir les valeurs des variables définies dans la configuration du bundle. Exemple : --var="key=value" |
L'option --name désactive les invites et applique les valeurs par défaut aux options non spécifiées. Les noms d'applications doivent être en minuscules, séparés par des traits d'union et comporter au maximum 26 caractères. Exécutez databricks apps manifest pour afficher les plugins disponibles et leurs clés --set.
Configuration de l'environnement
En local (npm run dev) : les variables proviennent du fichier .env situé à la racine du projet.
Une fois déployé : les variables proviennent des entrées env de app.yaml. Utilisez value pour les chaînes de caractères simples et valueFrom pour les resource bindings :
env:
- name: LAKEBASE_ENDPOINT
valueFrom: postgres
- name: WAREHOUSE_ID
valueFrom: sql-warehouse
- name: APP_LOG_LEVEL
value: infoLes ressources référencées par valueFrom doivent être déclarées dans databricks.yml. Consultez Configuration de l'application pour la liste complète des ressources.
Liste de contrôle avant déploiement
Avant de déployer en production :
- L'application écoute sur
0.0.0.0, sur le portDATABRICKS_APP_PORT - La commande de
app.yamlutilise la syntaxe tableau (pas de chaîne shell) - Aucun fichier de plus de 10 Mo dans le projet
- Les secrets utilisent
valueFrom(jamaisvalue) databricks.ymldéclare toutes les ressources requisesdatabricks apps validates'exécute sans erreur (--skip-testsignore les tests pour une exécution plus rapide)npm run buildaboutit en local
Valider
Lancez la validation depuis le répertoire de votre projet d'application avant de déployer :
databricks apps validate --profile $DATABRICKS_PROFILELa validation exécute une compilation, une vérification des types et une analyse statique. Passez --skip-tests pour une exécution plus rapide.
Déploiement
databricks apps deploy| Option | Description |
|---|---|
--auto-approve | Ignorer les approbations interactives susceptibles d'être requises pour le déploiement. |
--deployment-id | Identifiant unique du déploiement. |
--force | Forcer le contournement de la validation de la branche Git. |
--git-branch | Branche Git à partir de laquelle déployer. |
--git-commit | SHA du commit Git à partir duquel déployer. |
--git-source-code-path | Chemin relatif du code source de l'app dans le dépôt Git. Par défaut, la racine du dépôt. |
--git-tag | Tag Git à partir duquel déployer. |
--json | chaîne JSON en ligne ou @chemin/vers/fichier.json contenant le corps de la requête (par défaut JSON (0 bytes)) |
--mode | Mode de gestion du code source par le déploiement. Valeurs prises en charge : [AUTO_SYNC, SNAPSHOT] |
--no-wait | ne pas attendre d'atteindre l'état SUCCEEDED |
--skip-tests | Ignorer l'exécution des tests pendant la validation (par défaut true) |
--skip-validation | Ignorer la validation du projet (build, typecheck, lint) |
--source-code-path | Chemin du code source dans le système de fichiers du workspace utilisé pour créer le déploiement de l'app. |
--timeout | durée maximale pour atteindre l'état SUCCEEDED (par défaut 20m0s) |
--debug | activer la journalisation de débogage |
--output, -o | type de sortie : text ou json (par défaut text) |
--profile, -p | profil ~/.databrickscfg |
--target, -t | bundle target à utiliser (le cas échéant) |
--var | définir les valeurs des variables déclarées dans la configuration du bundle. Exemple : --var="key=value" |
La CLI valide la configuration, compile le projet, le téléverse et démarre l'app. Par défaut, elle exécute la même validation de projet que databricks apps validate (build, typecheck, lint). Utilisez --skip-validation pour ignorer cette étape. L'option --source-code-path est inutile lors d'un déploiement depuis un projet AppKit généré par scaffold.
Vérifier le déploiement
Vérifiez que l'application a bien été déployée :
databricks apps get my-app -o json| Option | Description |
|---|---|
--debug | activer la journalisation de débogage |
--output, -o | type de sortie : text ou json (text par défaut) |
--profile, -p | profil ~/.databrickscfg |
--target, -t | bundle target à utiliser (le cas échéant) |
--var | définir les valeurs des variables déclarées dans la configuration du bundle. Exemple : --var="key=value" |
Exemple de sortie
{
"name": "my-app",
"url": "https://my-app-1234567890.us-west-2.databricksapps.com",
"description": "A Databricks App powered by AppKit",
"compute_size": "MEDIUM",
"app_status": {
"message": "App has status: App is running",
"state": "RUNNING"
},
"compute_status": {
"message": "App compute is running.",
"state": "ACTIVE"
},
"active_deployment": {
"deployment_id": "a1b2c3d4e5f6",
"source_code_path": "/Workspace/Users/you@example.com/.bundle/my-app/default/files",
"status": {
"message": "App started successfully",
"state": "SUCCEEDED"
}
},
"resources": [
{
"name": "postgres",
"postgres": {
"branch": "projects/my-project/branches/production",
"database": "projects/my-project/branches/production/databases/db-abc123",
"permission": "CAN_CONNECT_AND_CREATE"
}
}
],
"service_principal_client_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}Consultez les journaux :
databricks apps logs my-app| Option | Description |
|---|---|
--follow, -f | Poursuit le streaming des journaux jusqu'à interruption. |
--tail-lines | Nombre de lignes de journal récentes à afficher avant le streaming. Définir à 0 pour tout afficher. (par défaut : 200) |
--timeout | Durée maximale du streaming lorsque --follow est activé. 0 désactive le délai d'expiration. |
--search | Envoie un terme de recherche au service de journalisation avant le streaming. |
--source | Limite les journaux aux sources APP et/ou SYSTEM. |
--output-file | Chemin de fichier facultatif pour écrire les journaux en plus de stdout. |
--debug | active la journalisation de débogage |
--output, -o | type de sortie : text ou json (par défaut : text) |
--profile, -p | profil ~/.databrickscfg |
--target, -t | bundle target à utiliser (le cas échéant) |
--var | définit les valeurs des variables déclarées dans la configuration du bundle. Exemple : --var="key=value" |
Exemple de sortie de journal
[SYSTEM] [INFO] Starting Databricks Apps runtime...
[SYSTEM] [INFO] Starting deployment a1b2c3d4e5f6...
[SYSTEM] [INFO] Downloading source code from /Workspace/Users/.../src/a1b2c3d4e5f6
[SYSTEM] [INFO] Installing dependencies...
[BUILD] added 899 packages, and audited 900 packages in 21s
[SYSTEM] [INFO] Dependencies installed successfully.
[SYSTEM] [INFO] Running build script npm run build:server && npm run build:client
[BUILD] ✔ Build complete in 30ms
[BUILD] ✓ built in 2.80s
[SYSTEM] [INFO] Build completed successfully.
[SYSTEM] [INFO] Starting app with command: [npm run start]
[APP] [appkit:lakebase] Lakebase pool initialized
[APP] [appkit:server] Server running on http://0.0.0.0:8000
[APP] [appkit:server] Mode: production (static)Gestion des applications
databricks apps stop my-app
databricks apps start my-app
databricks apps delete my-appOptions de apps stop
| Option | Description |
|---|---|
--no-wait | ne pas attendre le passage à l'état STOPPED |
--timeout | durée maximale pour atteindre l'état STOPPED (par défaut 20m0s) |
--debug | activer la journalisation de débogage |
--output, -o | type de sortie : text ou json (par défaut text) |
--profile, -p | profil ~/.databrickscfg |
--target, -t | bundle target à utiliser (le cas échéant) |
--var | définir les valeurs des variables déclarées dans la configuration du bundle. Exemple : --var="key=value" |
Options de apps start
| Option | Description |
|---|---|
--no-wait | ne pas attendre le passage à l'état ACTIVE |
--timeout | durée maximale pour atteindre l'état ACTIVE (20m0s par défaut) |
--debug | activer la journalisation de débogage |
--output, -o | type de sortie : text ou json (text par défaut) |
--profile, -p | profil ~/.databrickscfg |
--target, -t | bundle target à utiliser (le cas échéant) |
--var | définir les valeurs des variables déclarées dans la configuration du bundle. Exemple : --var="key=value" |
Options de apps delete
| Option | Description |
|---|---|
--auto-approve | Ignorer les approbations interactives lors de la suppression des ressources et des fichiers |
--force-lock | Forcer l'acquisition du verrou de déploiement. |
--debug | activer la journalisation de débogage |
--output, -o | type de sortie : text ou json (text par défaut) |
--profile, -p | profil ~/.databrickscfg |
--target, -t | bundle target à utiliser (le cas échéant) |
--var | définir les valeurs des variables déclarées dans la configuration du bundle. Exemple : --var="key=value" |
apps delete demande une confirmation. Passez --auto-approve en CI pour ignorer cette invite.
CI/CD
Pour automatiser les déploiements en CI, définissez DATABRICKS_HOST et DATABRICKS_TOKEN (ou utilisez OAuth avec DATABRICKS_CLIENT_ID et DATABRICKS_CLIENT_SECRET) :
DATABRICKS_HOST=https://<workspace>.cloud.databricks.com \
DATABRICKS_TOKEN=dapi... \
databricks apps deployOu utilisez un profil préconfiguré :
databricks apps deploy --profile ci-profileConsultez la documentation sur l'authentification de la Databricks CLI pour connaître toutes les méthodes d'authentification.
Dépannage
Pour aller plus loin, consultez Deploy apps ainsi que le pont distant AppKit pour les problèmes de connexion locale.
- Le déploiement de l'app échoue : consultez les journaux pour repérer les messages d'erreur, validez la syntaxe du fichier
app.yamlet vérifiez que les secrets et les variables d'environnement de la sectionenvse résolvent correctement. Assurez-vous que toutes les dépendances sont incluses ou installées. - Erreurs 401 (authentification) : vérifiez que votre jeton est valide (
databricks auth token --profile <PROFILE>), qu'il n'a pas expiré et qu'il inclut les scopes OAuth requis. Les scopes de votre jeton doivent former un sur-ensemble de ceux configurés pour l'autorisation utilisateur de l'app. - Erreurs 403 (permission refusée) : vérifiez que vous disposez de la permission
CAN USEsur l'app. Des scopes OAuth insuffisants peuvent eux aussi provoquer des erreurs 403, même si les permissions sont correctes. - Erreurs 404 (app introuvable) : vérifiez que le nom de l'app et l'URL du workspace sont corrects, que l'app est déployée et en cours d'exécution, et que le chemin de l'endpoint existe.
- Le déploiement Git échoue : pour les dépôts privés, vérifiez que le service principal de l'app dispose d'un identifiant Git configuré. Si vous déployez via la CLI, l'API ou les DAB, créez d'abord l'app, puis ajoutez l'identifiant Git.
Documentation AppKit
Accédez à la référence de l'API AppKit, à la documentation des composants et à celle des plugins depuis le terminal :
npx @databricks/appkit docs # parcourir l'index de la documentation
npx @databricks/appkit docs --full # index complet avec toutes les entrées de l'API
npx @databricks/appkit docs "<query-or-doc-path>" # afficher une section ou un fichier précisExécutez la commande sans argument pour parcourir l'index. Pratique lorsque vous développez avec un assistant de codage IA : orientez-le vers cette ressource plutôt que de le laisser deviner la structure des API, ou consultez la référence AppKit sur ce site.
Pour aller plus loin
Parcourez le catalogue de modèles pour commencer à développer, ou enrichissez votre application de nouvelles capacités : Lakebase Postgres pour le stockage persistant ou Agent Bricks pour les fonctionnalités d'IA.