Référence rapide de la syntaxe et du fonctionnement d’environment.yaml. Pour les concepts et les guides, consultez Configuration d’environnement.
Champs de niveau supérieur
| Champ | Type | Obligatoire | Exécuté pendant | Description |
|---|
initialize | string ou liste | Non | Build uniquement | Commandes de configuration ponctuelles. Les résultats sont enregistrés dans l’image machine. Doit être idempotent. |
maintenance | string ou liste | Non | Build + démarrage de session | Commandes récurrentes liées aux dépendances. Veillez à ce qu’elles restent rapides et incrémentales. |
knowledge | liste d’objets | Non | Jamais (référence uniquement) | Informations chargées dans le contexte de Devin au démarrage de la session. |
| Champ | Type | Obligatoire | Description |
|---|
name | string | Non | Libellé explicite affiché dans les logs de build. Permet d’identifier plus facilement les échecs. |
run | string | Non | Commande(s) shell à exécuter. Les chaînes multilignes sont prises en charge. Les étapes sans run sont ignorées. |
Champs d’une entrée Knowledge
| Champ | Type | Obligatoire | Description |
|---|
name | string | Oui | Identifiant (p. ex., test, lint, startup, architecture, notes). |
contents | string | Oui | Contenu de référence. N’est pas exécuté en tant que commande. |
- Les commandes s’exécutent dans bash avec
set -e activé — si une ligne échoue, l’étape s’arrête immédiatement.
- Les commandes spécifiques au repo s’exécutent depuis la racine du repo (
~/repos/<repo-name>). Les commandes Enterprise et à l’échelle de l’organisation s’exécutent depuis le répertoire personnel (~).
- Chaque étape de la forme étendue s’exécute dans son propre contexte de shell.
| Périmètre | Délai d’expiration |
|---|
| Commande individuelle | 1 heure |
| Build total | 2 heures |
Bonnes pratiques :
- Utilisez des sous-shells pour les commandes dans des sous-répertoires :
(cd packages/frontend && npm install).
- Privilégiez les installations incrémentales dans
maintenance (par ex., npm install plutôt que npm ci).
- Évitez les commandes de build (
npm run build, make) dans maintenance — elles s’exécutent à chaque session.
- Ajoutez les flags
-y pour éviter les prompts interactifs : sudo DEBIAN_FRONTEND=noninteractive apt-get install -y.
- Les commandes doivent pouvoir être exécutées plusieurs fois sans risque —
maintenance s’exécute à chaque session.
L’image de base de Devin (Ubuntu 22.04, x86_64) comprend les outils suivants. Vous n’avez pas besoin de les installer.
| Catégorie | Inclus |
|---|
| Langages | Node.js (via nvm), Python 3.12 (via pyenv, avec les versions 3.9 à 3.11 également disponibles), Rust (via rustup), Java (OpenJDK 17), Scala, Go |
| Gestionnaires de packages | npm, yarn, pnpm, pip, cargo |
| Contrôle de version | git, gh (GitHub CLI), git-lfs |
| Conteneurs | Docker (avec le plugin Compose — utilisez docker compose, et non docker-compose) |
| Outils de build | make, build-essential (gcc, g++) |
| Utilitaires | curl, wget, jq, ripgrep, direnv, awscli, ffmpeg, Homebrew, OpenVPN |
| Navigateurs | Chrome (pour les tests basés sur le navigateur) |
Cette liste n’est peut-être pas exhaustive. Exécutez which <tool> ou <tool> --version dans une session Devin pour vérifier. S’il manque un outil, installez-le dans votre section initialize.
| Terme | Définition |
|---|
| Configuration | Une configuration d’environnement enregistrée (le contenu YAML). Chaque repo/org/entreprise possède la sienne. |
| Version de configuration | Une révision spécifique d’une configuration. Chaque sauvegarde crée une nouvelle version. |
| Build | Le processus d’exécution de votre configuration pour créer une image de machine. |
| Image de machine | L’environnement enregistré créé par un build réussi. Les sessions démarrent à partir de la dernière image réussie. |
| Configuré | Un repository avec une configuration YAML explicite (initialize/maintenance/knowledge). |
| Inclus | Un repository cloné dans l’image de machine, mais sans configuration personnalisée. |
| Disponible | Un repository accessible à l’org, mais non ajouté à l’environnement. |
| $ENVRC | Un fichier spécial permettant de définir des variables d’environnement. Semblable à $GITHUB_ENV dans GitHub Actions. |
| Succès partiel | Un build dont le cœur a réussi, mais où certaines configurations au niveau du repository ont échoué. |