Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Questa guida spiega come creare una pipeline CI/CD per testare, sincronizzare ed eseguire il deployment dei DAG nel tuo ambiente Cloud Composer dal tuo repository GitHub.
Se vuoi sincronizzare solo i dati di altri servizi, consulta Trasferire i dati da altri servizi.
Panoramica della pipeline CI/CD
La pipeline CI/CD per testare, sincronizzare ed eseguire il deployment dei DAG ha seguenti passaggi:
Apporta una modifica a un DAG ed esegui il push della modifica in un ramo di sviluppo nel tuo repository.
Apri una richiesta di pull sul ramo principale del tuo repository.
Cloud Build esegue test delle unità per verificare che il DAG sia valido.
La richiesta di pull è stata approvata e unita al ramo principale del repository.
Cloud Build sincronizza il tuo 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, configuri solo una pipeline CI/CD 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 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 archiviati nella directory
dags/
, con i file dei requisiti, e i file di configurazione di Cloud Build archiviati al livello più alto. L'utilità di sincronizzazione DAG e i suoi requisiti si trovano nella Directoryutils
.Questa struttura può essere utilizzata per Airflow 1, Airflow 2, Cloud Composer 1 e Ambienti di Cloud Composer 2.
Crea un job di controllo preinvio e test di unità
Il primo job Cloud Build esegue un controllo pre-invio, che esegue i test di unità per i DAG.
Aggiungi test delle unità
Se non l'hai ancora fatto, crea
test di unità per i tuoi DAG. Salva questi test insieme a
DAG nel tuo repository, ciascuno con il suffisso _test
. Ad esempio, il file di test per il DAG in example_dag.py
è example_dag_test.py
. Si tratta dei
test eseguiti come controllo precedente all'invio nel tuo repository.
Crea la configurazione YAML di Cloud Build per il controllo pre-invio
Nel tuo repository, crea un file YAML denominato test-dags.cloudbuild.yaml
che configurerà il job Cloud Build per i controlli di preinvio. che prevede tre passaggi:
- Installa le dipendenze necessarie per i 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 sull'app GitHub con le seguenti configurazioni:
Nome:
test-dags
Evento: richiesta di pull
Origine - Repository: scegli il tuo repository
Origine - Ramo base:
^main$
(se necessario, sostituiscimain
con il nome del ramo base del repository)Origine - Controllo commenti: non obbligatorio
Configurazione build - File di configurazione Cloud Build:
/test-dags.cloudbuild.yaml
(il percorso del file di build)
Crea un job di sincronizzazione dei DAG e aggiungi lo script di utilità per i DAG
Successivamente, configura un job Cloud Build che esegue uno script di utilità per i DAG. La lo script di utilità in questo job sincronizza i DAG con dell'ambiente Cloud Composer dopo l'unione nel ramo principale. nel tuo repository.
Aggiungi lo script di utilità DAG
Aggiungi lo script dell'utilità DAG al tuo repository. Questo script di utilità copia tutti i file DAG nella directory dags/
del
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 da quella directory temporanea alla directory dags/
nel bucket dell'ambiente Cloud Composer.
Crea una configurazione YAML di Cloud Build per la sincronizzazione dei DAG
Nel tuo repository, crea un file YAML denominato
add-dags-to-composer.cloudbuild.yaml
che configura Cloud Build
per la sincronizzazione dei DAG. Al suo interno, sono previsti due passaggi:
Installa le dipendenze necessarie allo script di utilità DAG.
Esegui lo script di utilità per sincronizzare i DAG nel tuo repository con nell'ambiente Cloud Composer.
Crea l'trigger di Cloud Build
Segui la pagina Creazione di repository da GitHub guida alla creazione di un trigger basato su app GitHub con le seguenti configurazioni:
Nome:
add-dags-to-composer
Evento: push a un ramo
Origine - Repository: scegli il tuo repository
Origine - Ramo base:
^main$
(se necessario, sostituiscimain
con il nome del ramo base del repository)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 classe Directorydags/
nel tuo Cloud Composer di sviluppo completamente gestito di Google Cloud. 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 le tue nuove o i trigger di Cloud Build creati.
Esegui un job di pre-invio
Crea una richiesta di pull nel ramo principale per testare la build. Individua il controllo preinvio nella pagina. Fai clic su Dettagli e scegli Visualizza altri dettagli su Google Cloud Build per vedere i log di build nella nella console Google Cloud.
Se il controllo prima dell'invio non è andato a buon fine, vedi Risolvere gli errori delle build.
Verifica che il DAG funzioni nel tuo ambiente di sviluppo Cloud Composer
Una volta approvata la richiesta di pull, uniscila al ramo principale. Utilizza la
dalla console Google Cloud
visualizzare i risultati della build. Se hai molti trigger Cloud Build, puoi filtrare le build in base al nome dell'triggeradd-dags-to-composer
.
Una volta completato il job di sincronizzazione di Cloud Build, viene visualizzato il DAG sincronizzato nel tuo ambiente di sviluppo Cloud Composer. Qui puoi verificare che il DAG funzioni come previsto.
Aggiungi il DAG all'ambiente di produzione
Quando il DAG si comporta come previsto, aggiungilo manualmente alla tua produzione
completamente gestito di Google Cloud. A tale scopo,
carica il file DAG
nella directory dags/
del bucket dell'ambiente Cloud Composer di produzione.
Se il job di sincronizzazione del DAG non è riuscito o se il DAG non si comporta come previsto nell'ambiente Cloud Composer di sviluppo, consulta Risolvere gli errori di compilazione.
Risolvere gli errori di compilazione
Questa sezione spiega come risolvere scenari comuni di errore delle build.
Che cosa succede se il controllo precedente l'invio non è andato a buon fine?
Nella richiesta di pull, fai clic su Dettagli e scegli Visualizza altri dettagli su Google Cloud Build per vedere i log di build nella nella console Google Cloud. Utilizza questi log per risolvere il problema relativo al DAG. Una volta risolti i problemi, esegui il commit della correzione ed eseguine il push al ramo. Il controllo di preinvio viene eseguito di nuovo e puoi continuare a eseguire l'iterazione utilizzando i log come strumento di debug.
Cosa succede se il mio job di sincronizzazione DAG non va a buon fine?
Utilizza la console Google Cloud per
visualizzare i risultati della compilazione. Se disponi di molti
Puoi filtrare le build in base al nome del trigger
add-dags-to-composer
. Esamina i log del job di build e risolvi
errori. Se hai bisogno di ulteriore assistenza per risolvere gli errori, utilizza
canali di assistenza.
Cosa succede se il mio DAG non funziona correttamente nel mio ambiente Cloud Composer?
Se il DAG non funziona come previsto nel tuo sviluppo nell'ambiente Cloud Composer, non promuovere manualmente il DAG nell'ambiente di produzione Cloud Composer. Esegui invece una delle seguenti operazioni:
- Ripristinare la richiesta di pull con le modifiche che hanno danneggiato il DAG per ripristinarlo allo stato immediatamente prima delle modifiche (verranno ripristinati anche tutti gli altri file nella richiesta di pull).
- Crea una nuova richiesta di pull per ripristinare manualmente le modifiche al DAG non funzionante.
- Crea una nuova richiesta pull per correggere gli errori nel DAG.
Seguendo uno di questi passaggi attivi un nuovo controllo prima dell'invio e, al momento dell'unione, il job di sincronizzazione dei DAG.