Zum Hauptinhalt springen
Schnellreferenz zur Syntax und zum Verhalten von environment.yaml. Konzepte und Anleitungen finden Sie unter Umgebungskonfiguration.

Feldreferenz

Felder der obersten Ebene

FeldTypErforderlichAusgeführt währendBeschreibung
initializeString oder ListeNeinNur beim BuildEinmalige Setup-Befehle. Die Ergebnisse werden im Maschinenabbild gespeichert. Sollte idempotent sein.
maintenanceString oder ListeNeinBuild + SitzungsstartWiederkehrende Befehle für Abhängigkeiten. Möglichst schnell und inkrementell halten.
knowledgeListe von ObjektenNeinNie (nur als Referenz)Informationen, die beim Sitzungsstart in Devins Kontext geladen werden.

Schritt-Felder (Erweiterte Form)

FeldTypErforderlichBeschreibung
namestringNeinMenschenlesbare Bezeichnung, die in Build-Logs angezeigt wird. Erleichtert die Identifizierung von Fehlern.
runstringNeinAuszuführende Shell-Befehle. Mehrzeilige Strings werden unterstützt. Schritte ohne run werden übersprungen.

Felder eines Knowledge-Eintrags

FeldTypErforderlichBeschreibung
namestringJaBezeichner (z. B. test, lint, startup, architecture, notes).
contentsstringJaReferenzinhalt. Wird nicht als Befehl ausgeführt.

Ausführungsdetails

  • Befehle werden in bash mit aktiviertem set -e ausgeführt — wenn eine Zeile fehlschlägt, wird der Schritt sofort beendet.
  • Repo-spezifische Befehle werden vom Repo-Stammverzeichnis aus ausgeführt (~/repos/<repo-name>). Enterprise- und Org-Befehle werden vom Home-Verzeichnis aus ausgeführt (~).
  • Jeder Schritt in der erweiterten Form läuft in seinem eigenen Shell-Kontext.
GeltungsbereichZeitlimit
Einzelner Befehl1 Stunde
Gesamter Build2 Stunden
Best Practices:
  • Verwenden Sie Subshells für Befehle in Unterverzeichnissen: (cd packages/frontend && npm install).
  • Bevorzugen Sie inkrementelle Installationen in maintenance (z. B. npm install statt npm ci).
  • Vermeiden Sie Build-Befehle (npm run build, make) in maintenance — sie werden in jeder Sitzung ausgeführt.
  • Fügen Sie -y-Flags hinzu, um interaktive Abfragen zu vermeiden: sudo DEBIAN_FRONTEND=noninteractive apt-get install -y.
  • Befehle sollten sich sicher mehrfach ausführen lassen — maintenance wird in jeder Sitzung ausgeführt.

Vorinstallierte Tools

Das Basis-Image von Devin (Ubuntu 22.04, x86_64) enthält die folgenden Tools. Sie müssen sie nicht installieren.
KategorieEnthalten
SprachenNode.js (über nvm), Python 3.12 (über pyenv; 3.9–3.11 sind ebenfalls verfügbar), Rust (über rustup), Java (OpenJDK 17), Scala, Go
Paketmanagernpm, yarn, pnpm, pip, cargo
Versionsverwaltunggit, gh (GitHub CLI), git-lfs
ContainerDocker (mit Compose-Plugin — verwenden Sie docker compose, nicht docker-compose)
Build-Toolsmake, build-essential (gcc, g++)
Dienstprogrammecurl, wget, jq, ripgrep, direnv, awscli, ffmpeg, Homebrew, OpenVPN
BrowserChrome (für browserbasierte Tests)
Diese Liste ist möglicherweise nicht vollständig. Führen Sie which <tool> oder <tool> --version in einer Devin-Sitzung aus, um das zu prüfen. Falls etwas fehlt, installieren Sie es in Ihrem Abschnitt initialize.

Glossar

BegriffDefinition
KonfigurationEine gespeicherte Umgebungskonfiguration (der YAML-Inhalt). Jedes Repo/jede org/jedes Enterprise hat eine eigene.
KonfigurationsversionEine bestimmte Revision einer Konfiguration. Bei jedem Speichern wird eine neue Version erstellt.
BuildDer Prozess, bei dem eine Konfiguration ausgeführt wird, um ein Maschinenabbild zu erstellen.
MaschinenabbildDie gespeicherte Umgebung, die durch einen erfolgreichen Build erstellt wird. Sitzungen starten mit dem neuesten erfolgreichen Abbild.
KonfiguriertEin Repository mit expliziter YAML-Konfiguration (Initialisierung/Wartung/Knowledge).
EnthaltenEin Repository, das in das Maschinenabbild geklont wird, aber keine benutzerdefinierte Konfiguration hat.
VerfügbarEin Repository, auf das die org zugreifen kann, das aber nicht zur Umgebung hinzugefügt wurde.
$ENVRCEine spezielle Datei zum Festlegen von Umgebungsvariablen. Ähnlich wie GitHub Actions’ $GITHUB_ENV.
Teilweise erfolgreichEin Build, bei dem der Kern erfolgreich war, aber einige Einrichtungsschritte auf Repository-Ebene fehlgeschlagen sind.

Nächste Schritte