Questa pagina descrive come configurare Cloud Build per creare, testare, eseguire il containerizzazione e il deployment di applicazioni Python.
Cloud Build ti consente di utilizzare qualsiasi immagine container disponibile pubblicamente
per eseguire le tue attività di sviluppo, tra cui creazione, test, containerizzazione, caricamento su Artifact Registry, deployment e salvataggio dei log di build. Il pubblico
Immagine python
da Docker Hub
sono preinstallati con gli strumenti python
e pip
. Puoi configurare Cloud Build
usa questi strumenti per installare le dipendenze, creare ed eseguire test delle unità con questi strumenti.
Prima di iniziare
Le istruzioni in questa pagina presuppongono che tu abbia familiarità con Python. Inoltre:
-
Enable the Cloud Build, Cloud Run, Cloud Storage and Artifact Registry APIs.
- Per eseguire i comandi
gcloud
in questa pagina, installa Google Cloud CLI. - Tieni a portata di mano il tuo progetto Python, incluso il file
requirements.txt
. Devi avere unDockerfile
insieme al codice sorgente. - Se vuoi archiviare il container compilato in Artifact Registry, crea un repository Docker in Artifact Registry.
- Se vuoi archiviare i log di test in Cloud Storage, crea un bucket in Cloud Storage.
Autorizzazioni IAM richieste
Per archiviare i log di test in Logging, concedi la classe Creatore oggetti Storage (
roles/storage.objectCreator
) per il bucket Cloud Storage al tuo account di servizio di build.Per archiviare le immagini create in Artifact Registry, concedi il ruolo Writer Artifact Registry Ruolo (
roles/artifactregistry.writer
) al tuo account di servizio di build.
Per istruzioni su come concedere questi ruoli, consulta Concedere un ruolo utilizzando la pagina IAM.
Configurazione di build Python
Questa sezione illustra un esempio di file di configurazione di build per un'app Python. Contiene i passaggi di compilazione per installare i requisiti, aggiungere i test di unità e, dopo il superamento dei test, compilare e implementare l'app.
Nella directory principale del progetto, crea un file di configurazione Cloud Build chiamato
cloudbuild.yaml
.Requisiti di installazione: è preinstallata l'immagine
python
di Docker Hub conpip
. Per installare le dipendenze dapip
, aggiungi un passaggio di build con seguenti campi:name
: imposta il valore di questo campo supython
per utilizzare l'immagine Python da Docker Hub per questa attività.entrypoint
: l'impostazione di questo campo sostituisce il punto di contatto predefinito dell'immagine a cui si fa riferimento inname
. Imposta il valore di questo campo supip
per richiamarepip
come punto di ingresso del passaggio di build ed esegui i comandipip
.args
: il campoargs
di un passaggio di compilazione prende un elenco di argomenti e li passa all'immagine a cui fa riferimento il camponame
. Passa gli argomenti per eseguire il comandopip install
in questo campo. Il flag--user
nel comandopip install
garantisce che i passaggi di compilazione successivi possano accedere ai moduli installati in questo passaggio di compilazione.
Il seguente passaggio di compilazione aggiunge gli argomenti ai requisiti di installazione dal file
requirements.txt
:Aggiungi i test delle unità: se hai definito i test delle unità nella tua applicazione utilizzando una di test come
pytest
, puoi configurare Cloud Build per eseguire i test aggiungendo i campi seguenti in un passaggio di build:name
: imposta il valore di questo campo supython
per utilizzare l'immagine Python da Docker Hub per le tue attività.entrypoint
: imposta il valore di questo campo supython
per eseguire i comandipython
.args
: aggiungi gli argomenti per l'esecuzione del comandopython pytest
.
Il passaggio di build seguente salva l'output del log
pytest
in un file XML JUNIT. Il nome di questo file viene creato utilizzando la versione breve dell'ID commit associato alla tua build. Un passaggio di build successivo salverà i log di questo file in Cloud Storage.Esegui il containerizzazione dell'app: dopo aver aggiunto il passaggio di compilazione per assicurarti che i test siano stati superati, puoi compilare l'applicazione. Cloud Build fornisce immagine Docker predefinita che puoi utilizzare per containerizzare la tua applicazione Python. A containerizza la tua app, aggiungi i seguenti campi in un passaggio di build:
name
: imposta il valore di questo campo sugcr.io/cloud-builders/docker
per utilizzare l'immagine Docker predefinita per l'attività.args
: aggiungi gli argomenti per il comandodocker build
come valori per questo campo.
Il seguente passaggio di build crea l'immagine
myimage
e la tagga con una versione breve dell'ID commit. Il passaggio di compilazione utilizza le sostituzione predefinite per l'ID progetto, il nome del repository e i valori SHA brevi, pertanto questi valori vengono sostituiti automaticamente in fase di compilazione.Esegui il push del container in Artifact Registry: puoi archiviare il container creato in Artifact Registry, un servizio Google Cloud che puoi utilizzare archiviare, gestire e proteggere gli artefatti delle build. Per farlo, devi avere un repository Docker esistente in Artifact Registry. Per configurare Cloud Build per archiviare l'immagine in un repository Docker di Artifact Registry, aggiungi con i seguenti campi:
name
: imposta il valore di questo campo sugcr.io/cloud-builders/docker
su utilizza l'immagine builderdocker
ufficiale di Container Registry per l'attività.args
: aggiungi gli argomenti per il comandodocker push
come valori di questo campo. Per l'URL di destinazione, inserisci il repository Docker di Artifact Registry in cui vuoi archiviare l'immagine.
Il seguente passaggio di creazione esegue il push dell'immagine che hai creato nel passaggio precedente in Artifact Registry:
(Facoltativo) Se vuoi che Cloud Build generi Build Livelli della catena di fornitura per artefatti software (SLSA) la provenienza delle informazioni, completa quanto segue:
- Utilizza il campo
images
nel passaggio di build, invece di usarne una separata utilizzando un passaggio di buildDocker push
. - Aggiungi
requestedVerifyOption: VERIFIED
alla sezioneoptions
del file di configurazione di build.
Esegui il deployment del container in Cloud Run: per eseguire il deployment dell'immagine su Cloud Run, aggiungi un passaggio di build con i seguenti campi:
name
: imposta il valore di questo campo sugoogle/cloud-sdk
per utilizzare gcloud CLI per richiamare il comandogcloud
ed eseguire il deployment dell'immagine su Cloud Run.args
: aggiungi gli argomenti per il comandogcloud run deploy
come valori di questo campo.
Il seguente passaggio di build esegue il deployment dell'immagine creata in precedenza in Cloud Run:
Salva i log di test in Cloud Storage: puoi configurare Cloud Build in modo da archiviare i log di test in Cloud Storage specificando la posizione e il percorso del bucket esistente per i log di test. Il seguente passaggio di compilazione memorizza i log di test salvati nel file XML JUNIT in un bucket Cloud Storage:
Lo snippet seguente mostra il file di configurazione della build completo per tutti i passaggi descritti sopra:
Avvia la build: manualmente o utilizzando i trigger di build.
Al termine della build, puoi visualizzare i dettagli del repository in Artifact Registry.
Puoi anche visualizzare i metadati di provenienza della build e convalidare la provenienza.
Passaggi successivi
- Scopri come visualizzare i risultati della build.
- Scopri come proteggere le build.
- Scopri come creare applicazioni Python autonome.
- Scopri come utilizzare le dipendenze private.
- Scopri come risolvere gli errori di build.