Passer au contenu principal
Référence rapide de la syntaxe et du fonctionnement d’environment.yaml. Pour les concepts et les guides, consultez Configuration d’environnement.

Référence des champs

Champs de niveau supérieur

ChampTypeObligatoireExécuté pendantDescription
initializestring ou listeNonBuild uniquementCommandes de configuration ponctuelles. Les résultats sont enregistrés dans l’image machine. Doit être idempotent.
maintenancestring ou listeNonBuild + démarrage de sessionCommandes récurrentes liées aux dépendances. Veillez à ce qu’elles restent rapides et incrémentales.
knowledgeliste d’objetsNonJamais (référence uniquement)Informations chargées dans le contexte de Devin au démarrage de la session.

Champs d’une étape (forme étendue)

ChampTypeObligatoireDescription
namestringNonLibellé explicite affiché dans les logs de build. Permet d’identifier plus facilement les échecs.
runstringNonCommande(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

ChampTypeObligatoireDescription
namestringOuiIdentifiant (p. ex., test, lint, startup, architecture, notes).
contentsstringOuiContenu de référence. N’est pas exécuté en tant que commande.

Détails d’exécution

  • 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ètreDélai d’expiration
Commande individuelle1 heure
Build total2 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 risquemaintenance s’exécute à chaque session.

Outils préinstallés

L’image de base de Devin (Ubuntu 22.04, x86_64) comprend les outils suivants. Vous n’avez pas besoin de les installer.
CatégorieInclus
LangagesNode.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 packagesnpm, yarn, pnpm, pip, cargo
Contrôle de versiongit, gh (GitHub CLI), git-lfs
ConteneursDocker (avec le plugin Compose — utilisez docker compose, et non docker-compose)
Outils de buildmake, build-essential (gcc, g++)
Utilitairescurl, wget, jq, ripgrep, direnv, awscli, ffmpeg, Homebrew, OpenVPN
NavigateursChrome (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.

Glossaire

TermeDéfinition
ConfigurationUne configuration d’environnement enregistrée (le contenu YAML). Chaque repo/org/entreprise possède la sienne.
Version de configurationUne révision spécifique d’une configuration. Chaque sauvegarde crée une nouvelle version.
BuildLe processus d’exécution de votre configuration pour créer une image de machine.
Image de machineL’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).
InclusUn repository cloné dans l’image de machine, mais sans configuration personnalisée.
DisponibleUn repository accessible à l’org, mais non ajouté à l’environnement.
$ENVRCUn fichier spécial permettant de définir des variables d’environnement. Semblable à $GITHUB_ENV dans GitHub Actions.
Succès partielUn build dont le cœur a réussi, mais où certaines configurations au niveau du repository ont échoué.

Étapes suivantes