Integrações CI/CD nos dbt Projects on Snowflake¶
Suporte a objetos de projeto dbt usando comandos da Snowflake CLI para integrar a implantação e execução em seus fluxos de trabalho de CI/CD.
Este tópico explica como usar o GitHub Actions para testar e implantar automaticamente seus dbt Projects on Snowflake sempre que você abrir uma solicitação de pull ou mesclar no principal.
A integração contínua (Continuous Integration, CI) executa seu projeto dbt em um esquema de desenvolvimento em cada solicitação de pull. Em outras palavras, sempre que alguém abre ou atualiza uma solicitação de pull em seu repositório de código, você executa automaticamente testes e compilações no novo código. Isso ajuda a detectar os problemas antes da fusão.
A implantação contínua (Continuous Deployment, CD) mantém um objeto de projeto dbt no Snowflake atualizado depois que seus commits são mesclados. Em outras palavras, sempre que o código é mesclado em uma ramificação, você automaticamente implanta o código atualizado na produção. Isso garante que seu ambiente de produção permaneça atualizado, confiável e reproduzível.
A CI/CD ajuda a evitar implantações manuais e propensas a erros, garante que as alterações sejam validadas antes de serem mescladas e permite implantações e controle de versão consistentes e repetíveis.
Por que usar CI/CD em um projeto dbt¶
Os projetos dbt definem todas as suas transformações de dados no código, portanto, atualizações frequentes podem facilmente introduzir erros. A CI detecta esses problemas antecipadamente, testando cada alteração em um ambiente de desenvolvimento separado antes da mesclagem.
Após a mesclagem das alterações, a CD atualiza automaticamente o objeto de projeto dbt oficial em seu ambiente de produção Snowflake. Isso elimina etapas manuais, reduz riscos, mantém tudo controlado por versão e oferece suporte a um fluxo de trabalho confiável e colaborativo.
Pré-requisitos de alto nível para o uso da CI/CD em projetos dbt¶
Um projeto dbt armazenado em um repositório Git (por exemplo, GitHub).
Uma conta e um usuário Snowflake com privilégios, conforme descrito em Controle de acesso para projetos de dbt no Snowflake.
Privilégios para criar e editar os seguintes objetos ou acesso a um administrador com permissão para criar cada um deles em seu nome:
Variáveis de ambiente e segredos do repositórioGitHub para manter os valores de esquema, banco de dados e conta Snowflake e os arquivos de fluxo de trabalho (por exemplo,
.github/workflows/…) que definem os trabalhos de CI e CD.Conta de serviço Snowflake para comunicação com GitHub.
Uma separação entre o ambiente de desenvolvimento (para CI) e o ambiente de produção (para CD) no Snowflake (por exemplo, bancos de dados ou esquemas separados para cada ambiente).
Uma maneira de permitir que o executor de CI/CD (por exemplo, GitHub Actions) se conecte ao Snowflake, como OIDC ou PAT. Para obter mais informações, consulte Configurar com segurança a ação em seu fluxo de trabalho de CI/CD.
Em seu repositório de código, um arquivo
profiles.ymlconfigurado para apontar para destinos de desenvolvimento e produção (por exemplo, bancos de dados/esquemas, warehouse).Uma política de redes que permite o acesso de entrada do seu provedor Git ao Snowflake.
Visão geral do fluxo de trabalho de CI/CD¶
As etapas a seguir descrevem o fluxo de trabalho comum com CI/CD. Para obter um tutorial detalhado, consulte Tutorial: Configurando as integrações de CI/CD em dbt Projects on Snowflake.
O desenvolvedor escreve ou modifica o código dbt (modelos, testes etc.) em uma ramificação.
O desenvolvedor abre uma solicitação de pull.
A CI entra em ação: uma instância de teste do objeto de projeto dbt é implantada no ambiente de desenvolvimento do Snowflake, que executa os comandos
dbt runedbt test.Se uma operação falhar, a solicitação de pull falhará. O desenvolvedor deve corrigi-la e atualizá-la e, em seguida, executá-la novamente.
Se todas as operações forem aprovadas, a solicitação de pull será elegível para mesclagem.
A solicitação de pull é mesclada no principal.
A CD entra em ação: o objeto de projeto dbt de produção no Snowflake é atualizado para refletir o código mais recente.
Opcionalmente, o agendamento automatizado (por exemplo, por meio de tarefas Snowflake) pode ser implementado para que os pipelines de dados sejam executados de acordo com um cronograma sem intervenção manual.