Skip to main content
Il s’agit de la référence complète des champs des blueprints. Pour une introduction aux blueprints et à leur place dans l’environnement de Devin, consultez Configuration déclarative de l’environnement.
Un blueprint définit la configuration de l’environnement de Devin : quels outils installer, comment maintenir les dépendances à jour et quelles commandes Devin doit connaître.

Vue d’ensemble

Un blueprint comporte trois sections principales de premier niveau, ainsi qu’une section post-build pour les blueprints au niveau de l’org et de l’entreprise, et une section clone facultative pour les blueprints au niveau du dépôt :
Toutes les sections sont facultatives. Vous pouvez inclure n’importe quelle combinaison. initialize s’exécute pendant les builds complets et pour les espaces de travail reconstruits à partir de zéro. Les résultats sont enregistrés dans le snapshot. Lors d’un build différentiel, les espaces de travail hérités ignorent initialize, récupèrent la dernière version du code et n’exécutent que maintenance. Écrivez maintenance de sorte qu’il soit autonome et puisse s’exécuter indépendamment sur le snapshot existant, sans nécessiter l’exécution immédiate préalable de initialize ni dépendre de variables d’environnement que initialize aurait précédemment écrites dans $ENVRC. Au début de chaque session, les commandes maintenance ne sont pas exécutées automatiquement ; elles sont plutôt présentées à l’agent comme contexte afin qu’il sache quelles commandes de dépendance exécuter si nécessaire (par ex. après avoir récupéré la dernière version du code). Les commandes doivent toujours être rapides et incrémentales. Les builds s’exécutent automatiquement lorsque votre blueprint change et périodiquement (toutes les ~24 heures).

initialize

Utilisez initialize pour installer des outils et des environnements d’exécution qui ne dépendent pas de l’état spécifique de votre code : environnements d’exécution de langage, packages système et CLI globaux.

Forme simple

Pour les commandes shell simples, utilisez un bloc scalaire :

Format structuré

Pour les étapes nommées, les variables d’environnement ou GitHub Actions, utilisez une liste :
Les deux formes peuvent être utilisées ensemble. La forme simple équivaut à une seule étape avec run.

Quand utiliser initialize ou maintenance

Les deux sections s’exécutent pendant les full builds. Dans les builds différentiels, les espaces de travail hérités ignorent initialize et n’exécutent que maintenance après avoir récupéré la dernière version du code. Les outils et les environnements d’exécution vont dans initialize ; les commandes de dépendances liées aux fichiers de verrouillage de votre code vont dans maintenance.

maintenance

Utilisez maintenance pour installer les dépendances et exécuter les autres commandes qui doivent l’être après le clonage de votre code. Ces commandes s’exécutent pendant les builds et sont présentées à l’Agent au démarrage de la session afin qu’il puisse les relancer si les dépendances ont changé. C’est à cet endroit que doivent figurer npm install, pip install, uv sync et autres commandes similaires.
Ou sous forme structurée :
Pour les blueprints au niveau du dépôt, les commandes maintenance s’exécutent depuis le répertoire racine du dépôt. Pour les blueprints au niveau de l’organisation, elles s’exécutent depuis le répertoire personnel (~).

knowledge

La section knowledge n’est pas exécutée. Elle fournit des informations de référence que Devin utilise lorsqu’il travaille sur votre projet. C’est ainsi que vous indiquez à Devin les commandes appropriées pour le linting, les tests, la build et tout autre workflow spécifique au projet.
Chaque élément de Knowledge comporte : Le champ name est un libellé. Par convention, lint, test et build sont les noms standard. Devin s’y réfère lorsqu’il vérifie son travail. Vous pouvez ajouter d’autres éléments de Knowledge avec des noms personnalisés :

post-build

La section post-build est disponible uniquement dans les blueprints au niveau de l’organisation et de l’entreprise (elle n’est pas prise en charge dans les blueprints au niveau du dépôt). Ses étapes s’exécutent pendant le build une fois que tous les dépôts ont été clonés et que leurs étapes initialize et maintenance sont terminées, mais avant la vérification d’état et la création de l’image snapshot. C’est donc l’endroit idéal pour les validations inter-dépôts et les vérifications d’état qui nécessitent un environnement entièrement assemblé. Comme elle s’exécute tard dans le build, lorsque l’ensemble de l’environnement est en place, une étape post-build peut accéder à chaque dépôt cloné et à chaque outil installé par les blueprints de l’entreprise, de l’organisation et du dépôt.
Ou sous forme structurée :
Les étapes post-build font échouer le build en cas de code de sortie non nul. Si une étape post-build se termine avec un code non nul, le build est marqué comme échoué et aucune image snapshot n’est produite. Utilisez ce mécanisme pour conditionner les snapshots à des vérifications d’état — mais assurez-vous que les commandes sont fiables afin qu’une vérification instable ne bloque pas vos builds.
Les étapes post-build utilisent les mêmes types d’étapes que initialize et maintenance (commandes shell run et uses de GitHub Actions), et s’exécutent depuis le répertoire personnel (~).

