Questa pagina descrive come configurare Cloud Build per compilare e testare le applicazioni Python, caricare gli artefatti in Artifact Registry, generare informazioni sull'origine 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 python
pubblica di Docker Hub è preinstallata 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, Artifact Registry, and Cloud Storage APIs.
- Per eseguire i comandi
gcloud
in questa pagina, installa Google Cloud CLI. - Tieni a portata di mano il tuo 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 archiviazione (
roles/storage.objectCreator
) per il bucket Cloud Storage al tuo account di servizio di compilazione.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 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 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 compilazione con i seguenti campi:name
: imposta il valore di questo campo supython
opython:<tag>
per utilizzare il valore un'immagine Python di Docker Hub per questa attività. Per visualizzare un elenco dei tag disponibili per altre immagini Python, consulta la documentazione di Docker Hub per l'immagine Python.entrypoint
: l'impostazione di questo campo esegue l'override del punto di ingresso 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 build accetta un elenco di argomenti e e le passa all'immagine a cui fa riferimento il camponame
. Passa gli argomenti per eseguire il comandopip install
in questo campo.--user
in:pip install
assicura che i successivi passaggi di build possano accedere ai moduli installato in questo passaggio di build.
Il seguente passaggio di build aggiunge argomenti ai requisiti di installazione:
steps: - name: 'python' entrypoint: 'python' args: ['-m', 'pip', 'install', '--upgrade', 'pip'] - name: python entrypoint: python args: ['-m', 'pip', 'install', 'build', 'pytest', 'Flask', '--user']
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 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 compilazione salva l'output del log
pytest
in un file XML JUNIT. Il nome di questo file è stato creato utilizzando$SHORT_SHA
, la versione breve dell'ID commit associato con la tua build. Un passaggio di compilazione 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 generatore e il
args
per compilare l'applicazione: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 della build.
Il seguente passaggio di compilazione avvia la compilazione:
- name: 'python' entrypoint: 'python' args: ['-m', 'build']
Carica in Artifact Registry:
Nel file di configurazione, aggiungi il campo
pythonPackages
e specifica il tuo 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 contenente il repository Artifact Registry.
- REPOSITORY è l'ID del repository.
- LOCATION è la località a livello di una o più regioni del repository.
(Facoltativo) Attivare la generazione dell'origine
Cloud Build può generare Build Livelli della catena di fornitura per artefatti software (SLSA) di provenienza dei metadati per contribuire a 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 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 build archivia i log di test che hai salvato 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 gli trigger di build.
Al termine della build, puoi visualizzare i dettagli del repository in Artifact Registry.
Puoi anche visualizzare i metadati dell'origine della compilazione e convalidare l'origine.
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/verde su Compute Engine.
- Scopri come risolvere gli errori di compilazione.