$SECRET_NAME. Konfigurieren Sie diese im Secrets-Tab innerhalb jedes Blueprint-Editors, bevor Sie eine Vorlage verwenden. Hinterlegen Sie Zugangsdaten niemals hartcodiert in Ihrem Blueprint.Schnellstart
Node.js-Projekt
Node.js-Projekt
Python-Projekt
Python-Projekt
Full-Stack (Node + Python)
Full-Stack (Node + Python)
Repository-Blueprints
Python
- uv (empfohlen)
- pip + venv
Node.js
- npm
- pnpm
maintenance npm install (nicht npm ci). Dadurch wird ein inkrementelles Update durchgeführt, während npm ci node_modules löscht und in jeder Sitzung alles von Grund auf neu installiert.Go
Java
- Gradle
- Maven
Ruby on Rails
Rust
Monorepos
- Mehrsprachig
- Mehrere JDK-Versionen
Private Paket-Registries
Node.js-Registries
- npm (scoped)
- npm (full mirror)
- pnpm
- Yarn
@myorg/*) aus einer privaten Registry bezogen werden, während öffentliche Packages weiterhin aus der Standard-npm-Registry kommen.Erforderliche Secrets
Erforderliche Secrets
GITHUB_PACKAGES_TOKEN — Personal Access Token oder GitHub-App-Token mit dem Geltungsbereich read:packagesPython-Registries
- pip / uv
- Poetry
Erforderliche Secrets
Erforderliche Secrets
PYPI_REGISTRY_URL— Vollständige URL Ihres PyPI-Index, einschließlich Anmeldedaten, falls erforderlich (z. B.https://user:token@nexus.example.com/repository/pypi-proxy/simple)
JVM-Registries
- Maven
- Gradle
Erforderliche Secrets
Erforderliche Secrets
MAVEN_REGISTRY_URL— URL Ihrer Maven-Registry (z. B.https://artifactory.example.com/artifactory/maven-virtual) -REGISTRY_USER— Registry-Nutzername -REGISTRY_PASS— Registry-Passwort oder API-Token
Weitere Registries
Go-Modul-Proxy
Go-Modul-Proxy
GOPROXY-Endpunkt).Erforderliche Secrets
Erforderliche Secrets
GO_PROXY_URL— URL Ihres Go-Modul-Proxys (z. B.https://athens.corp.internal)GIT_TOKEN— Personal Access Token für private Git-Repos, die Go-Module bereitstellen
.NET / NuGet
.NET / NuGet
Erforderliche Secrets
Erforderliche Secrets
NUGET_SOURCE_URL— URL Ihres NuGet-FeedsNUGET_API_KEY— API key oder PAT für den Feed
Docker
Docker
Erforderliche Secrets
Erforderliche Secrets
DOCKER_MIRROR_URL(optional) — URL Ihres Docker-Hub-Mirrors (z. B.https://mirror.corp.internal)DOCKER_REGISTRY_URL— URL Ihrer privaten Container-Registry (z. B.registry.corp.internal:5000)DOCKER_REGISTRY_USER— Registry-NutzernameDOCKER_REGISTRY_PASS— Registry-Passwort oder API-Token
Rust / Cargo
Rust / Cargo
Erforderliche Secrets
Erforderliche Secrets
CARGO_REGISTRY_INDEX— URL des Index einer privaten Registry (z. B.sparse+https://cargo.corp.internal/api/v1/crates/)CARGO_REGISTRY_TOKEN— Auth-Token für die private Registry
Ruby / Bundler
Ruby / Bundler
Erforderliche Secrets
Erforderliche Secrets
GEM_SERVER_URL— URL Ihres privaten Gem-Servers (z. B.https://artifactory.example.com/artifactory/api/gems/gems-virtual)REGISTRY_USER— Registry-NutzernameREGISTRY_PASS— Registry-Passwort oder API-Token
PHP / Composer
PHP / Composer
Erforderliche Secrets
Erforderliche Secrets
COMPOSER_REGISTRY_URL— URL Ihrer privaten Composer-Registry (z. B.https://repo.packagist.com/<org>)REGISTRY_USER— Registry-NutzernameREGISTRY_PASS— Registry-Passwort oder API-Token
Aktualisierung des AWS-CodeArtifact-Tokens
Aktualisierung des AWS-CodeArtifact-Tokens
maintenance, um den Befehl zur Token-Aktualisierung einzurichten, damit der Agent ihn bei Bedarf erneut ausführen kann. Dieses Beispiel konfiguriert npm, pip und Maven für die Verwendung mit CodeArtifact.awscli ist im Basis-Image von Devin vorinstalliert. Sie benötigen nur die Token-Aktualisierung und die Registry-Konfiguration.Erforderliche Secrets
Erforderliche Secrets
AWS_ACCESS_KEY_IDundAWS_SECRET_ACCESS_KEY— IAM-Anmeldedaten mit den Berechtigungencodeartifact:GetAuthorizationTokenundsts:GetServiceBearerTokenCA_DOMAIN— Name Ihrer CodeArtifact-DomainCA_DOMAIN_OWNER— AWS-Konto-ID, dem die Domain gehörtCA_REGION— AWS-Region (z. B.us-east-1)CA_NPM_REPO,CA_PYPI_REPO,CA_MAVEN_REPO— Reponamen für jedes Ökosystem
Enterprise-Infrastruktur
Netzwerk und Konnektivität
Unternehmens-CA-Zertifikat
Unternehmens-CA-Zertifikat
Erforderliche Secrets
Erforderliche Secrets
CORP_ROOT_CA_B64 — Base64-kodiertes PEM-Zertifikat von der CA Ihres Unternehmens. erzeugen mit: cat corp-root-ca.crt | base64 -w0Mehrere CA-Zertifikate
Mehrere CA-Zertifikate
Erforderliche Secrets
Erforderliche Secrets
CORP_ROOT_CA_B64 — Base64-codiertes primäres CA-Zertifikat - CORP_INTERMEDIATE_CA_B64 — Base64-codiertes ZwischenzertifikatHTTP/HTTPS-Proxy
HTTP/HTTPS-Proxy
Erforderliche Secrets
Erforderliche Secrets
CORP_HTTP_PROXY— HTTP-Proxy-URL (z. B.http://proxy.corp.example.com:8080) -CORP_HTTPS_PROXY— HTTPS-Proxy-URL -CORP_NO_PROXY— kommagetrennte Liste der Hosts, die den Proxy umgehen sollen (z. B.localhost,127.0.0.1,.corp.example.com)
Proxy mit Authentifizierung
Proxy mit Authentifizierung
Erforderliche Secrets
Erforderliche Secrets
PROXY_USER— Proxy-Nutzername -PROXY_PASS— Proxy-Passwort -PROXY_HOST— Proxy-Hostname und -Port (z. B.proxy.corp.example.com:8080) -CORP_NO_PROXY— Hosts, für die der Proxy umgangen werden soll
CA-Zertifikat + Proxy (kombiniert)
CA-Zertifikat + Proxy (kombiniert)
Erforderliche Secrets
Erforderliche Secrets
CORP_ROOT_CA_B64— Base64-kodiertes Unternehmens-CA-Zertifikat -CORP_HTTP_PROXY,CORP_HTTPS_PROXY— Proxy-URLs -CORP_NO_PROXY— Hosts, die den Proxy umgehen
VPN-Verbindung
VPN-Verbindung
Erforderliche Secrets
Erforderliche Secrets
VPN_CONFIG_B64— Base64-kodierte OpenVPN-Konfigurationsdatei (.ovpn). Erzeugen mit:cat corp.ovpn | base64 -w0VPN_AUTH_USER(optional) — VPN-Nutzername, falls Ihr VPN eine Authentifizierung per Nutzername/Passwort erfordertVPN_AUTH_PASS(optional) — VPN-Passwort
WG_CONFIG_B64— Base64-kodierte WireGuard-Konfigurationsdatei. Erzeugen mit:cat wg0.conf | base64 -w0
Benutzerdefinierte DNS-Namensauflösung
Benutzerdefinierte DNS-Namensauflösung
Identität und Sicherheit
GPG-Commit-Signierung
GPG-Commit-Signierung
Erforderliche Secrets
Erforderliche Secrets
GPG_PRIVATE_KEY_B64— Base64-kodierter privater GPG-Schlüssel. Erzeugen mit:gpg --export-secret-keys <key-id> | base64 -w0GIT_USER_NAME— Name des Git-Autors (z. B.Devin AI)GIT_USER_EMAIL— E-Mail-Adresse des Git-Autors. Muss mit einer UID im GPG-Schlüssel übereinstimmen, sonst verifiziert GitHub die Signatur nicht.
Git-Identität und SSH-Schlüssel
Git-Identität und SSH-Schlüssel
Erforderliche Secrets
Erforderliche Secrets
GIT_USER_NAME— Name des Git-Autors -GIT_USER_EMAIL— E-Mail-Adresse des Git-Autors -SSH_PRIVATE_KEY_B64— Base64-kodierter privater SSH-Schlüssel. Erzeugen mit:cat ~/.ssh/id_ed25519 | base64 -w0-SSH_KNOWN_HOSTS_B64— Base64-kodierte Known-Hosts-Einträge. Erzeugen mit:ssh-keyscan git.corp.internal | base64 -w0-SSH_CONFIG_B64(optional) — Base64-kodierte SSH-Konfigurationsdatei
Systemkonfiguration
Systempakete
Systempakete
Benutzerdefinierte Umgebungsvariablen
Benutzerdefinierte Umgebungsvariablen
KEY=VALUE in die Datei $ENVRC zu schreiben. In $ENVRC geschriebene Variablen werden automatisch für alle nachfolgenden Schritte und die Devin-Sitzung exportiert (ähnlich wie bei $GITHUB_ENV in GitHub Actions’).Region und Zeitzone
Region und Zeitzone
Ressourcenlimits (ulimits)
Ressourcenlimits (ulimits)
APT-Mirror ersetzen
APT-Mirror ersetzen
Erforderliche Secrets
Erforderliche Secrets
APT_MIRROR_URL — URL Ihres internen APT-Mirrors (z. B. https://artifactory.example.com/artifactory/ubuntu-remote)Fortgeschrittene Nutzungsmuster
Umgebungsvariablen mit direnv
Umgebungsvariablen mit direnv
initialize, um .envrc-Dateien zu erstellen. Direnv lädt sie automatisch..envrc-Variablen automatisch geladen werden. Ein manuelles Sourcing ist nicht nötig.Node-Version pro Repository wechseln
Node-Version pro Repository wechseln
.nvmrc zu wechseln.nvm use liest die .nvmrc aus dem Stammverzeichnis des Repo. Stellen Sie sicher, dass Ihr Repository eine solche Datei enthält (z. B. mit 20 als Inhalt).Authentifizierung im Browser (Playwright)
Authentifizierung im Browser (Playwright)
localhost:29229 bereit. Verwenden Sie Playwright-Skripte, um browserbasierte Anmeldungen zu automatisieren.scripts/login.py):Benutzerdefinierte System-Tools und PATH
Benutzerdefinierte System-Tools und PATH
initialize.GitHub Actions zum Einrichten von Tools
GitHub Actions zum Einrichten von Tools
setup-node und setup-python ändern PATH und Umgebungsvariablen. Von einer Action installierte Binärdateien sind in allen nachfolgenden Schritten und in maintenance verfügbar. Nur
Node.js-basierte GitHub Actions werden unterstützt. Composite- und Docker-basierte Actions werden nicht unterstützt.Lokaler HTTPS-Reverse-Proxy für mehrere Apps
Lokaler HTTPS-Reverse-Proxy für mehrere Apps
app.example.com, api.example.com und admin.example.com. Installieren Sie in initialize einen einzelnen Reverse-Proxy und leiten Sie jeden Hostname an einen anderen lokalen Upstream-Port weiter.Caddy übernimmt Routing und lokales TLS in einem einzigen Tool. Eine Caddyfile weist jeden Hostname einem Upstream zu, und tls internal stellt automatisch für jeden Hostname ein vertrauenswürdiges Zertifikat von Caddys integrierter CA aus. caddy trust installiert dieses CA-Root im System-Trust-Store, und wenn Sie dasselbe Root auch zur NSS-Datenbank hinzufügen, akzeptiert es der Browser ebenfalls.Laden Sie Ihre Caddyfile über den Abschnitt Dateianhänge im Blueprint-Editor hoch; sie ist dann als $FILE_CADDYFILE verfügbar./etc/hosts-Schleife sorgt dafür, dass app.example.com innerhalb der Sitzung auf 127.0.0.1 verweist. Fügen Sie für jeden Hostnamen, den Sie in die Caddyfile eintragen, einen Eintrag hinzu.Full-Stack-Beispiele
Kompletter Enterprise-Stack (Artifactory)
Kompletter Enterprise-Stack (Artifactory)
Benötigte Secrets
Benötigte Secrets
CORP_ROOT_CA_B64— Base64-kodiertes Unternehmens-CA-ZertifikatCORP_HTTP_PROXY— HTTP-Proxy-URLCORP_HTTPS_PROXY— HTTPS-Proxy-URLCORP_NO_PROXY— Hosts, die den Proxy umgehen sollen
ARTIFACTORY_USER— Artifactory-NutzernameARTIFACTORY_TOKEN— Artifactory-API-Token oder PasswortARTIFACTORY_MAVEN_URL— Maven-Repository-URL (z. B.https://artifactory.example.com/artifactory/maven-virtual)ARTIFACTORY_PYPI_URL— PyPI-Repository-URL (z. B.https://user:token@artifactory.example.com/artifactory/api/pypi/pypi-virtual/simple)ARTIFACTORY_NPM_URL— npm-Repository-URL (z. B.https://artifactory.example.com/artifactory/api/npm/npm-virtual)ARTIFACTORY_DOCKER_URL— Docker-Registry-URL (z. B.artifactory.example.com)
- Kontoweit (
initialize): Zertifikat und Proxy - Organisationsweit (
initialize): Installationen von Laufzeitumgebungen für Programmiersprachen - Organisationsweit (
maintenance): Registry-Anmeldedaten (werden während der Builds aktualisiert und dem Agenten zu Sitzungsbeginn bereitgestellt)
Mehrsprachigkeit mit verschiedenen Registries
Mehrsprachigkeit mit verschiedenen Registries
Erforderliche Secrets
Erforderliche Secrets
NEXUS_MAVEN_URL— URL des Nexus-Maven-RepositorysNEXUS_USER— Nexus-NutzernameNEXUS_PASS— Nexus-PasswortGITHUB_PACKAGES_TOKEN— GitHub Personal Access Token mit dem Geltungsbereichread:packagesARTIFACTORY_USER— Artifactory-NutzernameARTIFACTORY_TOKEN— Artifactory-API-TokenGIT_TOKEN— Personal Access Token für private Go-Module
Air-Gap-Umgebung mit privaten Mirrors
Air-Gap-Umgebung mit privaten Mirrors
Erforderliche Secrets
Erforderliche Secrets
CORP_ROOT_CA_B64— Base64-kodiertes Unternehmens-CA-Zertifikat
APT_MIRROR_URL— URL des internen Ubuntu-APT-MirrorsMIRROR_USER— Nutzername für die Authentifizierung am MirrorMIRROR_PASS— Passwort für die Authentifizierung am MirrorJDK_TARBALL_URL— URL zum Herunterladen des JDK-Tarballs vom internen MirrorNODE_TARBALL_URL— URL zum Herunterladen des Node.js-Tarballs vom internen Mirror
INTERNAL_MAVEN_URL— URL der internen Maven-RegistryINTERNAL_NPM_URL— URL der internen npm-RegistryINTERNAL_PYPI_URL— URL der internen PyPI-Registry
VPN + Zertifikate + Proxy + Sprachen
VPN + Zertifikate + Proxy + Sprachen
Benötigte Secrets
Benötigte Secrets
VPN_CONFIG_B64— Base64-kodierte OpenVPN-Konfigurationsdatei
CORP_ROOT_CA_B64— Base64-kodiertes Unternehmens-CA-ZertifikatCORP_HTTP_PROXY— HTTP-Proxy-URLCORP_HTTPS_PROXY— HTTPS-Proxy-URLCORP_NO_PROXY— Hosts, die den Proxy umgehen
MAVEN_REGISTRY_URL— Maven-Registry-URLNPM_REGISTRY_URL— npm-Registry-URLPYPI_REGISTRY_HOST— PyPI-Registry-HostnameREGISTRY_USER— Registry-Nutzername (für Maven und pip)REGISTRY_PASS— Registry-Passwort (für Maven und pip)REGISTRY_TOKEN— npm-Auth-Token
initialize-Schritten wichtig. Zuerst muss das VPN eingerichtet werden (damit interne Hosts erreichbar sind), dann DNS (damit Namen aufgelöst werden können), dann Zertifikate (damit HTTPS funktioniert), dann der Proxy (damit der Datenverkehr korrekt weitergeleitet wird) und schließlich Laufzeitumgebungen für Programmiersprachen (die möglicherweise aus internen Mirrors herunterladen).Tipps zum Schreiben guter Blueprints
- Teste Befehle zuerst in einer Sitzung. Führe Befehle manuell in einer Devin-Sitzung aus, bevor du sie deinem Blueprint hinzufügst. Das geht schneller, als auf einen vollständigen Build-Zyklus zu warten.
- Verwende
initializefür Tools, die nur einmal installiert werden, undmaintenancefür Abhängigkeiten. Alles, was mehrere Minuten für die Installation braucht (Compiler, große Binärdateien, globale Tools), gehört ininitialize. Schnelle Befehle für Abhängigkeiten (npm install,uv sync) gehören inmaintenance. - Halte
maintenance-Befehle schnell. Sie sollten nach Möglichkeit in unter 2 Minuten laufen. Diese Befehle werden während Builds ausgeführt und dem Agenten zu Sitzungsbeginn angezeigt. - Verwende
$ENVRCfür Umgebungsvariablen. Schreibe nicht in.bashrcoder.profile.$ENVRCist der unterstützte Mechanismus, um Variablen schritt- und sitzungsübergreifend zu setzen. - Gib deinen Schritten Namen. Die erweiterte Form mit
name-Feldern macht Fehler in Build-Logs deutlich leichter auffindbar. - Verwende Subshells für Monorepos.
(cd packages/foo && npm install)läuft in einer Subshell, sodass nachfolgende Schritte nicht von der Verzeichnisänderung betroffen sind. - Verwende
npm install, nichtnpm ci.npm cilöschtnode_modulesund installiert alles von Grund auf neu, was fürmaintenancezu langsam ist. - Verwende Repo-Secrets für sensible Werte. Konfiguriere sie im Secrets-Tab des Blueprint-Editors des Repos, statt sie fest in Blueprints zu hinterlegen.

