Cloud Composer 1 | Cloud Composer 2
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 i dati solo da altri servizi, vedi Trasferimento di 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 della modifica a 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 viene approvata e unita al ramo principale del repository.
Cloud Build sincronizza il tuo ambiente di sviluppo Cloud Composer con queste nuove modifiche.
Devi verificare che il DAG funzioni come previsto nel tuo ambiente di sviluppo.
Se il DAG funziona come previsto, lo carichi nell'ambiente di produzione Cloud Composer.
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 i DAG e i relativi test siano archiviati in un repository GitHub.
La pipeline CI/CD di esempio mostra i contenuti di un repository di esempio. I DAG e i test sono archiviati nella directory
dags/
, con i file dei requisiti, il file dei vincoli e i file di configurazione di Cloud Build archiviati al livello superiore. L'utilità di sincronizzazione DAG e i relativi requisiti si trovano nella directoryutils
.Questa struttura può essere utilizzata per gli ambienti Airflow 1, Airflow 2, Cloud Composer 1 e Cloud Composer 2.
Creare un job di controllo pre-invio e test delle unità
Il primo job Cloud Build esegue un controllo pre-invio, che esegue test delle unità per i DAG.
Aggiungere test delle unità
Se non lo hai già fatto, crea i test delle unità per i DAG. Salva questi test insieme ai
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
. Questi sono i test che vengono eseguiti come controllo pre-invio nel tuo repository.
Creare la configurazione YAML di Cloud Build per il controllo pre-invio
Nel tuo repository, crea un file YAML denominato test-dags.cloudbuild.yaml
che configura il job Cloud Build per i controlli pre-invio. Sono previsti tre passaggi:
- Installa le dipendenze necessarie per i DAG.
- Installa le dipendenze necessarie per i test delle unità.
- Esegui i test dei DAG.
Crea il trigger di Cloud Build per il controllo pre-invio
Segui la guida per la creazione di repository da GitHub per creare un trigger basato su app GitHub con le seguenti configurazioni:
Nome:
test-dags
Evento: richiesta di pull
Origine - Repository: scegli il repository
Origine - Ramo di base:
^main$
(cambiamain
con il nome del ramo di base del tuo repository, se necessario)Origine - Controllo dei commenti: non obbligatorio.
Configurazione build - File di configurazione di Cloud Build:
/test-dags.cloudbuild.yaml
(il percorso del file di build)
Crea un job di sincronizzazione DAG e aggiungi lo script di utilità per i DAG
Quindi, configura un job di Cloud Build che esegua uno script di utilità dei DAG. Lo script di utilità in questo job sincronizza i DAG con il tuo ambiente Cloud Composer dopo l'unione al ramo principale del repository.
Aggiungere lo script di utilità dei DAG
Aggiungi lo script dell'utilità DAG al tuo repository. Questo script di utilità copia tutti i file DAG della 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 del tuo ambiente Cloud Composer.
Creare una configurazione YAML Cloud Build per la sincronizzazione dei DAG
Nel tuo repository, crea un file YAML denominato
add-dags-to-composer.cloudbuild.yaml
per configurare il tuo job Cloud Build
per la sincronizzazione dei DAG. Ci sono due passaggi:
Installa le dipendenze necessarie dallo script dell'utilità dei DAG.
Esegui lo script di utilità per sincronizzare i DAG nel tuo repository con il tuo ambiente Cloud Composer.
crea il trigger di Cloud Build
Segui la guida per la creazione di repository da GitHub per creare un trigger basato su app GitHub con le seguenti configurazioni:
Nome:
add-dags-to-composer
Evento: esegui il push a un ramo
Origine - Repository: scegli il repository
Origine - Ramo di base:
^main$
(cambiamain
con il nome del ramo di base del tuo repository, se necessario)Origine - Filtro dei file inclusi (glob):
dags/**
Configurazione build - File di configurazione di 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/
nel tuo 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 di DAG che utilizza i trigger di 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 altri dettagli su Google Cloud Build per visualizzare i log di build nella console Google Cloud.
Se la verifica prima dell'invio non è andata a buon fine, consulta Risolvere gli errori relativi alle 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 console Google Cloud per visualizzare i risultati della build. Se disponi di molti trigger di Cloud Build, puoi filtrare le build in base al nome del trigger add-dags-to-composer
.
Una volta riuscito il job di sincronizzazione di Cloud Build, il DAG sincronizzato viene visualizzato nel tuo ambiente di sviluppo Cloud Composer. Qui puoi convalidare il funzionamento del DAG come previsto.
Aggiungi 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 del tuo ambiente Cloud Composer di produzione.
Se il job di sincronizzazione DAG non è riuscito o se il DAG non funziona come previsto nell'ambiente di sviluppo Cloud Composer, consulta la sezione Risolvere gli errori di build.
Gestione degli errori delle build
Questa sezione spiega come risolvere scenari di errore comuni della build.
Che cosa succede se la verifica pre-invio non è andata 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 console Google Cloud. Utilizza questi log per eseguire il debug del problema relativo al tuo DAG. Dopo aver risolto i problemi, esegui il commit della correzione ed esegui il push al tuo ramo. Il controllo pre-invio viene eseguito di nuovo e puoi continuare a eseguire l'iterazione utilizzando i log come strumento di debug.
Cosa succede se il job di sincronizzazione DAG non è riuscito?
Utilizza la console Google Cloud per visualizzare i risultati della build. Se disponi di molti trigger di 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 di produzione Cloud Composer. Esegui invece una delle seguenti operazioni:
- Ripristina la richiesta di pull con le modifiche che hanno danneggiato il DAG per ripristinarlo allo stato immediatamente prima delle modifiche (vengono ripristinati 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.
Il completamento di uno di questi passaggi attiva un nuovo controllo pre-invio e, al momento dell'unione, il job di sincronizzazione DAG.