Cloud Build è un servizio che esegue le tue build su Google Cloud.
Cloud Build può importare codice sorgente da una varietà di repository o spazi di spazio di archiviazione sul cloud, eseguire una build secondo le tue specifiche e produrre elementi come container Docker o archivi Java.
Puoi anche utilizzare Cloud Build per proteggere la tua catena di approvvigionamento del software. Le funzionalità di Cloud Build soddisfano i requisiti del livello 3 di Supply Chain Levels for Software Artifacts (SLSA). Per indicazioni su come proteggere le procedure di compilazione, consulta Proteggere le build.
Configurazione e passaggi di compilazione
Puoi scrivere una configurazione di compilazione per fornire istruzioni a Cloud Build su quali attività eseguire. Puoi configurare le build per recuperare le dipendenze, eseguire test delle unità, analisi statiche e test di integrazione e creare artefatti con strumenti di build come Docker, Gradle, Maven, Bazel e gulp.
Cloud Build esegue la build come una serie di passaggi di build, dove ogni passaggio viene eseguito in un container Docker. L'esecuzione di passaggi di build è analoga all'esecuzione di comandi in uno script.
Puoi usare i passaggi di build forniti da Cloud Build e dalla sua community o scrivere passaggi di build personalizzati:
Passaggi di compilazione forniti da Cloud Build: Cloud Build ha pubblicato un insieme di passaggi di compilazione open source supportati per linguaggi e attività comuni.
Passaggi di build forniti dalla community: la community degli utenti di Cloud Build ha fornito passaggi di build open source.
Passaggi di compilazione personalizzati: puoi creare i tuoi passaggi di compilazione da utilizzare nelle tue compilazioni.
Ogni passaggio di build viene eseguito con il relativo contenitore collegato a una rete Docker locale cloudbuild
. In questo modo, i vari passaggi della build possono comunicare tra loro e condividere i dati. Per ulteriori informazioni sulla rete cloudbuild
, consulta la pagina Rete Cloud Build.
Puoi utilizzare le immagini standard di Docker Hub in Cloud Build, ad esempio Ubuntu e Gradle.
Avvio delle build
Puoi avviare manualmente le build in Cloud Build utilizzando Google Cloud CLI o l'API Cloud Build oppure utilizzare i trigger di build di Cloud Build per creare un flusso di lavoro di integrazione/distribuzione continua (CI/CD) automatico che avvia nuove build in risposta alle modifiche del codice.
Puoi integrare gli attivatori di build con molti repository di codice, tra cui Cloud Source Repositories, GitHub e Bitbucket.
Visualizzazione dei risultati della build
Puoi visualizzare i risultati della build utilizzando gcloud CLI, l'API Cloud Build o la pagina Cronologia di Build nella sezione Cloud Build della console Google Cloud, che mostra i dettagli e i log di ogni build eseguita da Cloud Build. Per le istruzioni, vedi Visualizzare i risultati della compilazione.
Come funzionano le build
I passaggi che seguono descrivono, in generale, il ciclo di vita di una compilazione Cloud Build:
- Prepara il codice dell'applicazione e gli asset necessari.
- Crea un file di configurazione di compilazione in formato YAML o JSON contenente le istruzioni per Cloud Build.
- Invia la build a Cloud Build.
- Cloud Build esegue la build in base alla configurazione della build che hai fornito.
- Se applicabile, gli elementi costruiti vengono inviati ad Artifact Registry.
Docker
Cloud Build utilizza Docker per eseguire le build. Per ogni passaggio di compilazione, Cloud Build esegue un container Docker come istanza di docker run
. Al momento, Cloud Build esegue il motore Docker 20.10.24.
Interfacce di Cloud Build
Puoi utilizzare Cloud Build con la console Google Cloud, lo strumento a riga di comando gcloud
o l'API REST di Cloud Build.
Nella console Google Cloud, puoi visualizzare i risultati delle build di Cloud Build nella pagina Cronologia di Build e automatizzare le build in Trigger di Build.
Puoi utilizzare l'interfaccia alla gcloud CLI per creare e gestire le build. Puoi eseguire comandi per svolgere attività come inviare una build, elencare le build e annullare una build.
Puoi richiedere le build utilizzando l'API REST Cloud Build.
Come per le altre API della piattaforma Cloud, devi autorizzare l'accesso utilizzando OAuth2. Dopo aver autorizzato l'accesso, puoi utilizzare l'API per avviare nuove build, visualizzare lo stato e i dettagli delle build, elencare le build per progetto e annullare le build in corso.
Per ulteriori informazioni, consulta la documentazione dell'API.
Pool predefiniti e pool privati
Per impostazione predefinita, quando esegui una build su Cloud Build, la build viene eseguita in un ambiente sicuro ospitato con accesso alla rete internet pubblica. Ogni build viene eseguita su un proprio worker ed è isolata dagli altri carichi di lavoro. Puoi personalizzare la compilazione in diversi modi, ad esempio aumentando le dimensioni del tipo di macchina o allocando più spazio su disco. Il pool predefinito ha limiti per quanto riguarda la personalizzazione dell'ambiente, in particolare per l'accesso alla rete privata.
I pool privati sono pool di worker privati e dedicati che offrono una maggiore personalizzazione dell'ambiente di build, inclusa la possibilità di accedere alle risorse in una rete privata. I pool privati, simili ai pool predefiniti, sono ospitati e gestiti completamente da Cloud Build e possono essere scalati fino a zero, senza alcuna infrastruttura da configurare, eseguire l'upgrade o scalare. Poiché i pool privati sono risorse specifiche del cliente, puoi configurarli in più modi.
Per scoprire di più sui pool privati e sulle differenze tra le funzionalità del pool predefinito e del pool privato, consulta la Panoramica dei pool privati.
Sicurezza di Build
Cloud Build fornisce diverse funzionalità per proteggere le build, tra cui:
Build automatiche
Una build automatica o basata su script definisce tutti i passaggi di compilazione nello script di compilazione o nella configurazione di compilazione, inclusi i passaggi per recuperare il codice sorgente e quelli per compilare il codice. L'unico comando manuale, se presente, è il comando per eseguire la compilazione. Cloud Build utilizza un file di configurazione della build per fornire i passaggi di compilazione a Cloud Build.
Le build automatiche garantiscono la coerenza dei passaggi di compilazione. Tuttavia, è importante anche eseguire le build in un ambiente coerente e attendibile.
Sebbene le build locali possano essere utili per il debug, il rilascio di software da build locali può introdurre molti problemi di sicurezza, incoerenze e inefficienze nel processo di compilazione.
- La possibilità di eseguire build locali offre a un utente malintenzionato un modo per modificare il processo di compilazione.
- Le incoerenze negli ambienti locali e nelle pratiche degli sviluppatori rendono difficile riprodurre le build e diagnosticare i problemi di build.
Nei requisiti del framework SLSA, le build automatiche sono un requisito per il livello 1 di SLSA e l'utilizzo di un servizio di build anziché di ambienti di sviluppo per le build è un requisito per il livello 2 di SLSA.
Provenienza della build
La provenienza della build è una raccolta di dati verificabili su una build.
I metadati della provenienza includono dettagli come i digest delle immagini create, le posizioni delle origini di input, la toolchain di compilazione e la durata della compilazione.
La generazione della provenienza della build ti consente di:
- Verifica che un elemento compilato sia stato creato dalla posizione della sorgente attendibile e da un sistema di compilazione attendibile.
- Identificare il codice iniettato da una posizione di origine o da un sistema di compilazione non attendibile.
Puoi utilizzare i meccanismi di avviso e dei criteri per utilizzare in modo proattivo i dati sulla provenienza della compilazione. Ad esempio, puoi creare criteri che consentano solo il deployment di codice compilato da origini verificate.
Cloud Build può generare la provenienza della build per le immagini container che forniscono la garanzia SLSA di livello 3. Per ulteriori informazioni, consulta la sezione Visualizzare la provenienza della compilazione.
Ambiente di compilazione temporaneo
Gli ambienti effimeri sono ambienti temporanei pensati per durare per una singola chiamata di compilazione. Dopo la compilazione, l'ambiente viene cancellato o eliminato. Le build effimere assicurano che il servizio di compilazione e i relativi passaggi vengano eseguiti in un ambiente effimero, ad esempio un contenitore o una VM. Anziché riutilizzare un ambiente di build esistente, il servizio di build esegue il provisioning di un nuovo ambiente per ogni build e poi lo elimina al termine del processo di compilazione.
Gli ambienti effimeri garantiscono build pulite perché non sono presenti file residuali o impostazioni dell'ambiente delle build precedenti che possono interferire con il processo di compilazione. Un ambiente non effimero offre agli aggressori l'opportunità di inserire file e contenuti dannosi. Un ambiente effimero riduce inoltre i costi generali di manutenzione e le incoerenze nell'ambiente di compilazione.
Cloud Build configura un nuovo ambiente di macchine virtuali per ogni compilazione e lo elimina al termine della compilazione.
Criteri di deployment
Puoi integrare Cloud Build con Autorizzazione binaria per verificare le attestazioni delle build e bloccare i deployment delle immagini non generate da Cloud Build. Questo processo può ridurre il rischio di implementare software non autorizzato.
Chiavi di crittografia gestite dal cliente
Cloud Build garantisce la conformità alle chiavi di crittografia gestite dal cliente (CMEK) per impostazione predefinita. Gli utenti non devono configurare nulla in modo specifico. Cloud Build garantisce la conformità alle CMEK criptando il disco permanente (DP) al momento della compilazione con una chiave effimera generata per ogni compilazione. La chiave viene generata in modo univoco per ogni build.
Non appena la compilazione è completata, la chiave viene cancellata dalla memoria e distrutta. Non viene memorizzato da nessuna parte, non è accessibile agli ingegneri o al personale di assistenza di Google e non può essere ripristinato. I dati protetti con una chiave di questo tipo sono definitivamente inaccessibili. Per ulteriori informazioni, consulta la sezione Conformità CMEK in Cloud Build.
Riquadro Approfondimenti sulla sicurezza
Cloud Build include un riquadro Approfondimenti sulla sicurezza nella console Google Cloud che mostra una panoramica generale di più metriche di sicurezza. Puoi utilizzare questo riquadro per identificare e mitigare i rischi nel processo di compilazione.
Questo riquadro mostra le seguenti informazioni:
Livello Supply-chain Levels for Software Artifacts (SLSA): identifica il livello di maturità del processo di compilazione del software in conformità con la specifica SLSA.
Vulnerabilità: una panoramica delle eventuali vulnerabilità rilevate negli elementi e il nome dell'immagine analizzata da Artifact Analysis. Puoi fare clic sul nome dell'immagine per visualizzare i dettagli della vulnerabilità. Ad esempio, nello screenshot puoi fare clic su java-guestbook-backend.
Dettagli build: dettagli della build, ad esempio il generatore e il link per visualizzare i log.
Provenienza della build: la provenienza della build.
Per scoprire come utilizzare Cloud Build con altri prodotti e funzionalità di Google Cloud per proteggere la tua catena di fornitura del software, consulta Sicurezza della catena di fornitura del software.
Passaggi successivi
- Leggi la guida rapida di Docker per imparare a utilizzare Cloud Build per creare immagini Docker.
- Scopri come creare, testare ed eseguire il deployment degli elementi in Cloud Build.
- Scopri i diversi tipi di trigger Cloud Build.
- Leggi le nostre risorse su DevOps ed esplora il programma di ricerca DevOps Research and Assessment.