Informationen zur allgemeinen Environment-Konfiguration finden Sie unter Environment Configuration. Details zur Syntax finden Sie in der YAML Reference.
Fehlerbehebung bei Build-Fehlschlägen
Schritt 1: Build-Status prüfen
| Status | Bedeutung | Was zu tun ist |
|---|---|---|
| Success | Alles hat funktioniert | Nichts — Ihr Maschinenabbild ist bereit |
| Partial | Der Hauptteil des Builds war erfolgreich, aber einige Repos sind fehlgeschlagen | Prüfen Sie, welche Repos fehlgeschlagen sind; deren Sitzungen haben möglicherweise Probleme |
| Failed | Der Build selbst ist fehlgeschlagen | Prüfen Sie das Build-Log des fehlgeschlagenen Schritts |
| Cancelled | Ein neuerer Build hat diesen ersetzt | Normal — starten Sie bei Bedarf einen neueren Build |
| Skipped | Es wurden keine Konfigurationsänderungen erkannt | Nichts — es war kein Build erforderlich |
Schritt 2: Build-Logs lesen
- Gemeinsames Setup — Enterprise- und org-weite Befehle
- Klonen — Klonen des Repositorys
- Repo-Setup — Befehle pro Repository
- Abschluss — Systemprüfung und Image-Erstellung
name-Feldern verwendet haben, zeigen die Logs genau, welcher Schritt fehlgeschlagen ist. Das ist einer der größten Vorteile benannter Schritte:
Step 3: Fehlermuster erkennen
Fehler beim Klonen
- Repository-Zugriff ist nicht konfiguriert — überprüfen Sie Enterprise Settings > Integrations
- Für ein privates Repo ist ein Authentifizierungstoken erforderlich
- Das Repository wurde umbenannt oder gelöscht
- Problem mit der Netzwerkverbindung (VPN oder Proxy erforderlich)
Fehler bei der Installation von Abhängigkeiten
npm install, pip install oder Ähnlichem.
Häufige Ursachen:
- Private Paket-Registry erfordert Authentifizierung — Token unter Secrets hinzufügen
- Konflikt bei Paketversionen — konkrete Versionen festschreiben
- Netzwerk-Timeout — prüfen, ob VPN erforderlich ist
- Registry-URL falsch konfiguriert
maintenance hinzu. Beispiele für private Registry-Muster finden Sie unter Konfigurationsbeispiele.
Timeout-Fehler
- Eine interaktive Abfrage wartet auf Eingabe — fügen Sie
-y-Flags hinzu, verwenden SieDEBIAN_FRONTEND=noninteractive - Die Installation sehr großer Abhängigkeiten dauert zu lange
- Der Befehl überschreitet das 1-Stunden-Timeout
initialize, damit sie nur bei Builds ausgeführt werden (nicht in jeder Sitzung).
Berechtigungsfehler
- Fehlendes
sudobei der Installation von Systempaketen - Es wird versucht, in geschützte Verzeichnisse zu schreiben
- Die Datei gehört aufgrund eines vorherigen Builds einem anderen Nutzer
sudo für Vorgänge auf Systemebene (apt-get, Schreiben nach /etc/ usw.). Bei Paketmanagern auf Nutzerebene (npm, pip, cargo) ist sudo in der Regel nicht erforderlich.
”Command not found”-Fehler
initialize installiertes Tool ist in maintenance oder in späteren Schritten nicht verfügbar.
Häufige Ursachen:
- Das Tool wird in einem Verzeichnis installiert, das nicht in
PATHenthalten ist - Änderungen am Shell-Profil (
.bashrc) werden in nachfolgenden Schritten nicht eingebunden
$ENVRC zu PATH hinzu:
Schritt 4: Iterieren
- Korrigieren Sie Ihre YAML-Konfiguration
- Speichern Sie — ein neuer Build wird automatisch gestartet
- Prüfen Sie das Build-Log des neuen Builds
Kurzreferenz zu häufigen Fehlern
| Fehler | Wahrscheinliche Ursache | Behebung |
|---|---|---|
command not found | Tool nicht installiert oder nicht im PATH | Zu initialize hinzufügen oder über $ENVRC zum PATH hinzufügen |
Permission denied | Fehlendes sudo | Für Systempakete sudo apt-get install verwenden |
npm ERR! 404 | Privates Paket, keine Authentifizierung | Registry-Auth-Token in maintenance hinzufügen (Beispiele) |
E: Unable to locate package | apt-get update wurde nicht zuerst ausgeführt | sudo apt-get update -qq vor apt-get install hinzufügen |
| Zeitüberschreitung | Langsame Installation oder interaktive Eingabeaufforderung | Nach initialize verschieben; -y und DEBIAN_FRONTEND=noninteractive hinzufügen |
| Leere Konfigurationsdateien nach dem Sitzungsstart | Zugangsdaten wurden in initialize geschrieben | Schritte für Zugangsdaten nach maintenance verschieben |
| Build erfolgreich, aber Sitzung ist fehlerhaft | maintenance-Befehl schlägt beim Sitzungsstart fehl | Testen Sie Ihre maintenance-Befehle manuell in einer Sitzung |
Von der interaktiven Einrichtung migrieren
So funktioniert die Migration
- Schalter EIN (Standard) — alle Sitzungen verwenden den Legacy-Snapshot. Keine Unterbrechung.
- Schalter AUS — alle Sitzungen verwenden den deklarativen Snapshot.
Migrationsschritte
Bereiten Sie Ihre Konfiguration vor
Notieren Sie die Befehle aus Ihrer aktuellen interaktiven Einrichtung — diese ordnen Sie anschließend den YAML-Abschnitten zu:
| Schritt im Legacy-Assistenten | Deklaratives Äquivalent |
|---|---|
| Git pull | Automatisch (integriert) |
| Secrets konfigurieren | Secrets (unverändert) |
| Abhängigkeiten installieren | Abschnitt initialize |
| Abhängigkeiten verwalten | Abschnitt maintenance |
| Lint einrichten | knowledge-Eintrag mit dem Namen lint |
| Tests einrichten | knowledge-Eintrag mit dem Namen test |
| Lokale App ausführen | knowledge-Eintrag mit dem Namen startup |
| Zusätzliche Hinweise | knowledge-Eintrag mit dem Namen notes |
Schreiben Sie Ihr YAML
Gehen Sie zu Settings > Devin’s Environment und wählen Sie Ihr Repository aus. Ordnen Sie dort Ihre Legacy-Befehle zu:Oder starten Sie einfach eine Devin-Sitzung und bitten Sie Devin, das Repo einzurichten — Devin kann die Konfiguration automatisch für Sie generieren.
Speichern und auf den Build warten
Speichern Sie Ihre Konfiguration. Ein Build startet automatisch. Verfolgen Sie den Fortschritt unter Build History. Builds sind kostenlos — sie verbrauchen keine ACUs.
Vor dem Umstellen testen
Bevor Sie für alle umstellen, testen Sie das deklarative Setup in einzelnen Sitzungen mit der manuellen Übersteuerung. So können Sie (oder die Person, die an der Konfiguration arbeitet) den deklarativen Snapshot verwenden, während alle anderen beim Legacy-Snapshot bleiben.Passen Sie die Konfiguration iterativ an, bis das deklarative Setup Ihre Legacy-Umgebung vollständig abbildet.
Enterprise-Migration
- Konfigurieren Sie zuerst die YAML auf Unternehmensebene — gemeinsam genutzte Infrastruktur wie VPN, Zertifikate und Proxy-Einstellungen.
- Migrieren Sie jeweils nur eine Organisation. Jede Organisation hat ihren eigenen Legacy-Schalter, sodass Sie die Migration schrittweise durchführen können, ohne andere Teams zu beeinträchtigen.
- Ziehen Sie eine Testorganisation in Betracht. Erstellen Sie für große Unternehmen eine dedizierte Testorganisation, um die deklarative Konfiguration zu überprüfen, bevor Sie sie in Produktionsorganisationen ausrollen.
- Nutzen Sie Devin für die Skalierung. Devin kann Repos über parallele Sitzungen konfigurieren — starten Sie eine Sitzung pro Repo, und Devin erstellt automatisch Konfigurationsvorschläge. Das eignet sich gut für das Onboarding von 10 bis über 100 Repos.
Was passiert mit meinem alten Snapshot?
Wesentliche Unterschiede
| Merkmal | Legacy (interaktiv) | Deklarativ (YAML) |
|---|---|---|
| Reproduzierbarkeit | Zustandsbehaftet — Snapshots sammeln Änderungen im Laufe der Zeit an | Vollständig aus YAML reproduzierbar |
| Mehrere Repos | Immer nur ein Repo gleichzeitig | Mehrere Repos in einem Build mit gleichzeitigem Klonen |
| Wartung | Manuelle Schritte zum „Pflegen von Abhängigkeiten“ | Automatisch — maintenance wird zu Sitzungsbeginn ausgeführt |
| Enterprise-/Org-Ebenen | Nicht unterstützt | 3-stufige Hierarchie (Enterprise → Org → Repo) |
| Devin-Vorschläge | Nur im Assistenten | In der Sitzung — Devin kann Konfigurationsänderungen vorschlagen |
| Kosten | Assistenten-Sitzungen verbrauchten ACUs | Setup-Sitzungen ~1–3 ACUs; Builds sind kostenlos |
Häufig gestellte Fragen
Allgemein
initialize statt maintenance verwenden?
Verwenden Sie initialize für einmalige Tool-Installationen (apt-get install, Einrichtung der Sprachlaufzeit, globale CLI-Tools). Verwenden Sie maintenance für die Installation von Abhängigkeiten, die aktuell bleiben müssen (npm install, pip install, uv sync).
Wie füge ich Umgebungsvariablen hinzu?
Schreiben Sie sie in $ENVRC:
initialize-Abschnitt sudo apt-get install. Verwenden Sie immer DEBIAN_FRONTEND=noninteractive und das Flag -y, um interaktive Abfragen zu vermeiden.
Was ist, wenn ich für verschiedene Repos unterschiedliche Node-Versionen brauche?
Verwenden Sie nvm in Ihrer Repo-Konfiguration:
Build-spezifisch
Enterprise-spezifisch
Bekannte Einschränkungen
- Keine Build-Vorschau/Sandbox — jede Konfigurationsänderung löst einen vollständigen Build aus. Testen Sie Befehle zuerst in einer Sitzung.
- Serielle Einrichtung von Repos — das Setup auf Repository-Ebene erfolgt jeweils für ein Repo nach dem anderen (in alphabetischer Reihenfolge). Viele Repos führen zu längeren Builds.
- Keine bedingte Logik in YAML — das Format unterstützt kein if/else. Verwenden Sie bei Bedarf Shell-Bedingungen in Ihren Befehlen (z. B.
[ -f package.json ] && npm install). - Keine Suche in Build-Logs — Build-Logs müssen manuell durchscrollt werden. Verwenden Sie benannte Schritte, damit sich Fehler leichter finden lassen.
Nächste Schritte
- Umgebungskonfiguration — Hauptleitfaden zum Erstellen Ihrer Konfiguration
- Konfigurationsbeispiele — Beispiele zum Kopieren und Einfügen nach Stack und Ebene
