Intégrations CI/CD pour les dbt Projects on Snowflake

Les objets de projet dbt prennent en charge l’utilisation des commandes Snowflake CLI pour intégrer le déploiement et l’exécution à vos workflows deCI/de CD.

Cette rubrique explique comment utiliser GitHub Actions pour tester et déployer automatiquement vos dbt Projects on Snowflake chaque fois que vous ouvrez une requête d’extraction ou que vous effectuez une fusion vers le dépôt principal.

L’intégration continue (CI) exécute votre projet dbt par rapport à un schéma de développement à chaque requête d’extraction. En d’autres termes, chaque fois que quelqu’un ouvre ou met à jour une requête d’extraction dans votre dépôt de code, vous exécutez automatiquement des tests et des versions sur le nouveau code. Cela permet de détecter rapidement les problèmes avant la fusion.

Le déploiement continu (CD) maintient à jour un objet de projet dbt dans Snowflake après la fusion de vos validations. En d’autres termes, chaque fois que du code est fusionné dans une branche, vous déployez automatiquement le code mis à jour en production. Cela garantit que votre environnement de production reste à jour, de manière fiable et reproductible.

La CI et le CD permettent d’éviter les déploiements manuels sujets aux erreurs, garantissent que les modifications sont validées avant d’être fusionnées, et permettent des déploiements et un versionnage cohérents et reproductibles.

Pourquoi utiliser laCI/le CD pour un projet dbt ?

Les projets dbt définissent toutes vos transformations de données dans le code, de sorte que des mises à jour fréquentes peuvent facilement introduire des erreurs. La CI détecte ces problèmes de manière précoce en testant chaque modification dans un environnement de développement distinct avant la fusion.

Une fois les modifications fusionnées, le CD met automatiquement à jour l’objet de projet dbt officiel dans votre environnement de production Snowflake. Cela permet de supprimer les étapes manuelles, de réduire les risques, de contrôler toutes les versions et de prendre en charge un flux de travail fiable et collaboratif.

Conditions préalables de haut niveau pour l’utilisation de la CI/du CD sur des projets dbt

  • Un projet dbt stocké dans un dépôt Git (par exemple, GitHub).

  • Un compte Snowflake et un utilisateur avec les privilèges décrits dans. Contrôle d’accès pour les projets dbt sur Snowflake.

  • Privilèges pour créer et modifier les objets suivants ou accès à un administrateur qui peut créer chacun d’entre eux en votre nom :

    • Les variables d’environnement et les secrets du dépôt GitHub pour contenir les valeurs de compte, de base de données et de schéma Snowflake, ainsi que les fichiers de workflow (par exemple, .github/workflows/…) qui définissent les tâches de CI et de CD.

    • Un compte de service Snowflake pour communiquer avec GitHub.

  • Une séparation entre l’environnement de développement (pour la CI) et l’environnement de production (pour le CD) dans Snowflake (par exemple, des bases de données ou des schémas distincts pour chaque environnement).

  • Une méthode permettant à votre exécuteur de CI/de CD (par exemple, GitHub Actions) de se connecter à Snowflake, comme OIDC ou PAT. Pour plus d’informations, voir Configurez l’action en toute sécurité dans votre flux de travail CI/CD.

  • Dans votre dépôt de code, un fichier profiles.yml configuré pour pointer vers des cibles de développement et de production (par exemple, bases de données/schémas, entrepôt).

  • Une politique réseau qui permet l’accès entrant de votre fournisseur Git à Snowflake.

Vue d’ensemble des workflows de CI/de CD

Les étapes suivantes décrivent un workflow typique avec la CI/le CD. Pour accéder à un tutoriel détaillé, consultez Tutoriel : Configuration des intégrations CI/CD sur dbt Projects on Snowflake.

  1. Le développeur écrit ou modifie du code dbt (modèles, tests, etc.) dans une branche.

  2. Le développeur ouvre une requête d’extraction.

  3. La CI démarre : une instance de test de l’objet de projet dbt est déployée dans l’environnement de développement Snowflake, qui exécute les commandes dbt run et dbt test.

    • Si une opération échoue, la requête d’extraction échoue. Le développeur doit la corriger et la mettre à jour, puis la réexécuter.

    • Si toutes les opérations réussissent, la requête d’extraction est éligible à la fusion.

  4. La requête d’extraction est fusionnée avec le dépôt principal.

  5. Le CD démarre : l’objet de projet dbt de production dans Snowflake est mis à jour pour refléter le code le plus récent.

  6. En option, une planification automatisée (par exemple, via des tâches Snowflake) peut être déployée, de sorte que les pipelines de données s’exécutent selon une planification, sans intervention manuelle.