CI/CD-Integrationen auf dbt Projects on Snowflake

dbt-Projektobjekte unterstützen die Verwendung von Snowflake CLI-Befehlen für die Integration von Bereitstellung und Ausführung in Ihre CI/CD-Workflows.

Unter diesem Thema wird erläutert, wie Sie mit GitHub-Aktionen Ihr dbt Projects on Snowflake immer dann automatisch testen und bereitstellen, wenn Sie eine Pull-Anfrage öffnen oder eine Zusammenführung mit dem Hauptobjekt vornehmen.

Continuous Integration (CI) führt Ihr dbt-Projekt bei jeder Pull-Anforderung gegen ein dev-Schema aus. Mit anderen Worten: Wenn jemand eine Pull-Anforderung in Ihrem Code-Repository öffnet oder aktualisiert, führen Sie automatisch Tests und Builds mit dem neuen Code durch. Dies hilft, Probleme frühzeitig vor dem Zusammenführen zu erkennen.

Continuous Deployment (CD) hält ein dbt-Projektobjekt in Snowflake auf dem neuesten Stand, nachdem Ihre Commits zusammengeführt wurden. Mit anderen Worten: Jedes Mal, wenn Code in einem Zweig zusammengeführt wird, stellen Sie den aktualisierten Code automatisch in der Produktion bereit. So bleibt Ihre Produktionsumgebung auf dem neuesten Stand, zuverlässig und reproduzierbar.

CI/CD hilft bei der Vermeidung von manuellen, fehleranfälligen Bereitstellungen, stellt sicher, dass Änderungen vor der Zusammenführung validiert werden, und ermöglicht konsistente, wiederholbare Bereitstellungen und Versionierungen.

Gründe für den Einsatz von CI/CD für ein dbt-Projekt

dbt-Projekte definieren alle Ihre Datentransformationen in Code, sodass häufige Aktualisierungen leicht zu Fehlern führen können. CI dient zur Früherkennung dieser Probleme. Alle Änderungen werden vor der Zusammenführung in einer separaten Entwicklungsumgebung getestet.

Nachdem die Änderungen zusammengeführt wurden, aktualisiert CD automatisch das offizielle dbt-Projektobjekt in Ihrer Snowflake-Produktionsumgebung. Dadurch werden manuelle Schritte beseitigt, Risiken reduziert, die Versionskontrolle durchgesetzt und ein zuverlässiger, kollaborativer Workflow unterstützt.

Allgemeine Voraussetzungen für die Verwendung von CI/CD bei dbt-Projekten

  • Ein dbt-Projekt, das in einem Git-Repository (z. B. GitHub) gespeichert ist.

  • Ein Snowflake-Konto und ein Benutzer mit Berechtigungen wie unter Zugriffssteuerung für dbt-Projekte in Snowflake beschrieben.

  • Berechtigungen zum Erstellen und Bearbeiten der folgenden Objekte oder Zugang zu einem Administrator, der diese in Ihrem Namen erstellen kann:

    • Umgebungsvariablen und Geheimnisse des GitHub-Repositorys, die Werte von Snowflake-Konten, Datenbanken und Schemawerte sowie Workflow-Dateien (z. B. .github/workflows/…) enthalten, die CI- und CD-Jobs definieren.

    • Snowflake-Servicekonto für die Kommunikation mit GitHub

  • Eine Trennung zwischen der Entwicklungsumgebung (für CI) und der Produktionsumgebung (für CD) in Snowflake (z. B. separate Datenbanken oder Schemas für jede Umgebung).

  • Eine Möglichkeit, Ihrem CI/CD-Runner (z. B. GitHub-Aktionen) die Herstellung einer Verbindung zu Snowflake zu gewähren, z. B. OIDC oder PAT. Weitere Informationen dazu finden Sie unter Konfigurieren Sie die Aktion sicher in Ihrem CI/CD-Workflow.

  • In Ihrem Code-Repository eine profiles.yml-Datei, die so konfiguriert ist, dass sie auf dev- und prod-Ziele verweist (z. B. databases/schemas, warehouse).

  • Eine Netzwerkrichtlinie, die den eingehenden Zugriff von Ihrem Git-Anbieter in Snowflake erlaubt.

Übersicht zum CI-/CD-Workflow

Die folgenden Schritte beschreiben den typischen Workflow mit CI/CD. Ein ausführliches Tutorial finden Sie unter Tutorial: Einrichten von CI/CD-Integrationen auf dbt Projects on Snowflake.

  1. Entwickler schreibt oder ändert dbt-Code (Modelle, Tests usw.) in einem Zweig.

  2. Entwickler öffnet eine Pull-Anfrage.

  3. CI wird aktiviert: Eine Testinstanz des dbt-Projektobjekts wird in der Snowflake-Entwicklungsumgebung bereitgestellt, in der die Befehle dbt run und dbt test ausgeführt werden.

    • Wenn ein Vorgang fehlschlägt, schlägt die Pull-Anforderung fehl. Der Entwickler muss korrigieren und aktualisieren und dann erneut ausführen.

    • Wenn alle Vorgang erfolgreich sind, kann die Pull-Anfrage zusammengeführt werden.

  4. Die Pull-Anfrage wird mit der Haupt- zusammengeführt.

  5. CD wird aktiviert: Das dbt-Produktionsobjekt in Snowflake wird anhand des neuesten Codes aktualisiert.

  6. Optional kann eine automatische Planung (z. B. über Snowflake-Aufgaben) bereitgestellt werden, sodass Datenpipelines nach einem Zeitplan ohne manuelles Eingreifen ausgeführt werden.