CI/CD
Le pipeline di integrazione continua e deployment (CI/CD) aiutano a garantire che le tue funzioni funzionino a livello locale e in un ambiente di test su Google Cloud.
Dopo aver completato lo sviluppo in locale, puoi configurare una piattaforma CI/CD come Cloud Build per eseguire i test Cloud Functions esistenti su base continuativa. I test continui assicurano che il codice continui a funzionare come previsto e che le dipendenze siano sempre aggiornate. Poiché Cloud Functions non viene aggiornato automaticamente, puoi anche configurare le pipeline CI/CD (incluse quelle create su Cloud Build) per testare e rieseguire automaticamente il deployment delle funzioni da un repository di codice sorgente come GitHub, Bitbucket o Cloud Source Repositories.
Prima di iniziare
Prima di iniziare a utilizzare questa guida, configura il tuo ambiente.
Node.js
Python
- Vai alla guida alla configurazione di Python
-
Installa
pytest
.pip install --upgrade pytest
Go
Java
Framework di test
I framework di test forniscono un ambiente di esecuzione per i test automatici, che ti consentono di gestire deployment di produzione testati accuratamente con un impegno minimo per ogni deployment. I framework di simulazione consentono di simulare le dipendenze esterne. Una dipendenza esterna è una dipendenza su cui la funzione si basa e che non è parte del codice della tua funzione.
Node.js
Gli esempi in questa guida utilizzano Mocha come framework di test per eseguire test e Sinon come framework di simulazione per simulare le dipendenze esterne.Una dipendenza esterna è una dipendenza su cui la funzione si basa e che non è parte del codice della tua funzione. Gli esempi comuni di dipendenze esterne sono altri servizi e librerie di Google Cloud installati tramite gestori di pacchetti come npm, PyPI o Maven.
Python
Gli esempi in questa guida utilizzano Pytest come framework di test per eseguire test e unittest come framework di simulazione per simulare le dipendenze esterne.
Una dipendenza esterna è una dipendenza su cui la funzione si basa e che non è parte del codice della tua funzione. Gli esempi comuni di dipendenze esterne sono altri servizi e librerie di Google Cloud installati che utilizzano gestori di pacchetti come pip.
Go
Gli esempi in questa guida utilizzano il pacchetto libreria standardtesting
per eseguire i test. Tuttavia,
i test di sistema hanno dipendenze esterne.
Una dipendenza esterna è una dipendenza su cui la funzione si basa e che non è parte del codice della tua funzione. Gli esempi più comuni di dipendenze esterne sono altri servizi Google Cloud e altri pacchetti che hai scaricato.
Java
Gli esempi in questa guida utilizzano la libreria JUnit per eseguire i test e Mockito come framework di simulazione per simulare dipendenze esterne.Una dipendenza esterna è una dipendenza su cui la funzione si basa e che non è parte del codice della tua funzione.
Configurazione di Cloud Build
Segui le istruzioni nella guida Automatizzare le build con i trigger di build utilizzando il file di configurazione della build cloudbuild.yaml
di seguito per configurare Cloud Build per testare ed eseguire il deployment automaticamente della funzione.
Node.js
Python
Go
Java
Sostituisci:
[YOUR_DEPLOYED_FUNCTION_NAME]
con il nome delle tue funzioni Cloud Functions da utilizzare in Google Cloud Console, nell'interfaccia a riga di comando di Google Cloud e nell'URL.[YOUR_FUNCTION_TRIGGER]
con il valore di attivazione appropriato, ad esempio--trigger-http
.[YOUR_RUNTIME]
con l'identificatore runtime, ad esempionodejs10
.[YOUR_FUNCTION_NAME_IN_CODE]
con il nome della funzione come appare nel codice.--entry-point
è necessario solo se questo valore è diverso da[YOUR_DEPLOYED_FUNCTION_NAME]
.function/dir/from/repo/root
con il percorso della directory contenente la funzione.
Concessione delle autorizzazioni per eseguire build e deployment
Se utilizzi Cloud Build per eseguire il deployment di Cloud Functions, devi concedere le autorizzazioni all'account di servizio Cloud Build (PROJECT_NUMBER@cloudbuild.gserviceaccount.com
).
L'account di servizio Cloud Build viene utilizzato per eseguire le build per tuo conto.
Trovare il numero di progetto:
gcloud projects describe PROJECT_ID
Per ulteriori informazioni su come identificare il tuo progetto, consulta Creazione e gestione dei progetti.
Consenti all'account di servizio Cloud Build di agire come l'account di servizio Cloud Functions Runtime:
gcloud iam service-accounts add-iam-policy-binding PROJECT_ID@appspot.gserviceaccount.com \ --member serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role roles/iam.serviceAccountUser
Assegna il ruolo sviluppatore Cloud Functions all'account di servizio Cloud Build, che consente a Cloud Build di eseguire il deployment di Cloud Functions:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com \ --role roles/cloudfunctions.developer
Per ulteriori informazioni, consulta Ruoli IAM di Cloud Functions.
Ora, ogni volta che esegui il push nel repository con
Cloud Build abilitato,
vengono eseguiti i passaggi nel file cloudbuild.yaml
.