Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Legacy Gen 1)
Questa guida spiega come creare una pipeline CI/CD per testare, sincronizzare ed eseguire il deployment dei DAG nel tuo ambiente Managed Airflow dal tuo 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 e la esegui il push in un ramo di sviluppo nel repository.
Apri una richiesta di pull nel ramo principale del 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 tuo repository.
Cloud Build sincronizza l'ambiente Managed Airflow di sviluppo con queste nuove modifiche.
Verifichi che il DAG funzioni come previsto nell'ambiente di sviluppo ambiente.
Se il DAG funziona come previsto, lo carichi nell'ambiente Managed Airflow di produzione.
Obiettivi
- Eseguire un controllo di pre-invio automatico utilizzando Cloud Build. Questo controllo esegue test delle unità per un DAG.
- Sincronizzare i DAG nell'ambiente Managed Service per Apache Airflow di sviluppo con i DAG nel repository GitHub.
Prima di iniziare
Questa guida presuppone che tu stia lavorando con due ambienti Managed Airflow identici: un ambiente di sviluppo e un ambiente di produzione.
Ai fini di questa guida, configurerai una pipeline CI/CD solo per l'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 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 dei DAG e i relativi requisiti si trovano nella directoryutils.
Creare un job di controllo di pre-invio e test delle unità
Il primo job di Cloud Build esegue un controllo di pre-invio, che esegue test delle unità per i DAG.
Aggiungere test delle unità
Se non l'hai ancora fatto, crea test delle unità per i
DAG. Salva questi test insieme ai DAG nel repository, ognuno 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 di pre-invio nel repository.
Creare la configurazione YAML di Cloud Build per il controllo di pre-invio
Nel repository, crea un file YAML denominato test-dags.cloudbuild.yaml che configura il job di Cloud Build per i controlli di pre-invio. Contiene tre passaggi:
- Installa le dipendenze richieste dai DAG.
- Installa le dipendenze richieste dai test delle unità.
- Esegui i test dei DAG.
Creare il trigger di Cloud Build per il controllo di pre-invio
Segui la guida Creare repository da GitHub per creare un trigger basato su app GitHub con le seguenti configurazioni:
Nome:
test-dagsEvento: richiesta di pull
Origine - Repository: scegli il repository
Origine - Ramo di base:
^main$(se necessario, sostituiscimaincon il nome del ramo di base del tuo repository)Origine - Controllo dei commenti: non richiesto
Configurazione di compilazione - File di configurazione di Cloud Build:
/test-dags.cloudbuild.yaml(il percorso del file di build)
Creare un job di sincronizzazione dei DAG e aggiungere lo script dell'utilità dei DAG
Poi, configura un job di Cloud Build che esegue uno script dell'utilità dei DAG. Lo script dell'utilità in questo job sincronizza i DAG con l'ambiente Managed Airflow dopo che sono stati uniti al ramo principale del repository.
Aggiungere lo script dell'utilità dei DAG
Aggiungi lo script dell'utilità dei DAG al repository. Questo script dell'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 dalla directory temporanea alla directory dags/ nel bucket dell'ambiente Managed Airflow.
Creare la configurazione YAML di Cloud Build per la sincronizzazione dei DAG
Nel repository, crea un file YAML denominato add-dags-to-composer.cloudbuild.yaml che configura il job di Cloud Build per la sincronizzazione dei DAG. Contiene due passaggi:
Installa le dipendenze richieste dallo script dell'utilità dei DAG.
Esegui lo script dell'utilità per sincronizzare i DAG nel repository con l'ambiente Managed Airflow.
Creare il trigger di Cloud Build
Segui la guida Creare repository da GitHub per creare un trigger basato su app GitHub con le seguenti configurazioni:
Nome:
add-dags-to-composerEvento: esegui il push sul ramo
Origine - Repository: scegli il repository
Origine - Ramo di base:
^main$(se necessario, sostituiscimaincon il nome del ramo di base del tuo repository)Origine - Filtro dei file inclusi (glob):
dags/**Configurazione di compilazione - 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 ladags/directory nell'ambiente Managed Airflow di sviluppo. Ometti il prefissogs://. Ad esempio:us-central1-example-env-1234ab56-bucket.
Testare la pipeline CI/CD
In questa sezione, segui un flusso di sviluppo dei DAG che utilizza i trigger di Cloud Build appena creati.
Eseguire un job di pre-invio
Crea una richiesta di pull nel ramo principale per testare la build. Individua il controllo di pre-invio nella pagina. Fai clic su Dettagli e scegli Visualizza ulteriori dettagli su Google Cloud Build per visualizzare i log di build nella Google Cloud console.
Se il controllo di pre-invio non è riuscito, consulta Risolvere gli errori di build.
Verificare che il DAG funzioni nell'ambiente di sviluppo
Una volta approvata la richiesta di pull, uniscila al ramo principale. Utilizza la
Google Cloud console per
visualizzare i risultati della build. Se hai molti trigger di 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 Managed Airflow di sviluppo. Lì, puoi verificare che il DAG funzioni come previsto.
Aggiungere il DAG all'ambiente di produzione
Una volta verificato che il DAG funzioni come previsto, aggiungilo manualmente all'ambiente di produzione. Per farlo, carica il file DAG
nella directory dags/ nel bucket dell'ambiente Managed Airflow
di produzione.
Se il job di sincronizzazione dei DAG non è riuscito o se il DAG non funziona come previsto nell'ambiente Managed Airflow di sviluppo, consulta Risolvere gli errori di build.
Risolvere gli errori di build
Questa sezione spiega come risolvere gli scenari di errore di build comuni.
Cosa succede se il controllo di pre-invio non è riuscito?
Dalla richiesta di pull, fai clic Dettagli e scegli Visualizza ulteriori dettagli su Google Cloud Build per visualizzare i log di build nella Google Cloud console. Utilizza questi log per eseguire il debug del problema con il tuo DAG. Una volta risolti i problemi, esegui il commit della correzione e il push nel ramo. Il controllo di 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 dei DAG non è riuscito?
Utilizza la Google Cloud console per
visualizzare i risultati della build. Se hai 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 DAG non funziona correttamente nell'ambiente Managed Airflow?
Se il DAG non funziona come previsto nell'ambiente Managed Airflow di sviluppo, non promuoverlo manualmente all'ambiente Managed Airflow di produzione. Procedi invece in uno dei seguenti modi:
- Ripristina la richiesta di pull con le modifiche che hanno interrotto il tuo DAG allo stato immediatamente precedente alle modifiche (in questo modo vengono ripristinati anche tutti gli altri file nella richiesta di pull).
- Crea una nuova richiesta di pull per ripristinare manualmente le modifiche al DAG interrotto.
- Crea una nuova richiesta di pull per correggere gli errori nel DAG.
Se segui uno di questi passaggi, viene attivato un nuovo controllo di pre-invio e, dopo l'unione, il job di sincronizzazione dei DAG.