Questa pagina descrive come configurare Cloud Build per creare e testare le applicazioni Python, caricare gli artefatti in Artifact Registry, generare informazioni sulla provenienza e salvare i log di test in Cloud Storage.
Cloud Build ti consente di utilizzare qualsiasi immagine container disponibile pubblicamente
per eseguire le tue attività. L'immagine pubblica
python
da Docker Hub
viene preinstallata con gli strumenti python
e pip
. Puoi configurare Cloud Build
per utilizzare questi strumenti per installare le dipendenze, eseguire la build ed eseguire test delle unità.
Prima di iniziare
Le istruzioni riportate in questa pagina presuppongono che tu abbia familiarità con Python. Inoltre:
-
Enable the Cloud Build, Artifact Registry, and Cloud Storage APIs.
- Per eseguire i comandi
gcloud
in questa pagina, installa Google Cloud CLI. - Tieni a portata di mano il progetto Python.
- Avere un repository Python in Artifact Registry. Se non ne hai uno, crea un nuovo repository.
- 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 al account di servizio di build.Per archiviare le immagini create in Artifact Registry, concedi il ruolo Writer Artifact Registry (
roles/artifactregistry.writer
) al tuo account di servizio di build.
Per istruzioni sulla concessione di questi ruoli, consulta Concedere un ruolo utilizzando la pagina IAM.
Configurazione delle build Python
Questa sezione illustra un file di configurazione della build di esempio per un'app Python. Contiene passaggi di build per gestire i requisiti di installazione, aggiungere test delle unità e, dopo il superamento dei test, per creare e implementare l'app.
Nella directory principale del progetto, crea il file di configurazione Cloud Build denominato
cloudbuild.yaml
.Installa i requisiti: 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
opython:<tag>
per utilizzare l'immagine Python di Docker Hub per questa attività. Per visualizzare un elenco dei tag disponibili per altre immagini Python, consulta la documentazione di riferimento di Docker Hub per l'immagine Python.entrypoint
: l'impostazione 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 di build ed esegui 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
. Inserisci 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 installare i requisiti:
steps: - name: 'python' entrypoint: 'python' args: ['-m', 'pip', 'install', '--upgrade', 'pip'] - name: python entrypoint: python args: ['-m', 'pip', 'install', 'build', 'pytest', 'Flask', '--user']
Aggiungi test delle unità: se hai definito 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 da 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 seguente passaggio di build salva l'output del log
pytest
in un file XML JUNIT. Il nome di questo file è costruito utilizzando$SHORT_SHA
, la versione breve dell'ID commit associato alla tua build. Un passaggio di build successivo salverà i log in questo file in Cloud Storage.- name: 'python' entrypoint: 'python' args: ['-m', 'pytest', '--junitxml=${SHORT_SHA}_test_log.xml']
Build: nel file di configurazione della build, definisci il builder e
args
per creare la tua applicazione:name
: imposta il valore di questo campo supython
per utilizzare l'immagine Python da Docker Hub per l'attività.entrypoint
: imposta il valore di questo campo supython
per eseguire i comandipython
.args
: aggiungi gli argomenti per eseguire la build.
Il seguente passaggio di compilazione avvia la build:
- name: 'python' entrypoint: 'python' args: ['-m', 'build']
Carica su Artifact Registry:
Nel file di configurazione, aggiungi il campo
pythonPackages
e specifica il repository Python in Artifact Registry:artifacts: pythonPackages: - repository: 'https://LOCATION-python.pkg.dev/PROJECT-ID/REPOSITORY' paths: ['dist/*']
Sostituisci i seguenti valori:
- PROJECT-ID è l'ID del progetto Google Cloud che contiene il repository Artifact Registry.
- REPOSITORY è l'ID del repository.
- LOCATION è la posizione regionale o multiregionale del repository.
(Facoltativo) Attivare la generazione della provenienza
Cloud Build può generare metadati di provenienza della build Supply chain Levels for Software Artifacts (SLSA) verificabili per proteggere la pipeline di integrazione continua.
Per abilitare la generazione della provenienza, aggiungi
requestedVerifyOption: VERIFIED
alla sezioneoptions
del file di configurazione.Salva i log di test in Cloud Storage: puoi configurare Cloud Build in modo da archiviare 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:
artifacts: objects: location: 'gs://${_BUCKET_NAME}/' paths: - '${SHORT_SHA}_test_log.xml'
Avvia la build: manualmente o utilizzando i trigger di build.
Una volta completata la 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 e containerizzare applicazioni Python.
- Scopri come utilizzare le dipendenze private.
- Scopri come eseguire deployment blu/verdi su Compute Engine.
- Scopri come risolvere gli errori di build.