Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
Questa guida spiega come creare una pipeline CI/CD per testare, sincronizzare ed eseguire il deployment dei DAG nell'ambiente Cloud Composer dal repository GitHub.
Se vuoi sincronizzare solo i dati di altri servizi, consulta Trasferire dati da altri servizi.
Panoramica della pipeline CI/CD

La pipeline CI/CD per testare, sincronizzare ed eseguire il deployment dei DAG prevede i seguenti passaggi:
Apporti una modifica a un DAG ed esegui il push di questa modifica a un ramo di sviluppo nel tuo repository.
Apri una richiesta di pull rispetto al ramo principale del repository.
Cloud Build esegue test delle unità per verificare che il DAG sia valido.
La tua richiesta di pull è stata approvata e unita al ramo principale del tuo repository.
Cloud Build sincronizza l'ambiente Cloud Composer di sviluppo con queste nuove modifiche.
Verifica che il DAG si comporti come previsto nell'ambiente di sviluppo.
Se il DAG funziona come previsto, caricalo nell'ambiente Cloud Composer di produzione.
Obiettivi
Prima di iniziare
Questa guida presuppone che tu stia lavorando con due ambienti Cloud Composer identici: un ambiente di sviluppo e un ambiente di produzione.
Ai fini di questa guida, stai configurando una pipeline CI/CD solo per il tuo ambiente di sviluppo. Assicurati che l'ambiente che utilizzi non sia un ambiente di produzione.
Questa guida presuppone che tu abbia archiviato i tuoi DAG e i relativi test in un repository GitHub.
La pipeline CI/CD di esempio mostra i contenuti di un repository di esempio. I DAG e i test vengono archiviati nella directory
dags/
, con i file dei requisiti, il file dei vincoli e i file di configurazione di Cloud Build archiviati al primo livello. L'utilità di sincronizzazione DAG e i relativi requisiti si trovano nella directoryutils
.
Crea un job di controllo pre-invio e test unitari
Il primo job Cloud Build esegue un controllo pre-invio, che esegue test unitari per i tuoi DAG.
Aggiungere test delle unità
Se non l'hai ancora fatto, crea
test unitari per i tuoi DAG. Salva questi test insieme ai
DAG nel repository, ciascuno con il suffisso _test
. Ad esempio, il file
di test per il DAG in example_dag.py
è example_dag_test.py
. Questi sono i
test eseguiti come controllo pre-invio nel repository.
Crea la configurazione YAML di Cloud Build per il controllo pre-invio
Nel repository, crea un file YAML denominato test-dags.cloudbuild.yaml
che
configura il job Cloud Build per i controlli pre-invio. che prevede
tre passaggi:
- Installa le dipendenze necessarie per i tuoi DAG.
- Installa le dipendenze necessarie per i test delle unità.
- Esegui i test DAG.
Crea il trigger di Cloud Build per il controllo pre-invio
Segui la guida Creazione di repository da GitHub per creare un trigger basato su un'app GitHub con le seguenti configurazioni:
Nome:
test-dags
Evento: richiesta di pull
Origine - Repository: scegli il repository
Origine - Branch di base:
^main$
(modificamain
con il nome del branch di base del repository, se necessario)Fonte - Controllo dei commenti: non richiesto
Configurazione build - File di configurazione Cloud Build:
/test-dags.cloudbuild.yaml
(il percorso del file di build)
Crea un job di sincronizzazione DAG e aggiungi lo script di utilità DAG
Successivamente, configura un job Cloud Build che esegue uno script di utilità DAG. Lo script di utilità in questo job sincronizza i DAG con l'ambiente Cloud Composer dopo che sono stati uniti al ramo principale nel repository.
Aggiungere lo script di utilità DAGs
Aggiungi lo script dell'utilità DAG al tuo repository. Questo script di utilità copia tutti i file DAG nella directory dags/
del tuo repository in una directory temporanea, ignorando tutti i file Python non DAG. Lo
script utilizza quindi la libreria client di Cloud Storage per caricare tutti i file
dalla directory temporanea alla directory dags/
nel bucket dell'ambiente
Cloud Composer.
Crea la configurazione YAML di Cloud Build per sincronizzare i DAG
Nel repository, crea un file YAML denominato
add-dags-to-composer.cloudbuild.yaml
che configuri il job Cloud Build
per la sincronizzazione dei DAG. che prevede due passaggi:
Installa le dipendenze necessarie per lo script di utilità DAG.
Esegui lo script di utilità per sincronizzare i DAG nel repository con l'ambiente Cloud Composer.
Crea il trigger di Cloud Build
Segui la guida Creazione di repository da GitHub per creare un trigger basato su un'app GitHub con le seguenti configurazioni:
Nome:
add-dags-to-composer
Evento: push al ramo
Origine - Repository: scegli il repository
Origine - Branch di base:
^main$
(modificamain
con il nome del branch di base del repository, se necessario)Origine - Filtro dei file inclusi (glob):
dags/**
Configurazione build - File di configurazione Cloud Build:
/add-dags-to-composer.cloudbuild.yaml
(il percorso del file di build)
Nella configurazione avanzata, aggiungi due variabili di sostituzione:
_DAGS_DIRECTORY
: la directory in cui si trovano i DAG nel repository. Se utilizzi il repository di esempio di questa guida, èdags/
._DAGS_BUCKET
: il bucket Cloud Storage che contiene la directorydags/
nell'ambiente Cloud Composer di sviluppo. Ometti il prefissogs://
. Ad esempio:us-central1-example-env-1234ab56-bucket
.
Testa la pipeline CI/CD
In questa sezione, segui un flusso di sviluppo DAG che utilizza i trigger Cloud Build appena creati.
Esegui un job di pre-invio
Crea una richiesta di pull al ramo principale per testare la build. Individua il controllo pre-invio nella pagina. Fai clic su Dettagli e scegli Visualizza ulteriori dettagli su Google Cloud Build per visualizzare i log di build nella consoleGoogle Cloud .

Se il controllo pre-invio non è andato a buon fine, consulta Risoluzione degli errori di build.
Verifica che il DAG funzioni nell'ambiente Cloud Composer di sviluppo
Una volta approvata la richiesta di pull, uniscila al ramo principale. Utilizza la consoleGoogle Cloud per visualizzare i risultati della build. Se hai molti
trigger Cloud Build, puoi filtrare le build in base al nome del trigger
add-dags-to-composer
.
Una volta completato il job di sincronizzazione di Cloud Build, il DAG sincronizzato viene visualizzato nell'ambiente Cloud Composer di sviluppo. Qui puoi verificare che il DAG funzioni come previsto.
Aggiungere il DAG all'ambiente di produzione
Dopo che il DAG funziona come previsto, aggiungilo manualmente all'ambiente di produzione. Per farlo,
carica il file DAG
nella directory dags/
del bucket dell'ambiente Cloud Composer di produzione.
Se il job di sincronizzazione DAG non è riuscito o se il DAG non si comporta come previsto nell'ambiente Cloud Composer di sviluppo, consulta la sezione Risoluzione degli errori di build.
Risoluzione degli errori di build
Questa sezione spiega come risolvere scenari comuni di errori di build.
Cosa succede se il controllo pre-invio non è andato a buon fine?
Dalla richiesta di pull, fai clic su Dettagli e scegli Visualizza altri dettagli su Google Cloud Build per visualizzare i log di build nella consoleGoogle Cloud . Utilizza questi log per eseguire il debug del problema relativo al tuo DAG. Una volta risolti i problemi, esegui il commit della correzione e il push nel tuo branch. Il controllo pre-invio viene eseguito di nuovo e puoi continuare a eseguire iterazioni utilizzando i log come strumento di debug.
Cosa succede se il mio job di sincronizzazione del DAG non è andato a buon fine?
Utilizza la console Google Cloud per
visualizzare i risultati della build. Se hai molti
trigger Cloud Build, puoi filtrare le build in base al nome del trigger
add-dags-to-composer
. Esamina i log del job di build e risolvi gli
errori. Se hai bisogno di ulteriore assistenza per risolvere gli errori, utilizza
i canali di assistenza.
Cosa succede se il mio DAG non funziona correttamente nel mio ambiente Cloud Composer?
Se il DAG non funziona come previsto nell'ambiente Cloud Composer di sviluppo, non promuoverlo manualmente nell'ambiente Cloud Composer di produzione. Procedi invece in uno dei seguenti modi:
- Ripristina la richiesta di pull con le modifiche che hanno interrotto il DAG per ripristinarlo allo stato immediatamente precedente alle modifiche (questa operazione ripristina anche tutti gli altri file nella richiesta di pull).
- Crea una nuova richiesta di pull per ripristinare manualmente le modifiche al DAG danneggiato.
- Crea una nuova richiesta di pull per correggere gli errori nel DAG.
L'esecuzione di uno di questi passaggi attiva un nuovo controllo pre-invio e, al momento dell'unione, il job di sincronizzazione DAG.