Blueprints über Ebenen hinweg organisieren
| Blueprint-Ebene | Wann sie verwendet werden sollte | Beispiele |
|---|---|---|
| Enterprise | Standard für alle gemeinsam genutzten Konfigurationen | Python 3.12, Node 20, Go 1.22, Rust, Sicherheitsscanner, Unternehmens-CA-Zertifikate, interne CLIs, Proxy-Konfigurationen, gemeinsame Registry-Tokens |
| Organization | Nur wenn etwas nicht für jede Organisation gelten soll | Eine teamspezifische private Registry, auf bestimmte Teams beschränkte Tools, org-spezifische Linting-Konfiguration |
| Repository | Repo-spezifische Einrichtung, die im Repo-Verzeichnis ausgeführt wird | npm install, uv sync, projektspezifische Knowledge-Einträge, .envrc-Dateien auf Repo-Ebene |
Verwenden Sie Knowledge-Einträge auf der richtigen Ebene
- Knowledge auf Enterprise-Ebene: Unternehmensweite Coding-Standards, Anforderungen an Sicherheitsprüfungen, Links zur internen Dokumentation.
- Knowledge auf Org-Ebene: Teamkonventionen, Nutzungsmuster für gemeinsam genutzte Bibliotheken, teamspezifische Deployment-Verfahren.
- Knowledge auf Repo-Ebene: Lint-, Test- und Build-Befehle für das jeweilige Projekt.
Secrets-Verwaltung in großem Maßstab
Wo Secrets definiert werden
| Secret scope | Verwenden für | Beispiele |
|---|---|---|
| Enterprise | Zugangsdaten, die von allen orgs genutzt werden | Tokens für interne Registries, Proxy-Authentifizierung im Unternehmensnetzwerk, gemeinsame API keys für interne Dienste |
| Organization | Team-spezifische Zugangsdaten | Deployment-Schlüssel für Teams, API-Tokens für Team-Dienste, team-spezifische Registry-Authentifizierung |
| Repository | Repo-spezifische Zugangsdaten | API keys pro Projekt, projektspezifische Service Accounts |
Secret-Hygiene
- Speichern Sie Secrets niemals in YAML. Verwenden Sie immer die Secrets-Verwaltungsoberfläche. Secrets in YAML landen in Logs, Build-Artefakten und Audit-Trails.
- Rotieren Sie Secrets regelmäßig. Wenn Sie ein Secret in der UI rotieren, wird der neue Wert beim nächsten Build wirksam. Es sind keine Änderungen am Blueprint erforderlich.
- Verwenden Sie aussagekräftige Namen.
INTERNAL_NPM_TOKENist besser alsTOKEN_1. Andere Admins (und auch Sie selbst in Zukunft) müssen verstehen, wofür jedes Secret gedacht ist. - Überprüfen Sie die Verwendung von Secrets. Prüfen Sie regelmäßig, welche Secrets vorhanden sind und ob sie noch benötigt werden. Entfernen Sie nicht verwendete Secrets, um Ihre Angriffsfläche zu verringern.
Wenn ein org-Secret und ein Enterprise-Secret denselben Namen haben, hat das org-Secret Vorrang. Dasselbe gilt für Repo-Secrets, die org-Secrets überschreiben. Verwenden Sie dies gezielt. Zum Beispiel kann eine org das
Enterprise-Registry-Token mit einem teamspezifischen Token überschreiben, das andere Berechtigungen hat.
Überwachung des Build-Status
Legen Sie einen regelmäßigen Prüfzyklus fest
- Fehlgeschlagene Builds: Kritische Fehler in Blueprints auf Enterprise- oder Organisationsebene, die alle Repos blockieren.
- Teilweise fehlgeschlagene Builds: Bei einigen Repos schlägt der Build fehl. Das ist oft ein Hinweis auf ein Abhängigkeitsproblem oder einen veralteten Blueprint.
- Veraltete Builds: Organisationen, deren letzter Build ungewöhnlich lange zurückliegt, was auf eine blockierte Build-Warteschlange hindeuten kann.
Auf Fehler bei Enterprise-Blueprints reagieren
- Bewerten Sie den Umfang der Auswirkungen. Prüfen Sie auf der Rollout-Seite, wie viele Orgs betroffen sind.
- Setzen Sie den Enterprise-Blueprint auf den zuletzt bekannten funktionierenden Blueprint zurück. Speichern Sie sofort. Dadurch werden in allen betroffenen Orgs Neubuilds ausgelöst.
- Untersuchen Sie den Fehler isoliert. Testen Sie Ihre Änderungen mit einer einzelnen Pilot-Org, bevor Sie sie erneut ausrollen.
Teilweise erfolgreiche Builds sind ein Signal
- Ein Repo-spezifisches Abhängigkeitsproblem (defekte Lockdatei, entferntes Paket)
- Eine fehlende Systembibliothek, die nur ein Projekt benötigt
- Einen veralteten Blueprint, der nicht an Änderungen im Repo angepasst wurde
Wann Sie Builds anpinnen sollten
Gute Gründe zum Anpinnen
- Kritisches Release läuft. Sie benötigen für die nächsten 48 Stunden eine stabile, zuverlässig funktionierende Umgebung, während Sie ein Release ausliefern.
- Aktive Fehlersuche. Sie untersuchen ein Problem mit einem Build und möchten nicht, dass automatische Updates in der Zwischenzeit etwas verändern.
- Rollback. Ein neuer Build hat eine Regression verursacht, und Sie müssen sofort auf die vorherige Version zurückgehen, während Sie den Blueprint korrigieren.
Schlechte Gründe für das Pinnen
- Eine Fehlerbehebung zu vermeiden. Wenn ein Build fehlerhaft ist, beheben Sie das Problem im Blueprint. Das Pinnen kaschiert das Problem, und da Pins nicht automatisch ablaufen, kann ein vergessener Pin dazu führen, dass Sie unbegrenzt in einer veralteten Umgebung arbeiten.
- „Nur für alle Fälle.“ Automatische Updates halten Abhängigkeiten aktuell und erkennen Probleme frühzeitig. Sie ohne konkreten Grund zu deaktivieren, verzögert Probleme nur.
Ihr Enterprise-Konto migrieren
Gängige Architekturmuster
Monorepo-Organisationen
npm install im Frontend-Verzeichnis, uv sync im Backend-Verzeichnis) im Repo-Blueprint. Der Org-Blueprint wird nur benötigt, wenn diese Organisation Tools oder Konfigurationen hat, die nicht für andere Organisationen gelten sollen.
Organisationen mit mehreren Repos
maintenance und Knowledge enthält. So müssen Einrichtungsbefehle nicht in mehreren Repos dupliziert werden.
Setup: Eine Plattform- oder DevOps-Org, die gemeinsam genutzte Dienste für andere Teams bereitstellt.
Ansatz: Der Enterprise-Blueprint deckt die gemeinsame Basis ab. Der Blueprint der Org für gemeinsame Infrastruktur installiert plattformspezifische Tools (Terraform, kubectl, Cloud-CLIs), die ihre Repos benötigen. Andere Orgs erhalten diese Tools nicht. Sie bekommen nur das, was im Enterprise-Blueprint enthalten ist, plus ihre eigene Org-Konfiguration.
Isolierte Projekt-Organisationen
Im Zweifel gehört es in das Enterprise-Blueprint. Wenn eine Org einen bestimmten Grund hat, etwas auszuschließen (etwa inkompatible Tool-Versionen oder eingeschränkter Zugriff), kann sie dies auf Org-Ebene überschreiben. Es ist
einfacher, eine umfassende Enterprise-Ausgangsbasis zu haben, als die Einrichtung über viele Org-Blueprints hinweg zu duplizieren.
