Questa pagina descrive come configurare Cloud Build per creare, testare, containerizzare ed eseguire il deployment di applicazioni Python.
Cloud Build consente di utilizzare qualsiasi immagine container disponibile pubblicamente per eseguire le attività di sviluppo, tra cui creazione, test, containerizzazione, caricamento su Artifact Registry, deployment e salvataggio dei log delle build. L'immagine pubblica python
di Docker Hub viene preinstallata con gli strumenti python
e pip
. Puoi configurare Cloud Build
utilizzando questi strumenti per installare dipendenze, creare ed eseguire test delle unità.
Prima di iniziare
Le istruzioni in questa pagina presuppongono che tu abbia familiarità con Python. Inoltre:
-
Abilita le API Cloud Build, Cloud Run, Cloud Storage and Artifact Registry.
- 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
. È necessario unDockerfile
insieme al codice sorgente. - Se vuoi archiviare il container creato 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 il ruolo Creatore oggetti Storage (
roles/storage.objectCreator
) per il bucket Cloud Storage all'account di servizio Cloud Build.Per archiviare le immagini create in Artifact Registry, concedi il ruolo Writer Artifact Registry (
roles/artifactregistry.writer
) all'account di servizio Cloud Build.
Per istruzioni sulla concessione di questi ruoli, consulta Concessione di un ruolo utilizzando la pagina IAM.
Configurazione delle build Python
Questa sezione illustra un esempio di file di configurazione della build per un'app Python. Include i passaggi per installare i requisiti, aggiungere i test delle unità e, dopo il superamento dei test, per creare ed eseguire il deployment dell'app.
Nella directory root del progetto, crea il file di configurazione di Cloud Build denominato
cloudbuild.yaml
.Requisiti di installazione: l'immagine
python
di Docker Hub è preinstallata conpip
. Per installare le dipendenze dapip
, aggiungi un passaggio di build con i seguenti campi:name
: imposta il valore di questo campo supython
per utilizzare l'immagine Python di Docker Hub per questa attività.entrypoint
: la configurazione di questo campo sostituisce il punto di ingresso predefinito dell'immagine a cui viene fatto riferimento inname
. Imposta il valore di questo campo supip
per richiamarepip
come punto di ingresso del passaggio della build ed eseguire i comandipip
.args
: il campoargs
di un passaggio di build accetta 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 build successivi possano accedere ai moduli installati in questo passaggio di build.
Il seguente passaggio di build aggiunge argomenti per l'installazione dei requisiti dal file
requirements.txt
:Aggiungi test delle unità: se hai definito i test delle unità nella tua applicazione utilizzando un framework di test come
pytest
, puoi configurare Cloud Build per eseguire i test aggiungendo i seguenti campi in un passaggio di build:name
: imposta il valore di questo campo supython
per utilizzare l'immagine Python di Docker Hub per l'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 di log
pytest
in un file XML JUNIT. Il nome di questo file viene creato utilizzando la versione breve dell'ID commit associato alla build. Un passaggio di build successivo salverà i log in questo file in Cloud Storage.Containerizzare l'app: dopo aver aggiunto il passaggio di build per assicurarti che i test siano stati superati, puoi creare l'applicazione. Cloud Build fornisce un'immagine Docker predefinita che puoi utilizzare per containerizzare la tua applicazione Python. Per containerizzare 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 la versione breve del tuo ID commit. Il passaggio di build utilizza le sostituzioni predefinite per l'ID progetto, il nome del repository e i valori SHA brevi, pertanto questi valori vengono sostituiti automaticamente al momento della build.Esegui il push del container in Artifact Registry: puoi archiviare il container creato in Artifact Registry, che è un servizio Google Cloud che puoi utilizzare per archiviare, gestire e proteggere gli artefatti delle build. Per farlo, devi disporre di un repository Docker esistente in Artifact Registry. Per configurare Cloud Build in modo da archiviare l'immagine in un repository Docker in Artifact Registry, aggiungi un passaggio di build con i seguenti campi:
name
: imposta il valore di questo campo sugcr.io/cloud-builders/docker
per utilizzare l'immagine ufficiale dello strumento di creazionedocker
di Container Registry per la tua 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 build esegue il push dell'immagine che hai creato nel passaggio precedente ad Artifact Registry:
(Facoltativo) Se vuoi che Cloud Build generi informazioni sulla provenienza della build, utilizza il campo
images
nel passaggio della build, anziché utilizzarne uno separato utilizzando un passaggio di buildDocker push
. Se utilizzi build a livello di regione, devi anche aggiungere il camporequestedVerifyOption
e impostare il valore suVERIFIED
per abilitare la generazione della provenienza.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 l'immagine 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 qualsiasi log di test in Cloud Storage specificando la posizione di un bucket e il percorso esistenti per i log di test. Il seguente passaggio di build archivia 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 in precedenza:
Avvia la build: manualmente o utilizzando i trigger di build.
Una volta completata la build, puoi visualizzare i dettagli del repository in Artifact Registry.
Per proteggere la catena di fornitura del software, puoi anche visualizzare i metadati di provenienza della build e convalidare la provenienza.
Passaggi successivi
- Scopri come visualizzare i risultati della build.
- Scopri come salvaguardare le build.
- Scopri come creare applicazioni Python autonome.
- Scopri come utilizzare le dipendenze private.
- Scopri come risolvere gli errori di generazione.