Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
In diesem Leitfaden wird erläutert, wie Sie eine CI/CD-Pipeline erstellen, um DAGs aus Ihrem GitHub-Repository zu testen, zu synchronisieren und in Ihrer Cloud Composer-Umgebung bereitzustellen.
Wenn Sie nur Daten aus anderen Diensten synchronisieren möchten, lesen Sie den Hilfeartikel 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 einen Pull-Request für den Hauptzweig Ihres Repositorys.
Cloud Build führt Unit-Tests aus, um zu prüfen, ob Ihre DAG gültig ist.
Ihre Pull-Anfrage wird 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 Produktions-Cloud Composer-Umgebung hoch.
Lernziele
Hinweis
In diesem Leitfaden wird davon ausgegangen, dass Sie mit zwei identischen Cloud Composer-Umgebungen arbeiten: einer Entwicklungs- und einer Produktionsumgebung.
In diesem Leitfaden konfigurieren Sie eine CI/CD-Pipeline nur für Ihre Entwicklungsumgebung. Achten Sie darauf, dass es sich nicht um eine Produktionsumgebung handelt.
In dieser Anleitung wird davon ausgegangen, dass Sie Ihre DAGs und ihre Tests in einem GitHub-Repository gespeichert haben.
Die Beispiel-CI/CD-Pipeline veranschaulicht den Inhalt eines Beispiel-Repositorys. DAGs und Tests werden im Verzeichnis
dags/
gespeichert. An der obersten Ebene befinden sich die Anforderungsdateien, die Datei mit den Einschränkungen und die Cloud Build-Konfigurationsdateien. Das DAG-Synchronisierungstool und die zugehörigen Anforderungen befinden sich im Verzeichnisutils
.Diese Struktur kann für Airflow 1-, Airflow 2-, Cloud Composer 1- und Cloud Composer 2-Umgebungen verwendet werden.
Job für die Vorabprüfung und Unit-Tests erstellen
Der erste Cloud Build-Job führt eine Vorabprüfung durch, bei der Unit-Tests für Ihre DAGs ausgeführt werden.
Unittests hinzufügen
Erstellen Sie Einheitstests für Ihre DAGs, falls Sie das noch nicht getan haben. 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
. Das sind die Tests, die in Ihrem Repository als Presubmit-Prüfung ausgeführt werden.
Cloud Build-YAML-Konfiguration für die Vorabprüfung erstellen
Erstellen Sie in Ihrem Repository eine YAML-Datei mit dem Namen test-dags.cloudbuild.yaml
, in der Ihr Cloud Build-Job für Vorabprüfungen konfiguriert wird. Es umfasst drei Schritte:
- Installieren Sie die Abhängigkeiten, die für Ihre DAGs erforderlich sind.
- Installieren Sie die Abhängigkeiten, die für Ihre Unit-Tests erforderlich sind.
- Führen Sie die DAG-Tests aus.
Cloud Build-Trigger für die Vorabprüfung erstellen
Folgen Sie der Anleitung unter Repositories aus GitHub erstellen, um einen GitHub App-basierten Trigger mit den folgenden Konfigurationen zu erstellen:
Name:
test-dags
Ereignis: Pull-Anfrage
Source (Quelle) – Repository: Wählen Sie Ihr Repository aus.
Quelle – Basis-Branch:
^main$
(ändern Siemain
bei Bedarf in den Namen des Basis-Branches Ihres Repositorys)Quelle – Kommentarsteuerung: nicht erforderlich
Build-Konfiguration – Cloud Build-Konfigurationsdatei:
/test-dags.cloudbuild.yaml
(Pfad zur Build-Datei)
DAG-Synchronisierungsjob erstellen und DAG-Dienstprogrammscript hinzufügen
Konfigurieren Sie als Nächstes einen Cloud Build-Job, der ein DAG-Dienstprogrammskript ausführt. Das Dienstprogramm-Script in diesem Job synchronisiert Ihre DAGs mit Ihrer Cloud Composer-Umgebung, nachdem sie mit dem Hauptzweig in Ihrem Repository zusammengeführt wurden.
DAG-Dienstprogrammskript hinzufügen
Fügen Sie Ihrem Repository das DAG-Dienstprogrammskript hinzu. Dieses Dienstprogrammskript kopiert alle DAG-Dateien im Verzeichnis dags/
Ihres Repositorys in ein temporäres Verzeichnis und ignoriert alle Python-Dateien, die keine DAG-Dateien sind. Das Script 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
, in der Ihr Cloud Build-Job für die Synchronisierung von DAGs konfiguriert wird. Sie besteht aus zwei Schritten:
Installieren Sie die Abhängigkeiten, die für das DAG-Dienstprogrammskript erforderlich sind.
Führen Sie das Dienstprogramm-Script aus, um die DAGs in Ihrem Repository mit Ihrer Cloud Composer-Umgebung zu synchronisieren.
Cloud Build-Trigger erstellen
Folgen Sie der Anleitung unter Repositories aus GitHub erstellen, um einen GitHub App-basierten Trigger mit den folgenden Konfigurationen zu erstellen:
Name:
add-dags-to-composer
Ereignis: Per Push-Befehl an Zweig übertragen
Source (Quelle) – Repository: Wählen Sie Ihr Repository aus.
Quelle – Basis-Branch:
^main$
(ändern Siemain
bei Bedarf in den Namen des Basis-Branches Ihres Repositorys)Quelle – Filter für enthaltene Dateien (glob):
dags/**
Build-Konfiguration – Cloud Build-Konfigurationsdatei:
/add-dags-to-composer.cloudbuild.yaml
(Pfad zur Build-Datei)
Fügen Sie in der erweiterten Konfiguration zwei Ersatzvariablen hinzu:
_DAGS_DIRECTORY
: das Verzeichnis, in dem sich die DAGs in Ihrem Repository befinden. Wenn Sie das Beispiel-Repository aus dieser Anleitung verwenden, lautet der Namedags/
._DAGS_BUCKET
: 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
In diesem Abschnitt führen Sie einen DAG-Entwicklungsablauf aus, bei dem Ihre neu erstellten Cloud Build-Trigger verwendet werden.
Job vor dem Einreichen ausführen
Erstellen Sie einen Pull-Request für Ihren Hauptzweig, um Ihren Build zu testen. Suchen Sie auf der Seite nach der Prüfung vor dem Senden. Klicken Sie auf Details und wählen Sie Weitere Details in Google Cloud Build anzeigen aus, um Ihre Build-Logs in der Google Cloud Console aufzurufen.
Wenn die Prüfung vor dem Einreichen fehlgeschlagen ist, lesen Sie den Hilfeartikel Fehlerbehebung bei Build-Fehlern.
Prüfen, ob Ihr DAG in Ihrer Cloud Composer-Entwicklungsumgebung funktioniert
Nachdem Ihr Pull-Request genehmigt wurde, führen Sie ihn mit Ihrem Hauptzweig zusammen. In der Google Cloud Console können Sie sich Ihre Build-Ergebnisse ansehen. Wenn Sie viele Cloud Build-Trigger haben, können Sie Ihre Builds nach dem Triggernamen add-dags-to-composer
filtern.
Nachdem der Cloud Build-Synchronisierungsjob erfolgreich war, wird der synchronisierte DAG in Ihrer Cloud Composer-Entwicklungsumgebung angezeigt. Dort können Sie prüfen, ob der DAG wie erwartet funktioniert.
DAG in die Produktionsumgebung aufnehmen
Wenn der DAG wie erwartet funktioniert, fügen Sie ihn Ihrer Produktionsumgebung manuell hinzu. Laden Sie dazu die DAG-Datei in das Verzeichnis dags/
des Buckets Ihrer Produktions-Cloud Composer-Umgebung hoch.
Wenn der DAG-Synchronisierungsjob fehlgeschlagen ist oder sich der DAG in Ihrer Cloud Composer-Entwicklungsumgebung nicht wie erwartet verhält, lesen Sie den Hilfeartikel Fehler bei der Build-Ausführung beheben.
Build-Fehler beheben
In diesem Abschnitt wird beschrieben, wie Sie häufige Szenarien für Buildfehler beheben.
Was passiert, wenn die Vorabprüfung fehlgeschlagen ist?
Klicken Sie in Ihrem Pull-Request auf Details und wählen Sie Weitere Details in Google Cloud Build anzeigen aus, um Ihre Build-Logs in der Google Cloud Console aufzurufen. Anhand dieser Protokolle können Sie das Problem mit Ihrem DAG beheben. Nachdem Sie die Probleme behoben haben, committen Sie die Korrektur und pushen Sie sie an Ihren Branch. Die Vorabprüfung wird noch einmal ausgeführt und Sie können mithilfe der Protokolle weiter iterieren.
Was passiert, wenn der DAG-Synchronisierungsauftrag fehlschlägt?
In der Google Cloud Console können Sie sich Ihre Build-Ergebnisse 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 Protokolle des Build-Jobs und beheben Sie die Fehler. Wenn Sie weitere Unterstützung beim Beheben der Fehler benötigen, nutzen Sie die Supportkanäle.
Was kann ich tun, wenn mein DAG in meiner Cloud Composer-Umgebung nicht richtig funktioniert?
Wenn Ihr DAG in Ihrer Cloud Composer-Entwicklungsumgebung nicht wie erwartet funktioniert, sollten Sie ihn nicht manuell in Ihre Cloud Composer-Produktionsumgebung hochstufen. Führen Sie stattdessen einen der folgenden Schritte aus:
- Stellen Sie den Pull-Request mit den Änderungen zurück, die Ihren DAG beschädigt haben, um ihn in den Zustand vor Ihren Änderungen wiederherzustellen. Dadurch werden auch alle anderen Dateien in diesem Pull-Request rückgängig gemacht.
- Erstellen Sie einen neuen Pull-Request, um die Änderungen an der fehlerhaften DAG manuell rückgängig zu machen.
- Erstellen Sie einen neuen Pull-Request, um die Fehler in Ihrem DAG zu beheben.
Wenn Sie einen dieser Schritte ausführen, wird eine neue Vorabprüfung ausgelöst und nach dem Zusammenführen der DAG-Synchronisierungsjob.