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 fornita con gli strumenti python e pip preinstallati. Puoi configurare Cloud Build per utilizzare questi strumenti per installare le dipendenze, creare ed eseguire test unitari.
Prima di iniziare
Le istruzioni riportate in questa pagina presuppongono che tu abbia familiarità con Python. Inoltre:
-
Abilita le API Cloud Build, Artifact Registry e Cloud Storage.
Ruoli richiesti per abilitare le API
Per abilitare le API, devi disporre dell'autorizzazione
serviceusage.services.enable. Se hai creato il progetto, probabilmente hai già questa autorizzazione tramite il ruolo Proprietario (roles/owner). In caso contrario, puoi ottenere questa autorizzazione tramite il ruolo Amministratore utilizzo servizi (roles/serviceusage.serviceUsageAdmin). Scopri come concedere i ruoli. - Per eseguire i comandi
gcloudin questa pagina, installa Google Cloud CLI. - Tieni a portata di mano il progetto Python.
- Disponi di un repository Python in Artifact Registry. Se non ne hai uno, allora crea un nuovo repository.
- 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 Storage Object Creator (
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 Artifact Registry Writer (
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 file di configurazione di build di esempio per un'app Python. Contiene passaggi di build per gestire i requisiti di installazione, aggiungere test unitari e, dopo il superamento dei test, per 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 supythonopython:<tag>per utilizzare l'immagine Python di Docker Hub per questa attività. Per visualizzare un elenco dei tag disponibili per altre immagini Python, consulta il riferimento di Docker Hub per l'immagine Python.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:
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 unitari: se hai definito test unitari 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$SHORT_SHA, la versione breve dell'ID commit associato alla 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']Crea: nel file di configurazione di build, definisci il builder e gli
argsper creare l'applicazione: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 della build.
Il seguente passaggio di build avvia la build:
- name: 'python' entrypoint: 'python' args: ['-m', 'build']Carica in Artifact Registry:
Nel file di configurazione, aggiungi il campo
pythonPackagese 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 Google Cloud progetto che contiene il repository Artifact Registry.
- REPOSITORY è l'ID del repository.
- LOCATION è la località regionale o multiregionale del repository.
(Facoltativo) Abilita 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: VERIFIEDalla sezioneoptionsnel file di configurazione.Salva i log di test in Cloud Storage: puoi configurare Cloud Build per archiviare tutti i log di test in Cloud Storage specificando una località del bucket e un 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:
artifacts: objects: location: 'gs://${_BUCKET_NAME}/' paths: - '${SHORT_SHA}_test_log.xml'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 e containerizzare le applicazioni Python.
- Scopri come utilizzare le dipendenze private.
- Scopri come eseguire deployment blu/verde su Compute Engine.
- Scopri come risolvere gli errori di build.