Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
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, finden Sie weitere Informationen unter Daten aus anderen Diensten übertragen.
CI/CD-Pipeline – Übersicht
![Architekturdiagramm, das die Schritte des Ablaufs zeigt. Das Vorabsenden und die PR-Überprüfung befinden sich im GitHub-Bereich, die DAG-Synchronisierung und die manuelle DAG-Überprüfung im Bereich „Google Cloud“.](https://cloud.google.com/static/composer/docs/images/dag-cicd-integration-architecture.png?hl=de)
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 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 die Cloud Composer-Produktionsumgebung hoch.
Lernziele
Hinweise
In diesem Leitfaden wird davon ausgegangen, dass Sie mit zwei identischen Cloud Composer-Umgebungen arbeiten: einer Entwicklungsumgebung und einer Produktionsumgebung.
Für die Zwecke dieser Anleitung konfigurieren Sie eine CI/CD-Pipeline nur für Ihre Entwicklungsumgebung. Achten Sie darauf, dass die verwendete Umgebung keine Produktionsumgebung ist.
In diesem Leitfaden wird davon ausgegangen, dass Sie Ihre DAGs und ihre Tests in einem GitHub-Repository gespeichert haben.
Die Beispiel-CI/CD-Pipeline zeigt den Inhalt eines Beispiel-Repositorys. DAGs und Tests werden im Verzeichnis
dags/
gespeichert, wobei Anforderungsdateien, die Datei mit den Einschränkungen und Cloud Build-Konfigurationsdateien auf oberster Ebene gespeichert sind. Das Dienstprogramm für die DAG-Synchronisierung und seine Anforderungen befinden sich im Verzeichnisutils
.
Job zur Vorabprüfung und Einheitentests erstellen
Der erste Cloud Build-Job führt eine Prüfung vor dem Senden aus, die Einheitentests für Ihre DAGs ausführt.
Einheitentests hinzufügen
Erstellen Sie gegebenenfalls Einheitentests für Ihre DAGs. 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 Vorabprüfung erstellen
Erstellen Sie in Ihrem Repository eine YAML-Datei mit dem Namen test-dags.cloudbuild.yaml
, die den Cloud Build-Job für Prüfungen vor dem Senden konfiguriert. Er umfasst drei Schritte:
- Installieren Sie die Abhängigkeiten, die für Ihre DAGs erforderlich sind.
- Installieren Sie die Abhängigkeiten, die für Ihre Einheitentests erforderlich sind.
- Führen Sie die DAG-Tests aus.
Cloud Build-Trigger für die Vorabprüfung erstellen
Folgen Sie dem Leitfaden Repositories aus 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.
Source (Quelle): Basis-Branch:
^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 Dienstprogrammskript für DAGs hinzufügen
Konfigurieren Sie als Nächstes einen Cloud Build-Job, mit dem ein DAGs-Dienstprogrammskript ausgeführt wird. Das Dienstprogrammskript in diesem Job synchronisiert Ihre DAGs mit Ihrer Cloud Composer-Umgebung, nachdem sie mit dem Hauptzweig Ihres Repositorys zusammengeführt wurden.
DAGs-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 dabei 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.
YAML-Konfiguration für Cloud Build zum Synchronisieren von DAGs erstellen
Erstellen Sie in Ihrem Repository eine YAML-Datei mit dem Namen add-dags-to-composer.cloudbuild.yaml
, die den Cloud Build-Job für die Synchronisierung von DAGs konfiguriert. Dieser enthält zwei Schritte:
Installieren Sie die Abhängigkeiten, die vom Skript des Dienstprogramms für DAGs benötigt werden.
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 dem Leitfaden Repositories aus 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.
Source (Quelle): Basis-Branch:
^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)
In der erweiterten Konfiguration fügen Sie zwei Substitutionsvariablen hinzu:
_DAGS_DIRECTORY
ist das Verzeichnis, in dem sich „dags“ in Ihrem Repository befindet. Wenn Sie das Beispiel-Repository aus dieser Anleitung verwenden, ist esdags/
._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
Folgen Sie in diesem Abschnitt dem DAG-Entwicklungsablauf, der Ihre neu erstellten Cloud Build-Trigger verwendet.
Vorabsendejob ausführen
Erstellen Sie eine Pull-Anfrage an Ihren Hauptzweig, um den Build zu testen. Suchen Sie auf der Seite nach der Vorabprüfung. Klicken Sie auf Details und wählen Sie Weitere Details zu Google Cloud Build ansehen aus, um Ihre Build-Logs in der Google Cloud Console anzusehen.
![Screenshot einer GitHub-Prüfung namens test-dags mit einem roten Pfeil, der auf den Projektnamen in Klammern zeigt](https://cloud.google.com/static/composer/docs/images/dag-cicd-integration-github-check.png?hl=de)
Wenn die Prüfung vor dem Senden fehlgeschlagen ist, lesen Sie den Abschnitt Build-Fehler beheben.
Prüfen, ob der DAG in der Entwicklungsumgebung von Cloud Composer funktioniert
Nachdem Ihre Pull-Anfrage genehmigt wurde, führen Sie sie mit Ihrem Hauptzweig zusammen. Verwenden Sie die Google Cloud Console, um Ihre Build-Ergebnisse anzusehen. 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 der Cloud Composer-Entwicklungsumgebung angezeigt. Dort können Sie prüfen, ob der DAG wie erwartet funktioniert.
DAG der Produktionsumgebung hinzufügen
Wenn der DAG wie erwartet funktioniert, fügen Sie ihn manuell Ihrer Produktionsumgebung hinzu. Dazu müssen Sie die DAG-Datei in das Verzeichnis dags/
im Bucket Ihrer Cloud Composer-Produktionsumgebung hochladen.
Wenn der DAG-Synchronisierungsjob fehlgeschlagen ist oder der DAG in Ihrer Cloud Composer-Entwicklungsumgebung nicht wie erwartet funktioniert, lesen Sie Build-Fehler beheben.
Build-Fehler beheben
In diesem Abschnitt wird erläutert, wie Sie häufige Build-Fehlerszenarien beheben.
Was passiert, wenn meine Vorabprüfung fehlgeschlagen ist?
Klicken Sie in der Pull-Anfrage auf Details und wählen Sie Weitere Details zu Google Cloud Build ansehen aus, um Ihre Build-Logs in der Google Cloud Console anzusehen. Verwenden Sie diese Logs, um das Problem mit Ihrem DAG zu beheben. Sobald Sie die Probleme behoben haben, übernehmen Sie die Korrektur und senden Sie die Änderungen an Ihren Zweig. Die Vorabprüfung wird noch einmal ausgeführt und Sie können mit den Logs als Debugging-Tool weiter iterieren.
Was passiert, wenn mein DAG-Synchronisierungsjob fehlgeschlagen ist?
Verwenden Sie die Google Cloud Console, um Ihre Build-Ergebnisse anzusehen. Wenn Sie viele Cloud Build-Trigger haben, können Sie Ihre Builds nach dem Triggernamen add-dags-to-composer
filtern. Sehen Sie sich die Logs des Build-Jobs an und beheben Sie die Fehler. Wenn Sie zusätzliche Hilfe beim Beheben der Fehler benötigen, nutzen Sie die Supportkanäle.
Was passiert, 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 zur Cloud Composer-Produktionsumgebung hoch. Führen Sie stattdessen einen der folgenden Schritte aus:
- Setzen Sie die Pull-Anfrage mit den Änderungen zurück, die den DAG unterbrochen haben, um ihn in den Status unmittelbar vor Ihren Änderungen wiederherzustellen. Dadurch werden auch alle anderen Dateien in dieser Pull-Anfrage zurückgesetzt.
- Erstellen Sie eine neue Pull-Anfrage, um Änderungen am fehlerhaften DAG manuell zurückzusetzen.
- Erstellen Sie eine neue Pull-Anfrage, um die Fehler im DAG zu beheben.
Wenn Sie einen dieser Schritte ausführen, wird eine neue Vorabprüfung und nach der Zusammenführung der DAG-Synchronisierungsjob ausgelöst.