Organizzare i blueprint tra i vari livelli
| Livello del blueprint | Quando usarlo | Esempi |
|---|---|---|
| Enterprise | Predefinito per tutta la configurazione condivisa | Python 3.12, Node 20, Go 1.22, Rust, scanner di sicurezza, certificati CA aziendali, CLI interni, configurazione del proxy, token condivisi del registry |
| Organization | Solo quando qualcosa non deve applicarsi a ogni org | Un registry privato specifico di un team, strumenti limitati a determinati team, configurazione di linting specifica per org |
| Repository | Configurazione per repo eseguita nella directory del repo | npm install, uv sync, elementi di Knowledge specifici del progetto, file .envrc a livello di repo |
Usa gli elementi di Knowledge nel livello giusto
- Knowledge Enterprise: Standard di codifica validi per tutta l’azienda, requisiti per la revisione della sicurezza, collegamenti alla documentazione interna.
- Knowledge dell’org: Convenzioni del team, pattern di utilizzo delle librerie condivise, procedure di distribuzione specifiche del team.
- Knowledge della repo: Comandi di lint, test e build per lo specifico progetto.
Gestione dei segreti su larga scala
Dove definire i segreti
| Ambito del segreto | Da usare per | Esempi |
|---|---|---|
| Enterprise | Credenziali condivise tra tutte le orgs | Token del registry interno, autenticazione del proxy corporate, API key condivise per i servizi interni |
| Organizzazione | Credenziali specifiche del team | Chiavi di distribuzione del team, token API per i servizi del team, autenticazione al registry specifica del team |
| Repository | Credenziali specifiche per repo | API key per progetto, service account specifici del progetto |
Buone pratiche per i segreti
- Non inserire mai segreti nei file YAML. Usa sempre l’interfaccia di gestione dei segreti. I segreti nei file YAML finiscono nei log, negli artefatti di build e negli audit trail.
- Ruota regolarmente i segreti. Quando ruoti un segreto nell’interfaccia utente, il nuovo valore viene applicato dalla build successiva. Non sono necessarie modifiche al blueprint.
- Usa nomi descrittivi.
INTERNAL_NPM_TOKENè meglio diTOKEN_1. Gli altri amministratori (e il te stesso del futuro) devono capire a cosa serve ogni segreto. - Verifica l’utilizzo dei segreti. Controlla periodicamente quali segreti esistono e se sono ancora necessari. Rimuovi quelli inutilizzati per ridurre la superficie di attacco.
Se un segreto dell’org e un segreto Enterprise hanno lo stesso nome, prevale il segreto dell’org. Lo stesso vale per i segreti del repo che sovrascrivono quelli dell’org. Usalo in modo intenzionale. Per esempio, un’org potrebbe sovrascrivere il
token del registry Enterprise con un token specifico del team con autorizzazioni diverse.
Monitoraggio dell’integrità delle build
Stabilisci una cadenza di controllo
- Build fallite: Errori critici nei blueprint Enterprise o delle org che bloccano tutte le repo.
- Build parziali: Alcune repo non riescono. Spesso è segno di un problema di dipendenze o di un blueprint obsoleto.
- Build non aggiornate: Org la cui build più recente è insolitamente vecchia, il che può indicare una coda di build bloccata.
Gestire gli errori del blueprint Enterprise
- Valuta la portata dell’impatto. Verifica quante orgs sono interessate nella pagina Rollout.
- Ripristina il blueprint Enterprise all’ultima versione sicuramente funzionante. Salva immediatamente. Questo attiva nuove build in tutte le orgs interessate.
- Indaga in isolamento. Testa le tue modifiche su una singola org pilota prima di ridistribuirle.
Le build parziali sono un segnale
- Un problema di dipendenze specifico per repo (lock file danneggiato, package rimosso)
- Una libreria di sistema mancante necessaria solo a un progetto
- Un blueprint obsoleto che non è stato aggiornato per riflettere le modifiche nella repo
Quando bloccare le build
Buoni motivi per bloccare
- Release critica in corso. Hai bisogno di un ambiente stabile e affidabile per le prossime 48 ore, mentre distribuisci una release.
- Debug in corso. Stai analizzando un problema di build e non vuoi che gli aggiornamenti automatici cambino il contesto mentre lavori.
- Rollback. Una nuova build ha introdotto una regressione e devi ripristinare immediatamente la versione precedente mentre correggi il blueprint.
Motivi sbagliati per bloccare
- Per evitare di risolvere il problema. Se una build non funziona, correggi il blueprint. Applicare un blocco nasconde il problema e, dato che i blocchi non scadono automaticamente, un blocco dimenticato può lasciarti usare un ambiente obsoleto a tempo indeterminato.
- “Per ogni evenienza.” Gli aggiornamenti automatici mantengono aggiornate le dipendenze e fanno emergere i problemi in anticipo. Disattivarli senza un motivo specifico non fa che rimandare i problemi.
Eseguire la migrazione della tua Enterprise
Modelli architetturali comuni
Organizzazioni monorepo
npm install nella directory del frontend, uv sync nella directory del backend) nel blueprint repo. Il blueprint dell’org è necessario solo se questa org ha strumenti o configurazioni che non devono essere applicati ad altre org.
Organizzazioni multi-repo
maintenance e knowledge. In questo modo eviti di duplicare i comandi di configurazione tra i repo.
Configurazione: Un’org di piattaforma o DevOps che fornisce servizi condivisi utilizzati da altri team.
Approccio: Il blueprint Enterprise definisce la base comune. Il blueprint dell’org di infrastruttura condivisa installa gli strumenti specifici della piattaforma (Terraform, kubectl, CLI cloud) necessari alle sue repo. Le altre org non ricevono questi strumenti. Ricevono solo ciò che è incluso nel blueprint Enterprise, oltre alla configurazione della propria org.
org di progetto isolate
Nel dubbio, inseriscilo nel blueprint enterprise. Se un’org ha un motivo specifico per escludere qualcosa (versioni degli strumenti in conflitto, accesso limitato), può sovrascriverlo a livello di org. È
più semplice avere una base enterprise completa che duplicare la configurazione in molti blueprint di org.
