Dies ist die vollständige Feldreferenz für Blueprints. Eine Einführung in Blueprints und ihre Rolle in Devins Umgebung finden Sie unter Deklarative
Umgebungskonfiguration.
Überblick
runs-on und includes, einem Abschnitt post-build für Blueprints auf Organisationsebene und Enterprise-Ebene und einem Abschnitt clone für Blueprints auf Repository-Ebene:
Alle Abschnitte sind optional. Sie können jede beliebige Kombination verwenden.
initialize wird bei vollständigen Builds und für Workspaces ausgeführt, die von Grund auf neu aufgebaut werden. Die Ergebnisse werden im Snapshot gespeichert. In einem differenziellen Build überspringen vererbte Workspaces initialize, ziehen den neuesten Code und führen nur maintenance aus. Schreiben Sie maintenance so, dass es in sich abgeschlossen ist und unabhängig auf dem vorhandenen Snapshot ausgeführt werden kann, ohne dass initialize unmittelbar zuvor ausgeführt werden muss oder auf Umgebungsvariablen angewiesen ist, die initialize zuvor in $ENVRC geschrieben hat. Zu Beginn jeder Sitzung werden maintenance-Befehle nicht automatisch ausgeführt — stattdessen werden sie dem Agenten als Kontext angezeigt, damit er weiß, welche Befehle für Abhängigkeiten bei Bedarf ausgeführt werden müssen (z. B. nach dem Abrufen des neuesten Codes). Die Befehle sollten weiterhin schnell und inkrementell sein. Builds werden automatisch ausgeführt, wenn sich Ihr Blueprint ändert, und außerdem regelmäßig (ca. alle 24 Stunden).
initialize
initialize, um Tools und Laufzeitumgebungen zu installieren, die nicht vom konkreten Zustand deines Codes abhängen: Laufzeitumgebungen für Programmiersprachen, Systempakete, globale CLIs.
Einfache Form
Strukturierte Form
run.
Wann initialize statt maintenance verwenden
Beide Abschnitte werden bei vollständigen Builds ausgeführt. Bei differenziellen Builds überspringen vererbte Workspaces
initialize und führen nach dem Abrufen des neuesten Codes nur maintenance aus. Tools und Laufzeitumgebungen für Programmiersprachen gehören in initialize; Abhängigkeitsbefehle, die sich an den Lock-Dateien Ihres Codes orientieren, gehören in maintenance.
maintenance
maintenance für die Installation von Abhängigkeiten und andere Befehle, die nach dem Klonen Ihres Codes ausgeführt werden sollen. Diese Befehle werden während Builds ausgeführt und dem Agenten zu Beginn der Sitzung angezeigt, damit er sie erneut ausführen kann, wenn sich Abhängigkeiten geändert haben. Hierhin gehören npm install, pip install, uv sync und ähnliche Befehle.
Für Blueprints auf Repo-Ebene werden
maintenance-Befehle im Root-Verzeichnis des Repos ausgeführt. Für Blueprints auf Org-Ebene werden sie im Home-Verzeichnis (~) ausgeführt.knowledge
knowledge wird nicht ausgeführt. Er enthält Referenzinformationen, die Devin bei der Arbeit an Ihrem Projekt verwendet. Hier geben Sie Devin die richtigen Befehle für Linting, Tests, Builds und andere projektspezifische Workflows an.
Das Feld
name ist eine Bezeichnung. Üblicherweise sind lint, test und build die Standardnamen. Bei der Überprüfung seiner Arbeit greift Devin auf diese zurück. Sie können beliebige zusätzliche Knowledge-Einträge mit benutzerdefinierten Namen hinzufügen:
runs-on
runs-on auf oberster Ebene akzeptiert einen String oder eine Liste von Strings. Der Standardwert ist ["default"]. Die Labels default und linux sind unabhängig von Groß- und Kleinschreibung verwendbare Aliasse für die Standard-Linux-Plattform. Jedes andere Label muss mit einer in Ihrem Konto registrierten Maschinenkonfiguration übereinstimmen, z. B. windows oder macos.
Wenn ein Block mehrere Plattform-Labels enthält, erstellt Devin für jede Plattform einen Snapshot-Build und führt jeweils dieselben Schritte aus. Zwei Blöcke in derselben Datei können nicht dieselbe Plattform verwenden; dies gilt auch für die Aliasse default und linux.
Informationen zur plattformspezifischen Einrichtung finden Sie unter Windows-Unterstützung und macOS-Unterstützung.
includes
includes gilt nur für git-basierte Blueprints: Devin löst es auf, wenn es die .devin/blueprint.yaml-Datei im Stammverzeichnis eines Repositorys erkennt. In Blueprints, die im Settings-Editor erstellt wurden, wird es ignoriert und in einem eingebundenen Workspace-Blueprint ist es nicht zulässig.
Es akzeptiert einen String oder eine Liste von Strings. Jeder Eintrag verweist auf ein Workspace-Unterverzeichnis; Devin sucht nach <dir>/.devin/blueprint.yaml, wobei auch der vollständige Dateipfad zulässig ist. Pfade dürfen kein .. enthalten.
Verschachtelte Includes werden abgelehnt, und jeder Workspace-Pfad darf nur einmal vorkommen. Fehlt eine eingebundene Datei, behandelt Devin diesen Workspace als entfernt.
post-build
post-build ist nur in Blueprints auf Organisations- und Enterprise-Ebene verfügbar (in Blueprints auf Repository-Ebene wird er nicht unterstützt). Seine Schritte werden während des Builds ausgeführt, nachdem alle Repositorys geklont wurden und ihre Schritte initialize und maintenance abgeschlossen sind, aber bevor die Integritätsprüfung durchgeführt und das Snapshot-Image erstellt wird. Damit ist dies der richtige Ort für Repository-übergreifende Validierungen und Integritätsprüfungen, die die vollständig aufgebaute Umgebung benötigen.
Da er erst spät im Build ausgeführt wird, wenn die gesamte Umgebung bereitsteht, kann ein post-build-Schritt jedes geklonte Repository und jedes Tool sehen, das von den Enterprise-, Organisations- und Repository-Blueprints installiert wurde.
post-build-Schritte verwenden dieselben Schritttypen wie initialize (Shell-run-Befehle und GitHub-Actions-uses) und werden aus dem Home-Verzeichnis (~) ausgeführt.clone
clone die Standardwerte, die Devin verwendet, wenn das Repository in den Snapshot geklont wird. Jedes Feld ist optional und greift andernfalls auf einen sinnvollen Standard zurück, der das aktuelle Verhalten beibehält.
clone gilt nur für Blueprints auf Repository-Ebene — es steuert, wie das jeweilige Repository in den Snapshot geklont wird. In Blueprints auf Organisationsebene oder Enterprise-Ebene hat es keine Wirkung.Schritttypen
initialize, maintenance oder post-build gehört zu einem von zwei Typen: Shell-Befehle (run) oder GitHub Actions (uses). maintenance-Schritte unterstützen ausschließlich run; siehe GitHub Actions.
Kurzschreibweise und Validierungsregeln
- Ein als einfacher String angegebener Abschnitt wird zu einem einzelnen
run-Schritt. - Ein als einfacher String angegebener Listeneintrag wird zu einem
run-Schritt. - Ein Schritt muss entweder
runoderusesdefinieren, aber nie beides. uses-Schritte können nicht inmaintenanceverwendet werden. Der Build schlägt fehl mit'uses' steps are not supported in maintenance sections.withist nur beiuses-Schritten gültig.- Alle
with-Werte werden in Strings umgewandelt; setzen Sie numerische Werte in Anführungszeichen, wenn die Action einen String erwartet.
Regeln für YAML-Dokumente
--- getrennte Dokument muss ein YAML-Mapping sein. Eine Sequenz auf oberster Ebene wird mit each YAML document must be a mapping, not a sequence; use '---' to separate multiple blocks abgelehnt.
Shell-Befehle (run)
Ausführungsdetails:
- Befehle werden in bash ausgeführt. Wenn in einem mehrzeiligen Skript ein Befehl fehlschlägt, wird der gesamte Schritt sofort abgebrochen.
- Blueprints auf Org-Ebene werden im Home-Verzeichnis (
~) ausgeführt. - Blueprints auf Repo-Ebene werden im Root-Verzeichnis des geklonten Repositorys ausgeführt.
- Jeder Schritt hat ein Timeout von 1 Stunde.
- Secrets sind automatisch als Umgebungsvariablen verfügbar.
GitHub Actions (uses)
initialize (oder post-build) Ihres Blueprints aus:
Format der Action-Referenz:
github.com/ und das Suffix @<ref> sind beide erforderlich. Die Referenz ist in der Regel ein Versions-Tag wie v5.
Häufig verwendete Actions:
Node.js-Actions (
node16, node20, node24) und Composite Actions werden unterstützt. Docker-Actions werden nur bei Linux-Builds unterstützt, nicht bei Windows-Builds. post-Cleanup-Schritte werden übersprungen. Siehe Einschränkungen von GitHub Actions.with-Werte:
Werte, die über with übergeben werden, werden der Action als Eingaben übergeben und folgen dabei denselben Konventionen wie in GitHub-Actions-Workflows. Alle Werte werden in Zeichenfolgen umgewandelt.
setup-python die Python-Binärdatei zu PATH hinzu, sodass sie in allen späteren Schritten und in maintenance verfügbar bleibt.
run vs. uses: wann Sie was verwenden sollten
In der Praxis verwenden die meisten Konfigurationen
uses für Laufzeitumgebungen von Programmiersprachen und run für alles andere.
Umgebungsvariablen und Secrets
Umgebungsvariablen pro Schritt
env zusätzliche Umgebungsvariablen definieren:
Schrittübergreifende Umgebungsvariablen ($ENVRC)
$ENVRC:
$ENVRC geschriebene Variablen werden automatisch exportiert und stehen in allen
nachfolgenden Schritten sowie in der Devin-Sitzung zur Verfügung, die durch den aktuellen Build erzeugt wird. Das funktioniert
ähnlich wie $GITHUB_ENV in GitHub Actions.
Dies gilt auch für PATH. Wenn Sie ein Tool in einem nicht standardmäßigen Verzeichnis
installieren (alles außerhalb von /usr/bin oder /usr/local/bin), fügen Sie den Pfad zu $ENVRC hinzu, damit
nachfolgende Schritte und Blueprints auf Repo-Ebene die Binärdatei finden können:
export PATH=... innerhalb eines run:-Blocks gilt nur für die Shell dieses Schritts.
Jeder Schritt startet einen neuen Shell-Prozess, sodass PATH-Änderungen, die nicht in
$ENVRC geschrieben werden, verloren gehen.
uses:-Actions (z. B. actions/setup-node) übernehmen ihre PATH-
Ergänzungen automatisch in $ENVRC — Sie müssen dies nur bei run:-Schritten manuell tun.$ENVRC wird zu Beginn jedes Builds zurückgesetzt, einschließlich differenzieller Builds.
Werte, die während eines Builds geschrieben werden, sind im nächsten Build nicht verfügbar. Insbesondere führt ein
vererbter Workspace nur maintenance aus, sodass er sich nicht auf
PATH oder andere Variablen verlassen kann, die initialize im übergeordneten
Build in $ENVRC geschrieben hat. Konfigurieren Sie alle von
maintenance benötigten Umgebungen innerhalb von
maintenance selbst.
Secrets
$MY_SECRET).
Secrets werden vor jedem Schritt während Builds eingefügt. Aus dem Snapshot-Image selbst werden sie entfernt, sodass Zugangsdaten niemals in gespeicherte Maschinenabbilder eingebettet sind. Außerhalb von Blueprint-Befehlen werden Secrets nicht in jede Shell exportiert; Devin bindet sie an die spezifischen Befehle, die sie benötigen.
- Organisations-Secrets: Als Umgebungsvariablen in jedem Schritt aller Blueprints in der org verfügbar. Konfigurieren Sie diese im Secrets-Tab des Editors für das organisationsweite Blueprint.
- Enterprise-Secrets: Werden mit org-Secrets zusammengeführt (bei Namenskonflikten haben org-Secrets Vorrang). In allen orgs im Enterprise verfügbar.
- Repository-Secrets: Als Umgebungsvariablen in den Blueprint-Schritten und Befehlen dieses Repos verfügbar. Konfigurieren Sie diese im Secrets-Tab des Blueprint-Editors des Repositorys.
Nur-Build-Secrets: Enterprise-Secrets können als Build only markiert werden, wenn Sie sie im Secrets-Tab des Enterprise-Blueprint-Editors hinzufügen. Für org- oder Repository-Secrets steht diese Option nicht zur Verfügung. Ein Nur-Build-Secret ist während Snapshot-Builds ausschließlich für Schritte von Enterprise- und org-Blueprints verfügbar. Es wird entfernt, bevor Repositorys geklont werden, sodass Repo-Blueprint-Schritte und
post-build-Schritte es nicht lesen können, und es wird niemals in Devin-Sitzungen eingefügt. Verwenden Sie es für Zugangsdaten, die nur während des Enterprise- oder org-Setups benötigt werden (z. B. zum Herunterladen privater Artefakte im initialize des Enterprise-Blueprints).Dateianhänge
settings.xml oder andere Konfigurationsdateien) über den Blueprint-Editor hochladen. Hochgeladene Dateien werden unter ~/.files/ abgelegt, und es wird eine Umgebungsvariable gesetzt, die auf den Pfad der jeweiligen Datei verweist:
FILE_ versehen werden.
Dateinamen müssen einfache Dateinamen sein: Sie dürfen nicht mit einem Punkt beginnen und keine Pfadtrennzeichen, Leerzeichen oder Steuerzeichen enthalten. Um eine Dotfile wie .npmrc zu verwenden, laden Sie sie unter einem Namen ohne führenden Punkt hoch (zum Beispiel npmrc) und kopieren Sie sie in einem Blueprint-Schritt an die richtige Stelle.
Verwenden Sie Dateianhänge in Ihren Blueprint-Schritten:
Git-gestützte Blueprints
.devin/blueprint.yaml-Dateien direkt in Ihrem Repository speichern und anschließend über die API oder die UI synchronisieren. Weitere Informationen und Anweisungen zum Setup finden Sie unter Git-gestützte Blueprints.
Vollständiges Beispiel
Informationen dazu, wie Blueprints über verschiedene Ebenen hinweg zusammenwirken (enterprise → org → repo), zu Build-Status, Repository-Zuständen und dazu, was einen erneuten Build auslöst, finden Sie unter Builds und Sitzungen auf der Seite zur deklarativen Konfiguration.

