Pour la configuration générale de l’environnement, consultez Configuration de l’environnement. Pour les détails de syntaxe, consultez la Référence YAML.
Dépannage des échecs de build
Étape 1 : Vérifier le statut du build
| Statut | Ce que cela signifie | Que faire |
|---|---|---|
| Success | Tout a fonctionné | Rien — votre image de machine est prête |
| Partial | Le build principal a réussi, mais certains repos ont échoué | Vérifiez quels repos ont échoué ; les sessions associées peuvent rencontrer des problèmes |
| Failed | Le build lui-même a échoué | Vérifiez les logs de l’étape en échec |
| Cancelled | Un build plus récent a remplacé celui-ci | Normal — lancez un build plus récent si nécessaire |
| Skipped | Aucune modification de configuration détectée | Rien — aucun build n’était nécessaire |
Étape 2 : Lire les logs de build
- Configuration partagée — commandes Enterprise et à l’échelle de l’organisation
- Clonage — clonage du dépôt
- Configuration du dépôt — commandes propres à chaque dépôt
- Finalisation — contrôle d’état et création de l’image
name, les logs indiqueront exactement quelle étape a échoué. C’est l’un des principaux avantages de donner un nom à vos étapes :
Step 3: Identifier le type d’échec
Échecs du clonage
- L’accès au dépôt n’est pas configuré — vérifiez Enterprise Settings > Integrations
- Un dépôt privé nécessite un jeton d’authentification
- Le dépôt a été renommé ou supprimé
- Problème de connectivité réseau (VPN ou proxy requis)
Échecs de l’installation des dépendances
npm install, pip install ou d’une commande similaire.
Causes courantes :
- Le registre de packages privé nécessite une authentification — ajoutez un token à Secrets
- Conflit de versions de package — verrouillez des versions spécifiques
- Délai d’expiration réseau — vérifiez si VPN est nécessaire
- URL du registre mal configurée
maintenance. Voir Exemples de configuration pour les schémas de registre privé.
Échecs liés à un délai d’expiration
- Un prompt interactif attend une entrée — ajoutez les
flags-y, utilisezDEBIAN_FRONTEND=noninteractive - L’installation d’un très grand nombre de dépendances prend trop de temps
- La commande dépasse le délai d’expiration d’une heure
flags non interactifs à toutes les commandes d’installation. Déplacez les installations lentes et ponctuelles vers initialize afin qu’elles ne s’exécutent que pendant les builds (et non à chaque session).
Erreurs d’autorisation
- Absence de
sudopour l’installation de packages système - Tentative d’écriture dans des répertoires protégés
- Fichier appartenant à un autre utilisateur issu d’un build précédent
sudo pour les opérations au niveau système (apt-get, écriture dans /etc/, etc.). Pour les gestionnaires de packages au niveau utilisateur (npm, pip, cargo), sudo n’est généralement pas nécessaire.
Erreurs “commande introuvable”
initialize n’est pas disponible dans maintenance ou lors des étapes suivantes.
Causes courantes :
- L’outil s’installe dans un répertoire qui ne figure pas dans
PATH - Les modifications apportées au profil shell (
.bashrc) ne sont pas prises en compte dans les étapes suivantes
$ENVRC :
Étape 4 : Itérez
- Corrigez votre configuration YAML
- Enregistrez — un nouveau build démarre automatiquement
- Consultez les logs du nouveau build
Référence rapide des erreurs courantes
| Erreur | Cause probable | Correctif |
|---|---|---|
command not found | Outil non installé ou absent du PATH | Ajouter à initialize, ou ajouter au PATH via $ENVRC |
Permission denied | Absence de sudo | Utiliser sudo apt-get install pour les packages système |
npm ERR! 404 | Package privé, sans authentification | Ajouter le auth token du registre dans maintenance (exemples) |
E: Unable to locate package | apt-get update n’a pas été exécuté au préalable | Ajouter sudo apt-get update -qq avant apt-get install |
| Timeout | Installation lente ou prompt interactif | Déplacer vers initialize ; ajouter -y et DEBIAN_FRONTEND=noninteractive |
| Fichiers de configuration vides au démarrage de la session | Identifiants écrits dans initialize | Déplacer les étapes liées aux identifiants vers maintenance |
| Le build réussit mais la session est défaillante | La commande maintenance échoue au démarrage de la session | Tester manuellement vos commandes maintenance dans une session |
Migrer depuis la configuration interactive
Comment fonctionne la migration
- Bascule activée (par défaut) — toutes les sessions utilisent l’ancien snapshot. Aucune interruption.
- Bascule désactivée — toutes les sessions utilisent le snapshot déclaratif.
Étapes de migration
Préparez votre configuration
Notez les commandes de votre configuration interactive actuelle — vous les associerez aux sections YAML :
| Étape de l’ancien assistant | Équivalent déclaratif |
|---|---|
| Git pull | Automatique (intégré) |
| Configure secrets | Secrets (inchangé) |
| Installer les dépendances | section initialize |
| Maintenir les dépendances | section maintenance |
| Configurer le lint | entrée knowledge nommée lint |
| Configurer les tests | entrée knowledge nommée test |
| Exécuter l’application en local | entrée knowledge nommée startup |
| Notes supplémentaires | entrée knowledge nommée notes |
Rédigez votre YAML
Accédez à Settings > Devin’s Environment et sélectionnez votre dépôt. Associez vos anciennes commandes :Vous pouvez aussi simplement démarrer une session Devin et lui demander de configurer le repo — Devin peut générer automatiquement la configuration pour vous.
Enregistrez et attendez le build
Enregistrez votre configuration. Un build démarre automatiquement. Suivez sa progression dans Build History. Les builds sont gratuits — ils ne consomment pas d’ACU.
Testez avant de basculer
Avant de migrer tout le monde, testez la configuration déclarative sur des sessions individuelles à l’aide du manual override. Cela vous permet (ou permet à la personne qui itère sur la configuration) d’utiliser le snapshot déclaratif pendant que tout le monde reste sur l’ancien snapshot.Faites évoluer la configuration jusqu’à ce que la configuration déclarative atteigne une parité complète avec votre environnement existant.
Migration des entreprises
- Configurez d’abord le YAML au niveau de l’entreprise — pour l’infrastructure partagée, comme le VPN, les certificats et les paramètres de proxy.
- Migrez une org à la fois. Chaque org dispose de sa propre option ancien, ce qui vous permet d’effectuer la migration progressivement sans affecter les autres équipes.
- Envisagez une org de test. Pour les grandes entreprises, créez une organisation de test dédiée afin de valider la configuration déclarative avant de la déployer dans les orgs de production.
- Utilisez Devin à grande échelle. Devin peut configurer des repos via des sessions parallèles — lancez une session par repo et Devin générera automatiquement des propositions de configuration. Cette approche fonctionne bien pour l’intégration de 10 à plus de 100 repos.
Que devient mon ancien snapshot ?
Différences clés
| Fonctionnalité | Ancien (interactif) | Déclaratif (YAML) |
|---|---|---|
| Reproductibilité | Avec état — les snapshots accumulent les modifications au fil du temps | Entièrement reproductible à partir du YAML |
| Multi-repo | Un repo à la fois | Plusieurs repos dans un même build avec clonage simultané |
| Maintenance | Étapes manuelles de « maintenance des dépendances » | Automatique — maintenance s’exécute au démarrage de la session |
| Couches Enterprise/org | Non pris en charge | Hiérarchie à 3 niveaux (Enterprise → Org → Repo) |
| Suggestions de Devin | Uniquement dans l’assistant | Pendant la session — Devin peut suggérer des mises à jour de configuration |
| Coût | Les sessions de l’assistant consommaient des ACU | Sessions de configuration ~1–3 ACU ; les builds sont gratuits |
Questions fréquentes
Général
initialize plutôt que maintenance ?
Utilisez initialize pour les installations d’outils ponctuelles (apt-get install, configuration du runtime du langage, outils CLI globaux). Utilisez maintenance pour l’installation de dépendances qui doivent rester à jour (npm install, pip install, uv sync).
Comment ajouter des variables d’environnement ?
Écrivez-les dans $ENVRC :
sudo apt-get install dans votre section initialize. Utilisez toujours DEBIAN_FRONTEND=noninteractive et l’option -y pour éviter toute demande de confirmation interactive.
Que faire si j’ai besoin de versions différentes de Node selon les repos ?
Utilisez nvm dans la configuration au niveau du repo :
Spécifique au build
Spécificités d’Enterprise
Limites connues
- Aucun aperçu ni environnement de test du build — chaque modification de configuration déclenche un build complet. Testez d’abord les commandes dans une session.
- Configuration sérielle des repos — la configuration au niveau du repo s’exécute sur un repo à la fois (par ordre alphabétique). Un grand nombre de repos allonge les builds.
- Aucune logique conditionnelle en YAML — le format ne prend pas en charge les instructions if/else. Utilisez des conditions shell dans vos commandes si nécessaire (par ex. :
[ -f package.json ] && npm install). - Aucune recherche dans les logs de build — les logs de build doivent être parcourus manuellement. Utilisez des étapes nommées pour repérer plus facilement les échecs.
Étapes suivantes
- Configuration de l’environnement — guide principal pour rédiger votre fichier de configuration
- Exemples de configuration — exemples de copier-coller par stack et par couche
