Cloud Composer 1 Cloud Composer 2
In dieser Anleitung wird erläutert, wie Sie eine CI/CD-Pipeline erstellen, um DAGs aus Ihrem GitHub-Repository in Ihrer Cloud Composer-Umgebung zu testen, zu synchronisieren und bereitzustellen.
Wenn Sie nur Daten aus anderen Diensten synchronisieren möchten, lesen Sie die Informationen unter Daten aus anderen Diensten übertragen.
CI/CD-Pipeline – Übersicht

Die CI/CD-Pipeline zum Testen, Synchronisieren und Bereitstellen von DAGs umfasst die folgenden Schritte:
Sie nehmen eine Änderung an einem DAG vor und übertragen diese Änderung in einen Entwicklungszweig in Ihrem Repository.
Sie öffnen eine Pull-Anfrage für den Hauptzweig Ihres Repositorys.
Cloud Build führt Einheitentests aus, um die Gültigkeit des DAG zu prüfen.
Ihre Pull-Anfrage wurde genehmigt und mit dem Hauptzweig Ihres Repositorys zusammengeführt.
Cloud Build synchronisiert Ihre Cloud Composer-Entwicklungsumgebung mit diesen neuen Änderungen.
Sie prüfen, ob sich der DAG in Ihrer Entwicklungsumgebung wie erwartet verhält.
Wenn der DAG wie erwartet funktioniert, laden Sie ihn in Ihre Cloud Composer-Produktionsumgebung hoch.
Lernziele
Hinweise
In diesem Leitfaden wird davon ausgegangen, dass Sie mit zwei identischen Cloud Composer-Umgebungen arbeiten: mit einer Entwicklungsumgebung und einer Produktionsumgebung.
In dieser Anleitung konfigurieren Sie eine CI/CD-Pipeline nur für Ihre Entwicklungsumgebung. Achten Sie darauf, dass die von Ihnen verwendete Umgebung keine Produktionsumgebung ist.
In diesem Leitfaden wird davon ausgegangen, dass Ihre DAGs und deren Tests in einem GitHub-Repository gespeichert sind.
In der CI/CD-Beispielpipeline wird der Inhalt eines Beispiel-Repositorys veranschaulicht. DAGs und Tests werden im Verzeichnis
dags/
mit Anforderungsdateien, der Datei mit den Einschränkungen und den Cloud Build-Konfigurationsdateien auf oberster Ebene gespeichert. Das DAG-Synchronisierungsdienstprogramm und seine Anforderungen befinden sich im Verzeichnisutils
.Diese Struktur kann für Airflow 1-, Airflow 2-, Cloud Composer 1- und Cloud Composer 2-Umgebungen verwendet werden.
Prüfjob und Einheitentests für Vorabprüfung erstellen
Der erste Cloud Build-Job führt eine Prüfung zur Vorabübermittlung aus, die Einheitentests für Ihre DAGs ausführt.
Unittests hinzufügen
Erstellen Sie Unittests für Ihre DAGs, falls noch nicht geschehen. Speichern Sie diese Tests zusammen mit den DAGs in Ihrem Repository jeweils mit dem Suffix _test
. Die Testdatei für den DAG in example_dag.py
ist beispielsweise example_dag_test.py
. Dies sind die Tests, die als Vorabprüfung in Ihrem Repository ausgeführt werden.
Cloud Build-YAML-Konfiguration für die Prüfung vor dem Senden erstellen
Erstellen Sie in Ihrem Repository eine YAML-Datei mit dem Namen test-dags.cloudbuild.yaml
, die Ihren Cloud Build-Job für Vorabprüfungen konfiguriert. Sie umfasst drei Schritte:
- Installieren Sie die für Ihre DAGs erforderlichen Abhängigkeiten.
- Installieren Sie die für Ihre Einheitentests erforderlichen Abhängigkeiten.
- Führen Sie die DAG-Tests aus.
Cloud Build-Trigger für die Vorabprüfung erstellen
Folgen Sie der Anleitung Repositories auf GitHub erstellen, um einen auf GitHub basierenden Trigger mit den folgenden Konfigurationen zu erstellen:
Name:
test-dags
Ereignis: Pull-Anfrage
Quelle – Repository: Wählen Sie Ihr Repository aus.
Quelle: Basiszweig:
^main$
(ändern Siemain
in den Namen des Basiszweigs Ihres Repositorys, falls erforderlich)Quelle: Kommentarsteuerung: nicht erforderlich
Build-Konfiguration – Cloud-Build-Konfigurationsdatei:
/test-dags.cloudbuild.yaml
(der Pfad zu Ihrer Build-Datei)
DAG-Synchronisierungsjob erstellen und DAGs-Dienstprogrammskript hinzufügen
Konfigurieren Sie als Nächstes einen Cloud Build-Job, der ein DAGs-Dienstprogrammskript ausführt. Das Dienstprogrammskript in diesem Job synchronisiert die DAGs mit Ihrer Cloud Composer-Umgebung, nachdem sie mit dem Hauptzweig in Ihrem Repository zusammengeführt wurden.
DAGs-Dienstprogrammskript hinzufügen
Fügen Sie Ihrem Repository das Skript des DAG-Dienstprogramms hinzu. Dieses Dienstprogrammskript kopiert alle DAG-Dateien im Verzeichnis dags/
Ihres Repositorys in ein temporäres Verzeichnis und ignoriert alle Nicht-DAG-Python-Dateien. Das Skript verwendet dann die Cloud Storage-Clientbibliothek, um alle Dateien aus diesem temporären Verzeichnis in das Verzeichnis dags/
im Bucket Ihrer Cloud Composer-Umgebung hochzuladen.
Cloud Build-YAML-Konfiguration zum Synchronisieren von DAGs erstellen
Erstellen Sie in Ihrem Repository eine YAML-Datei mit dem Namen add-dags-to-composer.cloudbuild.yaml
, die Ihren Cloud Build-Job für die Synchronisierung von DAGs konfiguriert. Sie umfasst zwei Schritte:
Installieren Sie die vom DAGs-Dienstprogramm benötigten Abhängigkeiten.
Führen Sie das Dienstprogrammskript aus, um die DAGs in Ihrem Repository mit Ihrer Cloud Composer-Umgebung zu synchronisieren.
Cloud Build-Trigger erstellen
Folgen Sie der Anleitung Repositories auf GitHub erstellen, um einen auf GitHub basierenden Trigger mit den folgenden Konfigurationen zu erstellen:
Name:
add-dags-to-composer
Ereignis: Push zu einem Zweig
Quelle – Repository: Wählen Sie Ihr Repository aus.
Quelle: Basiszweig:
^main$
(ändern Siemain
in den Namen des Basiszweigs Ihres Repositorys, falls erforderlich)Quelle – Filter für enthaltene Dateien (glob):
dags/**
Build-Konfiguration – Cloud-Build-Konfigurationsdatei:
/add-dags-to-composer.cloudbuild.yaml
(der Pfad zu Ihrer Build-Datei)
Fügen Sie in der erweiterten Konfiguration zwei Substitutionsvariablen hinzu:
_DAGS_DIRECTORY
ist das Verzeichnis, in dem sich die DAgs in Ihrem Repository befinden. Wenn Sie das Beispiel-Repository aus dieser Anleitung verwenden, ist esdags/
._DAGS_BUCKET
ist der Cloud Storage-Bucket, der das Verzeichnisdags/
in Ihrer Cloud Composer-Entwicklungsumgebung enthält. Lassen Sie das Präfixgs://
weg. Beispiel:us-central1-example-env-1234ab56-bucket
.
CI/CD-Pipeline testen
Folgen Sie in diesem Abschnitt einem DAG-Entwicklungsablauf, der Ihre neu erstellten Cloud Build-Trigger verwendet.
Vorabübermittlungsjob ausführen
Erstellen Sie eine Pull-Anfrage an Ihren Hauptzweig, um Ihren Build zu testen. Suchen Sie auf der Seite nach Ihrer Prüfung für das Vorabsenden. Klicken Sie auf Details und wählen Sie Weitere Details in Google Cloud Build ansehen aus, um Ihre Build-Logs in der Google Cloud Console aufzurufen.

Wenn das Vorabprüfungsverfahren nicht erfolgreich war, lesen Sie Build-Fehler beheben.
Prüfen, ob der DAG in Ihrer Cloud Composer-Entwicklungsumgebung funktioniert
Nachdem Ihre Pull-Anfrage genehmigt wurde, führen Sie sie mit dem Hauptzweig zusammen. Build-Ergebnisse in der Google Cloud Console ansehen Wenn Sie viele Cloud Build-Trigger haben, können Sie Ihre Builds nach dem Triggernamen add-dags-to-composer
filtern.
Wenn der Cloud Build-Synchronisierungsjob erfolgreich war, wird der synchronisierte DAG in der Cloud Composer-Entwicklungsumgebung angezeigt. Dort können Sie prüfen, ob der DAG wie erwartet funktioniert.
DAG zur Produktionsumgebung hinzufügen
Wenn der DAG wie erwartet funktioniert, fügen Sie ihn manuell der Produktionsumgebung hinzu. Laden Sie dazu die DAG-Datei in das Verzeichnis dags/
im Bucket Ihrer Cloud Composer-Produktionsumgebung hoch.
Wenn der DAG-Synchronisierungsjob fehlgeschlagen ist oder sich der DAG in Ihrer Cloud Composer-Entwicklungsumgebung nicht wie erwartet verhält, lesen Sie Build-Fehler beheben.
Build-Fehler beheben
In diesem Abschnitt wird erläutert, wie Sie mit gängigen Build-Fehlerszenarien umgehen.
Was kann ich tun, wenn meine Vorabprüfung fehlgeschlagen ist?
Klicken Sie in der Pull-Anfrage auf Details und wählen Sie Weitere Details in Google Cloud Build ansehen aus, um Ihre Build-Logs in der Google Cloud Console aufzurufen. Verwenden Sie diese Logs, um das Problem mit Ihrem DAG zu beheben. Sobald Sie die Probleme behoben haben, führen Sie die Fehlerbehebung aus und wenden Sie sich an Ihren Branch. Die Prüfung des Vorabeinreichs wird noch einmal ausgeführt und Sie können die Iteration mithilfe der Logs als Debugging-Tool fortsetzen.
Was passiert, wenn mein DAG-Synchronisierungsjob fehlgeschlagen ist?
Build-Ergebnisse in der Google Cloud Console ansehen Wenn Sie viele Cloud Build-Trigger haben, können Sie Ihre Builds nach dem Triggernamen add-dags-to-composer
filtern. Prüfen Sie die Logs des Build-Jobs und beheben Sie die Fehler. Falls Sie weitere Hilfe beim Beheben der Fehler benötigen, nutzen Sie die Supportkanäle.
Was kann ich tun, wenn mein DAG in meiner Cloud Composer-Umgebung nicht ordnungsgemäß funktioniert?
Wenn der DAG in Ihrer Cloud Composer-Entwicklungsumgebung nicht wie erwartet funktioniert, stufen Sie den DAG nicht manuell in Ihre Cloud Composer-Produktionsumgebung hoch. Führen Sie stattdessen einen der folgenden Schritte aus:
- Setzen Sie die Pull-Anfrage zurück und verwenden Sie die Änderungen, durch die der DAG unterbrochen wurde. Dadurch wird der Status direkt vor den Änderungen wiederhergestellt. Dadurch werden auch alle anderen Dateien in dieser Pull-Anfrage zurückgesetzt.
- Erstellen Sie eine neue Pull-Anfrage, um Änderungen am fehlerhaften DAG manuell rückgängig zu machen.
- Erstellen Sie eine neue Pull-Anfrage, um die Fehler in Ihrem DAG zu beheben.
Wenn Sie einen dieser Schritte ausführen, wird eine neue Prüfung des Vorabsendens und nach der Zusammenführung der DAG-Synchronisierungsjob ausgelöst.