Questa pagina descrive come configurare Cloud Build per creare, testare, containerizzare ed eseguire il deployment di applicazioni Python.
Cloud Build ti consente di utilizzare qualsiasi immagine container disponibile pubblicamente per eseguire le attività di sviluppo, tra cui la creazione, il test, la containerizzazione, il caricamento su Artifact Registry, il deployment e il salvataggio dei log di build. L'immagine pubblica
python da Docker Hub
viene fornita con gli strumenti python e pip preinstallati. Puoi configurare Cloud Build in modo che utilizzi questi strumenti per installare le dipendenze, creare ed eseguire test unità.
Prima di iniziare
Le istruzioni riportate in questa pagina presuppongono che tu abbia familiarità con Python. Inoltre:
-
Abilita le API Cloud Build, Cloud Run, Cloud Storage e Artifact Registry.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre del ruolo IAM Amministratore utilizzo servizi (
roles/serviceusage.serviceUsageAdmin), che contiene l'autorizzazioneserviceusage.services.enable. Scopri come concedere i ruoli. - Per eseguire i comandi
gcloudin questa pagina, installa Google Cloud CLI. - Tieni a portata di mano il progetto Python, incluso il file
requirements.txt. Ti serve unDockerfileinsieme 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 obbligatorie
Per archiviare i log di test in Logging, concedi il ruolo Creatore oggetti Storage (
roles/storage.objectCreator) per il bucket Cloud Storage al account di servizio di build.Per archiviare le immagini create in Artifact Registry, concedi il ruolo Writer di Artifact Registry (
roles/artifactregistry.writer) al account di servizio di build.
Per istruzioni su come concedere questi ruoli, consulta Concedere un ruolo utilizzando la pagina IAM.
Configurare le build Python
Questa sezione illustra un esempio di file di configurazione della build per un'app Python. Contiene passaggi di build per installare i requisiti, aggiungere test unità e, dopo il superamento dei test, creare ed eseguire il deployment dell'app.
Nella directory principale del progetto, crea il file di configurazione di Cloud Build denominato
cloudbuild.yaml.Installa i requisiti: l'immagine
pythondi Docker Hub viene fornita conpippreinstallato. Per installare le dipendenze dapip, aggiungi un passaggio di build con i seguenti campi:name: imposta il valore di questo campo supythonper utilizzare l'immagine Python di Docker Hub per questa attività.entrypoint: l'impostazione di questo campo sostituisce il punto di ingresso predefinito dell'immagine a cui fa riferimentoname. Imposta il valore di questo campo supipper richiamarepipcome punto di ingresso del passaggio di build ed eseguire i comandipip.args: il campoargsdi 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 installin questo campo. Il flag--usernel comandopip installgarantisce che i passaggi di build successivi possano accedere ai moduli installati in questo passaggio di build.
Il seguente passaggio di build aggiunge argomenti per installare i requisiti dal file
requirements.txt:Aggiungi test unità: se hai definito test 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 supythonper utilizzare l'immagine Python di Docker Hub per la tua attività.entrypoint: imposta il valore di questo campo supythonper eseguire i comandipython.args: aggiungi gli argomenti per l'esecuzione del comandopython pytest.
Il seguente passaggio di build salva l'output del log
pytestin 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.Containerizza 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 l'applicazione Python. Per containerizzare l'app, aggiungi i seguenti campi in un passaggio di build:
name: imposta il valore di questo campo sugcr.io/cloud-builders/dockerper utilizzare l'immagine Docker predefinita per la tua attività.args: aggiungi gli argomenti per il comandodocker buildcome valori per questo campo.
Il seguente passaggio di build crea l'immagine
myimagee la tagga con la versione breve dell'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 tempo di compilazione.Esegui il push del container in Artifact Registry: puoi archiviare il container creato in Artifact Registry, un Google Cloud servizio che puoi utilizzare per archiviare, gestire e proteggere gli artefatti di build. Per farlo, devi avere un repository Docker esistente in Artifact Registry. Per configurare Cloud Build in modo che archivi l'immagine in un repository Docker di Artifact Registry, aggiungi un passaggio di build con i seguenti campi:
name: imposta il valore di questo campo sugcr.io/cloud-builders/dockerper utilizzare l'immagine del builderdockerufficiale per la tua attività.args: aggiungi gli argomenti per il comandodocker pushcome 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 creata nel passaggio precedente in Artifact Registry:
(Facoltativo) Se vuoi che Cloud Build generi informazioni sulla provenienza della build Supply-chain Levels for Software Artifacts (SLSA), completa i seguenti passaggi:
- Utilizza il campo
imagesnel passaggio di build anziché utilizzare un passaggio di buildDocker pushseparato. - Aggiungi
requestedVerifyOption: VERIFIEDalla sezioneoptionsdel file di configurazione della build.
Esegui il deployment del container in Cloud Run: per eseguire il deployment dell'immagine in Cloud Run, aggiungi un passaggio di build con i seguenti campi:
name: imposta il valore di questo campo sugoogle/cloud-sdkper utilizzare l'immagine di gcloud CLI per richiamare il comandogcloudper eseguire il deployment dell'immagine in Cloud Run.args: aggiungi gli argomenti per il comandogcloud run deploycome 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 che archivi tutti i log di test in Cloud Storage specificando un percorso e una posizione del bucket 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:
Il seguente snippet 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.