Skip to main content
Des blueprints prêts à l’emploi pour les langages et cas d’usage courants. Chaque modèle est autonome. Combinez-les pour créer votre configuration complète. Pour une présentation détaillée de chaque champ, consultez la Référence des blueprints.
Secrets : Les modèles font référence à des secrets via $SECRET_NAME. Configurez-les dans l’onglet Secrets de chaque éditeur de blueprint avant d’utiliser un modèle. N’intégrez jamais d’identifiants en dur dans votre blueprint.

Démarrage rapide

Blueprints minimaux pour les configurations les plus courantes. Copiez-en un, collez-le dans l’éditeur de blueprints, et le tour est joué.

Blueprints du dépôt

Étapes de build propres à chaque dépôt, gestion des dépendances et entrées Knowledge. Définissez-les dans Settings > Environnement > Blueprints > [votre dépôt].

Python

Configuration recommandée pour les projets Python qui utilisent uv pour la gestion des dépendances.

Node.js

Configuration Node.js par défaut avec npm.
Utilisez npm install (et non npm ci) dans maintenance. Cette commande effectue une mise à jour incrémentielle, tandis que npm ci supprime node_modules et réinstalle tout depuis zéro à chaque session.

Go

Configuration Go standard avec modules.

Java

Configuration de Java avec Gradle.
JDK 17 est préinstallé sur l’image de base de Devin. Ignorez l’étape d’installation du JDK si l’OpenJDK 17 par défaut vous convient.

Ruby on Rails

Configuration de Rails avec PostgreSQL.

Rust

Configuration standard de Rust avec Cargo.
Rust (via rustup) et Cargo sont préinstallés sur l’image de base de Devin. Passez l’étape d’installation si la toolchain stable par défaut vous convient. Il vous suffit de récupérer les dépendances.

Monorepos

Monorepo avec un frontend Node.js et un backend Python. Chaque sous-projet a ses propres entrées Knowledge.
Utilisez des subshells (cd dir && command) plutôt que cd dir && command afin que le répertoire de travail soit réinitialisé entre les étapes.

Registres privés de packages

Configurez les gestionnaires de paquets pour résoudre les dépendances depuis des registres privés. Définissez cela dans Settings > environnement > Blueprints > configuration à l’échelle de l’organisation (ou au niveau du dépôt si un seul dépôt est concerné).
La configuration des identifiants doit se faire dans maintenance, pas dans initialize. Les étapes qui écrivent des secrets (mots de passe de registre, jetons d’authentification) dans des fichiers de configuration doivent utiliser maintenance afin que les identifiants soient rechargés au début de chaque session. Les secrets sont supprimés avant l’enregistrement du snapshot, donc les fichiers de configuration écrits pendant initialize n’auront pas d’identifiants valides au démarrage.
Si votre registre privé utilise une autorité de certification d’entreprise, assurez-vous que le certificat d’autorité de certification est d’abord installé au niveau Enterprise. La configuration ci-dessous suppose que la confiance HTTPS est déjà établie.

Registres Node.js