clone

Pour les blueprints au niveau du dépôt, la section facultative clone déroge aux valeurs par défaut utilisées lorsque Devin clone le dépôt dans le snapshot. Chaque champ est facultatif et, s’il n’est pas renseigné, une valeur par défaut appropriée est utilisée afin de préserver le comportement actuel.
clone s’applique uniquement aux blueprints au niveau du dépôt — il contrôle la façon dont ce dépôt spécifique est cloné dans le snapshot. Il n’a aucun effet dans les blueprints au niveau de l’organisation ou au niveau de l’entreprise.

Types d’étapes

Chaque étape de initialize, maintenance ou post-build utilise l’un des deux types suivants : les commandes shell (run) ou les GitHub Actions (uses).

Commandes shell (run)

Exécutez les commandes shell de votre choix dans bash :
Détails d’exécution :
  • Les commandes s’exécutent dans bash. Si une commande d’un script sur plusieurs lignes échoue, l’étape entière s’arrête immédiatement.
  • Les blueprints au niveau de l’organisation s’exécutent dans le répertoire personnel (~).
  • Les blueprints au niveau du dépôt s’exécutent à la racine du dépôt cloné.
  • Chaque étape a un délai d’expiration d’une heure.
  • Les secrets sont automatiquement disponibles sous forme de variables d’environnement.

GitHub Actions (uses)

Exécutez directement des GitHub Actions basées sur Node.js dans votre blueprint :
Format de référence de l’action :
Le préfixe github.com/ et le suffixe @<ref> sont tous deux obligatoires. La référence est généralement une balise de version comme v5. Actions couramment utilisées :
Seules les GitHub Actions basées sur Node.js sont prises en charge. Les actions composites et les actions basées sur Docker ne sont pas prises en charge.
Fonctionnement des valeurs with : Les valeurs transmises via with sont fournies à l’action sous forme d’entrées, selon les mêmes conventions que dans les workflows GitHub Actions. Toutes les valeurs sont converties en chaînes de caractères.
Comment les actions propagent les modifications : Les actions peuvent modifier l’environnement pour les étapes suivantes. Par exemple, setup-python ajoute l’exécutable Python au PATH, qui reste ensuite disponible pour toutes les étapes ultérieures ainsi que dans maintenance.

run vs uses : lequel utiliser

En pratique, la plupart des configurations utilisent uses pour les environnements d’exécution et run pour tout le reste.

Variables d’environnement et secrets

Variables d’environnement propres à l’étape

Chaque étape peut définir des variables d’environnement supplémentaires à l’aide du champ env :
Ils sont limités à l’étape et ne sont pas conservés pour les étapes suivantes.

Variables d’environnement d’une étape à l’autre ($ENVRC)

Pour transmettre des variables d’environnement d’une étape à l’autre, écrivez-les dans le fichier $ENVRC :
Les variables écrites dans $ENVRC sont automatiquement exportées et accessibles à toutes les étapes suivantes ainsi qu’à la session Devin produite par le build actuel. Cela fonctionne de manière similaire à $GITHUB_ENV dans GitHub Actions. Cela s’applique également à PATH. Si vous installez un outil dans un répertoire non standard (tout ce qui se trouve en dehors de /usr/bin ou /usr/local/bin), ajoutez ce répertoire à $ENVRC afin que les étapes suivantes et les blueprints au niveau du dépôt puissent trouver le binaire :
Un simple export PATH=... dans un bloc run: n’affecte que le shell de cette étape. Chaque étape démarre un nouveau processus shell, donc les modifications de PATH qui ne sont pas écrites dans $ENVRC sont perdues.
Les actions uses: (p. ex. actions/setup-node) répercutent automatiquement leurs ajouts à PATH dans $ENVRC — vous ne devez le faire manuellement que pour les étapes run:.
$ENVRC est réinitialisé au début de chaque build, y compris les builds différentiels. Les valeurs écrites pendant un build ne sont pas accessibles au build suivant. En particulier, un espace de travail hérité n’exécute que maintenance, il ne peut donc pas s’appuyer sur PATH ou d’autres variables que initialize a écrites dans $ENVRC lors du build parent. Configurez tout environnement requis par maintenance dans maintenance lui-même.