Configurez npm pour récupérer les packages d’un scope (par ex. @myorg/*) à partir d’un registre privé, tandis que les packages publics continuent de provenir du registre npm par défaut.
- GITHUB_PACKAGES_TOKEN — Jeton d’accès personnel ou jeton GitHub App avec le périmètre read:packages
Remplacez @myorg par votre scope npm. URL courantes de registres privés :
  • GitHub Packages: https://npm.pkg.github.com
  • Artifactory: https://artifactory.example.com/artifactory/api/npm/npm-virtual
  • Nexus: https://nexus.example.com/repository/npm-group
  • GitLab: https://gitlab.example.com/api/v4/packages/npm
  • AWS CodeArtifact: https://<domain>.d.codeartifact.<region>.amazonaws.com/npm/<repo>

Registres Python

Configurez pip et uv pour récupérer les packages depuis votre registre PyPI privé (p. ex., Nexus, Artifactory).
  • PYPI_REGISTRY_URL — URL complète de votre index PyPI, y compris les identifiants si nécessaire (p. ex., https://user:token@nexus.example.com/repository/pypi-proxy/simple)
URL courantes de registres PyPI :
  • Artifactory : https://artifactory.example.com/artifactory/api/pypi/pypi-virtual/simple
  • Nexus : https://nexus.example.com/repository/pypi-proxy/simple
  • AWS CodeArtifact : https://aws:TOKEN@domain-owner.d.codeartifact.region.amazonaws.com/pypi/repo/simple/
  • Azure Artifacts : https://pkgs.dev.azure.com/org/project/_packaging/feed/pypi/simple
  • GitLab : https://gitlab.example.com/api/v4/groups/<group-id>/-/packages/pypi/simple

Registres JVM

Installez le JDK et configurez Maven pour faire transiter toute la résolution des dépendances par votre registre privé (p. ex. Artifactory, Nexus).
Le JDK 17 est préinstallé sur l’image de base de Devin. Passez l’étape d’installation si l’OpenJDK 17 par défaut vous suffit. Vous n’avez besoin que de l’installation de Maven et de la configuration du registre.
  • MAVEN_REGISTRY_URL — URL de votre registre Maven (p. ex. https://artifactory.example.com/artifactory/maven-virtual) - REGISTRY_USER — Nom d’utilisateur du registre - REGISTRY_PASS — Mot de passe du registre ou jeton d’API
Schémas d’URL courants pour les registres Maven :
  • Artifactory: https://artifactory.example.com/artifactory/maven-virtual
  • Nexus: https://nexus.example.com/repository/maven-public
  • Azure Artifacts: https://pkgs.dev.azure.com/org/project/_packaging/feed/maven/v1
  • GitHub Packages: https://maven.pkg.github.com
  • GitLab: https://gitlab.example.com/api/v4/groups/<group-id>/-/packages/maven
  • AWS CodeArtifact: https://<domain>.d.codeartifact.<region>.amazonaws.com/maven/<repo>

Autres registres

Installez Go et configurez-le pour passer par un proxy de modules privé afin de résoudre les modules (par ex., Athens, Artifactory ou un endpoint GOPROXY).
  • GO_PROXY_URL — URL de votre proxy de modules Go (par ex., https://athens.corp.internal)
  • GIT_TOKEN — jeton d’accès personnel pour les dépôts Git privés qui hébergent des modules Go
Schémas d’URL courants pour les proxys Go :
  • Artifactory: https://artifactory.example.com/artifactory/go-virtual
  • Nexus: https://nexus.example.com/repository/go-proxy
  • Athens: https://athens.corp.internal
Configurez NuGet pour récupérer les packages depuis une source privée.
  • NUGET_SOURCE_URL — URL de votre source NuGet
  • NUGET_API_KEY — clé API ou PAT pour la source
Configurez Docker pour récupérer des images depuis un registre de conteneurs privé.
  • DOCKER_MIRROR_URL (facultatif) — URL de votre miroir Docker Hub (par exemple, https://mirror.corp.internal)
  • DOCKER_REGISTRY_URL — URL de votre registre de conteneurs privé (par exemple, registry.corp.internal:5000)
  • DOCKER_REGISTRY_USER — Nom d’utilisateur du registre
  • DOCKER_REGISTRY_PASS — Mot de passe du registre ou jeton d’API
URL courantes des registres de conteneurs :
  • Amazon ECR: <account-id>.dkr.ecr.<region>.amazonaws.com
  • Azure Container Registry: <name>.azurecr.io
  • Google Artifact Registry: <region>-docker.pkg.dev
  • GitHub Container Registry: ghcr.io
  • GitLab Container Registry: registry.gitlab.example.com
  • Nexus: https://nexus.example.com:8443
  • JFrog: <name>.jfrog.io
Configurez Cargo pour utiliser des crates provenant d’un registre privé.
Rust (via rustup) et Cargo sont préinstallés sur l’image de base de Devin. Passez l’étape d’installation si la toolchain stable par défaut suffit. Seule la configuration du registre est nécessaire.
  • CARGO_REGISTRY_INDEX — URL de l’index du registre privé (p. ex., sparse+https://cargo.corp.internal/api/v1/crates/)
  • CARGO_REGISTRY_TOKEN — jeton d’authentification pour le registre privé
Si vous devez simplement ajouter un registre privé sans remplacer crates.io, supprimez les sections [source.crates-io] et [source.private], puis utilisez cargo install --registry private ou [dependencies] my-crate = { version = "1.0", registry = "private" } dans Cargo.toml.
Installez Ruby et configurez Bundler pour récupérer les gems depuis un serveur de gems privé.
  • GEM_SERVER_URL — URL de votre serveur de gems privé (p. ex., https://artifactory.example.com/artifactory/api/gems/gems-virtual)
  • REGISTRY_USER — Nom d’utilisateur du registre
  • REGISTRY_PASS — Mot de passe du registre ou jeton d’API
Schémas d’URL courants pour les serveurs de gems :
  • Artifactory: https://artifactory.example.com/artifactory/api/gems/gems-virtual
  • Nexus: https://nexus.example.com/repository/rubygems-proxy
  • Gemfury: https://gem.fury.io/<org>
Installez PHP et configurez Composer pour récupérer des packages depuis un registre privé Packagist ou Satis.
  • COMPOSER_REGISTRY_URL — URL de votre registre Composer privé (par ex., https://repo.packagist.com/<org>)
  • REGISTRY_USER — Nom d’utilisateur du registre
  • REGISTRY_PASS — Mot de passe du registre ou jeton d’API
Modèles d’URL courants pour les registres Composer :
  • Artifactory: https://artifactory.example.com/artifactory/api/composer/packagist-virtual
  • Nexus: https://nexus.example.com/repository/packagist-proxy
  • Private Packagist: https://repo.packagist.com/<org>
  • Satis: https://satis.corp.internal
Les jetons AWS CodeArtifact expirent après 12 heures. Utilisez maintenance pour configurer la commande de renouvellement du jeton afin que l’agent puisse l’exécuter à nouveau si nécessaire. Cet exemple configure npm, pip et Maven pour utiliser CodeArtifact.
awscli est préinstallé sur l’image de base de Devin. Il vous suffit d’actualiser le jeton et de configurer le registre.
  • AWS_ACCESS_KEY_ID et AWS_SECRET_ACCESS_KEY — Identifiants IAM avec les autorisations codeartifact:GetAuthorizationToken et sts:GetServiceBearerToken
  • CA_DOMAIN — Nom de votre domaine CodeArtifact
  • CA_DOMAIN_OWNER — ID du compte AWS propriétaire du domaine
  • CA_REGION — Région AWS (p. ex., us-east-1)
  • CA_NPM_REPO, CA_PYPI_REPO, CA_MAVEN_REPO — Noms des dépôts pour chaque écosystème

Infrastructure Enterprise

Infrastructure au niveau des machines qui s’applique à l’ensemble des organisations et des dépôts. Définissez ces paramètres dans Settings > environnement de base de Devin (à l’échelle de l’entreprise) ou Settings > environnement > Blueprints > configuration à l’échelle de l’organisation (à l’échelle de l’organisation).

Réseau et connectivité

Votre organisation utilise une autorité de certification privée pour ses services internes. Devin a besoin du certificat racine pour accéder aux dépôts et outils internes via HTTPS.
- CORP_ROOT_CA_B64 — certificat PEM encodé en Base64 issu de votre autorité de certification d’entreprise. Générez-le avec : cat corp-root-ca.crt | base64 -w0
Si votre organisation utilise plusieurs certificats d’autorité de certification (par exemple, des autorités de certification distinctes pour différents services internes).
- CORP_ROOT_CA_B64 — certificat principal d’autorité de certification encodé en Base64 - CORP_INTERMEDIATE_CA_B64 — certificat intermédiaire d’autorité de certification encodé en Base64
Faites passer tout le trafic réseau par un proxy d’entreprise.
  • CORP_HTTP_PROXY — URL du proxy HTTP (p. ex., http://proxy.corp.example.com:8080) - CORP_HTTPS_PROXY — URL du proxy HTTPS - CORP_NO_PROXY — liste d’hôtes, séparés par des virgules, à ne pas faire passer par le proxy (p. ex., localhost,127.0.0.1,.corp.example.com)
Si votre proxy d’entreprise nécessite une authentification par nom d’utilisateur et mot de passe.
  • PROXY_USER — Nom d’utilisateur du proxy - PROXY_PASS — Mot de passe du proxy - PROXY_HOST — Nom d’hôte et port du proxy (par ex., proxy.corp.example.com:8080) - CORP_NO_PROXY — Hôtes à exclure du proxy
Configuration combinée pour les environnements nécessitant à la fois une autorité de certification d’entreprise et un proxy. Ce cas est fréquent dans les environnements d’entreprise où les services internes utilisent des certificats privés et où tout le trafic doit transiter par un proxy.
  • CORP_ROOT_CA_B64 — certificat d’autorité de certification d’entreprise encodé en Base64 - CORP_HTTP_PROXY, CORP_HTTPS_PROXY — URL du proxy - CORP_NO_PROXY — hôtes à exclure du proxy
Vos registres privés, serveurs Git ou autres services internes ne sont accessibles que via un VPN. Ce module doit s’exécuter avant les autres modules qui nécessitent un accès réseau aux ressources internes.
OpenVPN :
  • VPN_CONFIG_B64 — Fichier de configuration OpenVPN encodé en Base64 (.ovpn). Générez-le avec : cat corp.ovpn | base64 -w0
  • VPN_AUTH_USER (facultatif) — Nom d’utilisateur du VPN, si votre VPN nécessite une authentification par nom d’utilisateur et mot de passe
  • VPN_AUTH_PASS (facultatif) — Mot de passe du VPN
WireGuard :
  • WG_CONFIG_B64 — Fichier de configuration WireGuard encodé en Base64. Générez-le avec : cat wg0.conf | base64 -w0
OpenVPN :
WireGuard :
Pour plus d’informations sur la configuration du VPN, consultez Configuration du VPN.
Vos services internes utilisent des noms DNS privés qui ne sont pas résolubles via le DNS public.

Identité et sécurité

Votre organisation exige que tous les commits Git soient signés, et vous souhaitez que GitHub marque les commits de Devin comme Verified.
  • GPG_PRIVATE_KEY_B64 — Clé privée GPG encodée en Base64. Générez-la avec : gpg --export-secret-keys <key-id> | base64 -w0
  • GIT_USER_NAME — Nom de l’auteur Git (p. ex., Devin AI)
  • GIT_USER_EMAIL — Adresse e-mail de l’auteur Git. Doit correspondre à un UID de la clé GPG, sinon GitHub ne vérifiera pas la signature.
Importez également la clé publique correspondante dans le compte GitHub dont Devin utilise les identifiants pour effectuer le push (dans GitHub Settings > SSH and GPG keys). GitHub ne marque les commits comme Verified que lorsque la clé publique de signature est enregistrée sur le compte auteur du commit.
Configurez l’identité Git et les clés SSH de Devin pour accéder à des serveurs Git privés.
  • GIT_USER_NAME — Nom de l’auteur Git - GIT_USER_EMAIL — Adresse e-mail de l’auteur Git - SSH_PRIVATE_KEY_B64 — Clé privée SSH encodée en Base64. Générez-la avec : cat ~/.ssh/id_ed25519 | base64 -w0 - SSH_KNOWN_HOSTS_B64 — Entrées du fichier known_hosts encodées en Base64. Générez-les avec : ssh-keyscan git.corp.internal | base64 -w0 - SSH_CONFIG_B64 (facultatif) — Fichier de configuration SSH encodé en Base64
Générez l’entrée known_hosts de votre serveur Git avec ssh-keyscan git.corp.internal | base64 -w0.

Configuration du système

Installez les packages système qui ne figurent pas dans l’image Devin par défaut (p. ex., des bibliothèques natives pour le traitement d’images ou la génération de PDF).
Définissez des variables d’environnement persistantes qui doivent être disponibles dans chaque session.L’approche recommandée consiste à écrire des lignes KEY=VALUE dans le fichier $ENVRC. Les variables écrites dans $ENVRC sont automatiquement exportées pour toutes les étapes suivantes ainsi que pour la session Devin (comme avec le $GITHUB_ENV de GitHub Actions).
Vous pouvez également définir des variables d’environnement dans des scripts /etc/profile.d/ afin de les rendre disponibles à l’échelle du système :
Les deux approches fonctionnent. $ENVRC est plus simple et recommandé dans la plupart des cas.
Les images de base par défaut peuvent avoir des paramètres régionaux incorrects. Configurez les paramètres régionaux et le fuseau horaire pour éviter les avertissements des outils de build, de Java, de Python et de Git.
Les builds Java, Gradle et Node.js atteignent fréquemment la limite par défaut de 1 024 fichiers ouverts. Augmentez-la pour éviter les build failures.
Dans les environnements en air gap ou restreints, remplacez les sources APT Ubuntu par défaut par un miroir interne.
- APT_MIRROR_URL — URL de votre miroir APT interne (p. ex., https://artifactory.example.com/artifactory/ubuntu-remote)
Schémas d’URL courants pour les miroirs APT :
  • Artifactory: https://artifactory.example.com/artifactory/ubuntu-remote
  • Nexus: https://nexus.example.com/repository/ubuntu-proxy

Patterns avancés

L’environnement de base de Devin comprend direnv. Utilisez initialize pour créer des fichiers .envrc. Direnv les charge automatiquement.
direnv est intégré d’emblée au shell de Devin, donc les variables .envrc se chargent automatiquement. Aucun chargement manuel n’est nécessaire.
Pour les variables d’environnement sensibles (API keys, jetons, mots de passe de base de données), utilisez les secrets du dépôt plutôt que des fichiers .envrc. Les secrets du dépôt sont stockés de manière sécurisée et injectés au début de la session. Ils n’apparaissent jamais dans votre blueprint ni dans votre snapshot.
Utilisez nvm (préinstallé) pour changer de version de Node.js pour chaque dépôt via .nvmrc.
nvm use lit .nvmrc à la racine du dépôt. Assurez-vous que votre dépôt en contient un (p. ex. avec 20).
Devin fournit un navigateur Chrome avec un endpoint CDP sur localhost:29229 pendant les sessions. Utilisez des scripts Playwright pour automatiser la connexion via le navigateur.
Le navigateur n’est disponible que pendant les sessions, pas dans les builds du snapshot. Installez Playwright dans initialize et conservez les scripts de connexion dans votre repo.
Exemple de script de connexion (scripts/login.py) :
Stockez les identifiants de connexion dans les secrets, pas dans le code source. Pour une authentification persistante, versionnez les scripts de connexion dans .agents/skills/ afin que Devin puisse se réauthentifier automatiquement.
Installez des packages système, des binaires personnalisés et configurez le PATH dans initialize.
Devin prend en charge l’exécution de GitHub Actions basées sur Node.js directement dans les blueprints. Cela est utile pour installer des versions spécifiques d’outils via les mêmes actions que celles utilisées par votre CI.
Des actions comme setup-node et setup-python modifient le PATH et les variables d’environnement. Les binaires installés par une action sont disponibles dans toutes les étapes suivantes et dans maintenance. Seules les GitHub Actions basées sur Node.js sont prises en charge. Les actions composites et celles basées sur Docker ne le sont pas.
Vous n’avez pas besoin de GitHub Actions pour la configuration de base des outils. Des commandes shell directes (nvm install 20, curl ... | sh, apt-get install) fonctionnent tout aussi bien et sont souvent plus simples. Les GitHub Actions sont surtout utiles si vous voulez reproduire exactement votre configuration CI ou bénéficier de la praticité d’actions comme setup-java, qui gèrent plusieurs distributions.
Exécutez plusieurs services derrière des noms d’hôte plausibles via HTTPS, comme app.example.com, api.example.com et admin.example.com. Installez un seul proxy inverse dans initialize et faites pointer chaque nom d’hôte vers un port upstream local distinct.Caddy gère le routage et le TLS local dans un seul outil. Un Caddyfile associe chaque nom d’hôte à un upstream, et tls internal émet automatiquement, pour chaque nom d’hôte, un certificat approuvé à partir de l’autorité de certification intégrée à Caddy. caddy trust installe la racine de cette autorité dans le magasin de confiance du système, et l’ajout de cette même racine à la base de données NSS permet au navigateur de l’accepter.Importez votre Caddyfile via la section Pièces jointes de l’éditeur de blueprint ; il sera alors disponible sous la forme $FILE_CADDYFILE.
Caddyfile
Le bloc /etc/hosts permet à app.example.com de pointer vers 127.0.0.1 à l’intérieur de la session. Ajoutez une entrée pour chaque hostname que vous mettez dans le Caddyfile.
Pour ajouter un service, ajoutez un bloc de trois lignes au Caddyfile et une entrée au bloc /etc/hosts, puis accédez à son hostname en HTTPS. Caddy génère un certificat à la première requête ; aucune génération de certificat par application n’est donc nécessaire.

Exemples full-stack

Ces exemples montrent comment les configurations Enterprise et celles au niveau de l’org se combinent. En pratique, vous les répartiriez entre plusieurs périmètres. Elles sont regroupées ici à titre de référence.
Un environnement d’entreprise complet : certificat d’autorité de certification d’entreprise, proxy, Java (Maven), Python (pip/uv), Node.js (npm) et Docker, le tout pointant vers une seule instance Artifactory.
Réseau et confiance (échelle du compte) :
  • CORP_ROOT_CA_B64 — certificat d’autorité de certification d’entreprise encodé en Base64
  • CORP_HTTP_PROXY — URL du proxy HTTP
  • CORP_HTTPS_PROXY — URL du proxy HTTPS
  • CORP_NO_PROXY — hôtes à ne pas faire passer par le proxy
Identifiants du registre (échelle de l’organisation) :
  • ARTIFACTORY_USER — nom d’utilisateur Artifactory
  • ARTIFACTORY_TOKEN — jeton d’API Artifactory ou mot de passe
  • ARTIFACTORY_MAVEN_URL — URL du dépôt Maven (p. ex., https://artifactory.example.com/artifactory/maven-virtual)
  • ARTIFACTORY_PYPI_URL — URL du dépôt PyPI (p. ex., https://user:token@artifactory.example.com/artifactory/api/pypi/pypi-virtual/simple)
  • ARTIFACTORY_NPM_URL — URL du dépôt npm (p. ex., https://artifactory.example.com/artifactory/api/npm/npm-virtual)
  • ARTIFACTORY_DOCKER_URL — URL du registre Docker (p. ex., artifactory.example.com)
Cela serait généralement réparti en trois périmètres :
  • À l’échelle du compte (initialize) : certificat et proxy
  • À l’échelle de l’organisation (initialize) : Installation des runtimes de langage
  • À l’échelle de l’organisation (maintenance) : Identifiants du registre (actualisés pendant les builds, mis à disposition de l’agent au début de la session)
Présenté ici en version combinée pour référence :
Dans cet exemple, tous les registres pointent vers la même instance Artifactory, mais utilisent des chemins d’URL différents. Chaque écosystème de packages a son propre format d’endpoint. Les URL Maven, PyPI, npm et Docker sont toutes différentes, même pour un même registre.
Lorsque différents langages utilisent des registres privés différents (par ex. Maven via Nexus, npm via GitHub Packages, Python via Artifactory).
  • NEXUS_MAVEN_URL — URL du dépôt Maven Nexus
  • NEXUS_USER — nom d’utilisateur Nexus
  • NEXUS_PASS — mot de passe Nexus
  • GITHUB_PACKAGES_TOKEN — jeton d’accès personnel GitHub avec le périmètre read:packages
  • ARTIFACTORY_USER — nom d’utilisateur Artifactory
  • ARTIFACTORY_TOKEN — jeton d’API Artifactory
  • GIT_TOKEN — jeton d’accès personnel pour les modules Go privés
Dans un environnement totalement en air gap, Devin ne peut accéder à aucune URL publique. Tous les outils, environnements d’exécution et packages doivent provenir de miroirs internes.
Certificats :
  • CORP_ROOT_CA_B64 — certificat d’autorité de certification de l’entreprise encodé en Base64
Accès au miroir :
  • APT_MIRROR_URL — URL du miroir APT Ubuntu interne
  • MIRROR_USER — nom d’utilisateur d’authentification au miroir
  • MIRROR_PASS — mot de passe d’authentification au miroir
  • JDK_TARBALL_URL — URL pour télécharger l’archive tar du JDK depuis le miroir interne
  • NODE_TARBALL_URL — URL pour télécharger l’archive tar de Node.js depuis le miroir interne
Registres de packages :
  • INTERNAL_MAVEN_URL — URL du registre Maven interne
  • INTERNAL_NPM_URL — URL du registre npm interne
  • INTERNAL_PYPI_URL — URL du registre PyPI interne
Dans les environnements en air gap, tous les outils dont Devin a besoin (environnement d’exécution, outils CLI, etc.) doivent être disponibles sur vos miroirs internes. Les registres publics et les sites de téléchargement ne sont pas accessibles.
Une configuration Enterprise complète combinant la connectivité VPN avec des certificats, un proxy et la prise en charge multilingue. Voici l’ordre des opérations recommandé.
VPN :
  • VPN_CONFIG_B64 — fichier de configuration OpenVPN encodé en Base64
Réseau & confiance :
  • CORP_ROOT_CA_B64 — certificat d’autorité de certification d’entreprise encodé en Base64
  • CORP_HTTP_PROXY — URL du proxy HTTP
  • CORP_HTTPS_PROXY — URL du proxy HTTPS
  • CORP_NO_PROXY — hôtes à contourner via le proxy
Identifiants du registre :
  • MAVEN_REGISTRY_URL — URL du registre Maven
  • NPM_REGISTRY_URL — URL du registre npm
  • PYPI_REGISTRY_HOST — nom d’hôte du registre PyPI
  • REGISTRY_USER — nom d’utilisateur du registre (pour Maven et pip)
  • REGISTRY_PASS — mot de passe du registre (pour Maven et pip)
  • REGISTRY_TOKEN — jeton d’authentification npm
L’ordre des étapes initialize est important. Le VPN doit venir en premier (pour que les hôtes internes soient accessibles), puis le DNS (pour que la résolution des noms fonctionne), puis les certificats (pour que HTTPS fonctionne), puis le proxy (pour que le trafic soit correctement acheminé), et enfin les environnements d’exécution (qui peuvent télécharger depuis des miroirs internes).

Conseils pour rédiger de bons blueprints

  • Testez d’abord les commandes dans une session. Exécutez-les manuellement dans une session Devin avant de les ajouter à votre blueprint. C’est plus rapide que d’attendre un cycle de build complet.
  • Utilisez initialize pour les outils à installer une seule fois, et maintenance pour les dépendances. Tout ce qui prend plusieurs minutes à installer (compilateurs, gros binaires, outils globaux) doit aller dans initialize. Les commandes de dépendances rapides (npm install, uv sync) vont dans maintenance.
  • Veillez à ce que les commandes maintenance restent rapides. Visez moins de 2 minutes. Elles s’exécutent pendant les builds et sont exposées à l’agent au démarrage de la session.
  • Utilisez $ENVRC pour les variables d’environnement. N’écrivez pas dans .bashrc ou .profile. $ENVRC est le mécanisme pris en charge pour définir des variables entre les étapes et les sessions.
  • Nommez vos étapes. La syntaxe développée avec des champs name permet d’identifier beaucoup plus facilement les échecs dans les journaux de build.
  • Utilisez des subshells pour les monorepos. (cd packages/foo && npm install) s’exécute dans un subshell afin que les étapes suivantes ne soient pas affectées par le changement de répertoire.
  • Utilisez npm install, pas npm ci. npm ci supprime node_modules et réinstalle tout depuis zéro, ce qui est trop lent pour maintenance.
  • Utilisez les secrets du dépôt pour les valeurs sensibles. Configurez-les dans l’onglet Secrets de l’éditeur de blueprint du dépôt plutôt que de les coder en dur dans les blueprints.
Pour les détails de syntaxe, consultez la référence des blueprints. Pour résoudre les échecs de build, consultez Configuration déclarative > Dépannage.