Secrets

Les secrets configurés dans l’interface de Devin (via l’onglet Secrets dans chaque éditeur de blueprint) sont automatiquement injectés sous forme de variables d’environnement. Vous n’avez pas besoin de les déclarer dans votre blueprint. Référencez-les simplement par leur nom (p. ex., $MY_SECRET). Les secrets sont injectés avant l’exécution de chaque étape pendant les builds et réinjectés au début de chaque session. Ils sont supprimés de l’image du snapshot elle-même, de sorte que les identifiants ne sont jamais intégrés aux images de machine enregistrées.
  • Secrets d’organisation : disponibles sous forme de variables d’environnement à chaque étape dans tous les blueprints de l’organisation. Définissez-les dans l’onglet Secrets de l’éditeur du blueprint à l’échelle de l’organisation.
  • Secrets Enterprise : fusionnés avec les secrets d’organisation (les secrets d’organisation sont prioritaires en cas de conflit de nom). Disponibles dans toutes les organisations de l’enterprise.
  • Secrets du dépôt : écrits dans un fichier par dépôt à l’emplacement /run/repo_secrets/{owner/repo}/.env.secrets. Pendant les builds, les secrets du dépôt sont automatiquement chargés avant l’exécution des étapes du blueprint de ce dépôt. En session, Devin les charge lorsqu’il travaille dans le dépôt. Configurez-les dans l’onglet Secrets de l’éditeur du blueprint du dépôt.
Secrets réservés au build : les secrets marqués comme “build only” sont disponibles pendant les builds de snapshot, mais supprimés avant l’enregistrement du snapshot. Utilisez-les pour les identifiants nécessaires uniquement au moment du build (p. ex., pour télécharger des artefacts privés pendant initialize).
maintenance s’exécute pendant les builds. Au démarrage de la session, les commandes maintenance sont présentées à l’agent (elles ne sont pas exécutées automatiquement), de sorte que l’agent peut les relancer si nécessaire. Si une étape maintenance écrit des secrets dans des fichiers de configuration (p. ex., ~/.m2/settings.xml, ~/.npmrc), ces fichiers seront intégrés au snapshot. Placez les étapes qui écrivent des identifiants dans maintenance (et non dans initialize) afin qu’elles soient réactualisées lors des builds périodiques, mais gardez à l’esprit que les fichiers ainsi écrits persistent dans l’image. Pour une sécurité maximale, utilisez des variables d’environnement ou $ENVRC au lieu d’écrire des identifiants sur le disque.

Fichiers joints

Vous pouvez téléverser des fichiers (comme .npmrc, settings.xml ou des fichiers de configuration) dans l’éditeur de blueprint. Les fichiers téléversés sont enregistrés dans ~/.files/, et une variable d’environnement est définie pour pointer vers le chemin de chaque fichier :
Le nom de la variable est dérivé du nom du fichier : en majuscules, avec les caractères non alphanumériques remplacés par des traits de soulignement, et préfixé par FILE_. Utilisez des fichiers joints dans les étapes de votre blueprint :

blueprints versionnés avec Git

Vous pouvez stocker des blueprints sous forme de fichiers .devin/blueprint.yaml directement dans votre dépôt, puis les synchroniser via l’API ou l’UI. Consultez blueprints versionnés avec Git pour les instructions de configuration et plus de détails.

Exemple complet

Pour savoir comment les blueprints s’articulent entre les niveaux (entreprise → org → repo), les statuts de build, les états du dépôt et ce qui déclenche une reconstruction, consultez Builds et sessions sur la page de configuration déclarative.

Blueprint à l’échelle de l’organisation

Outils partagés dont chaque dépôt de l’organisation a besoin. Il est exécuté en premier (après tout blueprint Enterprise), dans le répertoire personnel.

Blueprint du dépôt

Configuration spécifique au projet pour un monorepo Node.js + Python. Ce blueprint s’exécute après le blueprint à l’échelle de l’organisation, dans le répertoire du dépôt.