Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Este guia explica como criar um pipeline de CI/CD para testar, sincronizar e implantar DAGs no ambiente do Cloud Composer usando o repositório do GitHub.
Se você quiser sincronizar apenas dados de outros serviços, consulte Transferir dados de outros serviços.
Visão geral do pipeline de CI/CD
O pipeline de CI/CD que testa, sincroniza e implanta DAGs tem as seguintes etapas:
Você faz uma alteração em um DAG e envia essa mudança para uma ramificação de desenvolvimento no repositório.
Você abre uma solicitação de envio na ramificação principal do repositório.
O Cloud Build executa testes de unidade para verificar se o DAG é válido.
Sua solicitação de envio foi aprovada e mesclada à ramificação principal do repositório.
O Cloud Build sincroniza o desenvolvimento ambiente do Cloud Composer com essas novas alterações.
Você verifica se o DAG se comporta conforme o esperado no ambiente de desenvolvimento.
Se o DAG funcionar conforme o esperado, faça upload dele para o ambiente de produção do Cloud Composer.
Objetivos
Antes de começar
Este guia pressupõe que você está trabalhando com dois ambientes idênticos do Cloud Composer: um de desenvolvimento e um de produção.
Para fins deste guia, você está configurando um pipeline de CI/CD apenas para seu ambiente de desenvolvimento. Certifique-se de que o ambiente usado não é um ambiente de produção.
Este guia pressupõe que você tenha seus DAGs e seus testes armazenados em um GitHub repositório de dados.
O exemplo de pipeline de CI/CD o conteúdo de um repositório de exemplo. DAGs e testes são armazenadas no diretório
dags/
, com arquivos de requisitos, as restrições e os arquivos de configuração do Cloud Build armazenados no nível superior. O utilitário de sincronização do DAG e os requisitos dele estão localizados noutils
.Essa estrutura pode ser usada para os ambientes do Airflow 1, Airflow 2, Cloud Composer 1 e Cloud Composer 2.
Criar um job de verificação pré-envio e testes de unidade
O primeiro job do Cloud Build executa uma verificação de pré-envio, que executa a unidade e testes para os DAGs.
Adicionar testes de unidade
Se ainda não fez isso, crie
testes de unidade para seus DAGs. Salve esses testes junto com
DAGs no seu repositório, cada um com o sufixo _test
. Por exemplo, o teste
para o DAG em example_dag.py
é example_dag_test.py
. Estes são os
testes executados como uma verificação de pré-envio no seu repositório.
Criar configuração YAML do Cloud Build para a verificação de pré-envio
No seu repositório, crie um arquivo YAML chamado test-dags.cloudbuild.yaml
que
configura o job do Cloud Build para verificações de pré-envio. Nele, há
três etapas:
- Instale as dependências necessárias para os DAGs.
- Instale as dependências necessárias para os testes de unidade.
- Execute os testes de DAG.
Criar o gatilho do Cloud Build para a verificação de pré-envio
Siga as instruções em Como criar repositórios do GitHub. guia para criar um gatilho baseado em app do GitHub com as seguintes configurações:
Nome:
test-dags
Evento: Solicitação de envio
Source: repositório: escolha seu repositório.
Origem: ramificação base:
^main$
(mudemain
para o nome da ramificação base do repositório, se necessário)Origem — Controle de comentários: não obrigatório
Configuração do build. Arquivo de configuração do Cloud Build:
/test-dags.cloudbuild.yaml
(o caminho para o arquivo de build)
Criar um job de sincronização de DAGs e adicionar o script de utilitário de DAGs
Em seguida, configure um job do Cloud Build que execute um script de utilitário de DAGs. O script de utilitário neste job sincroniza seus DAGs com o Ambiente do Cloud Composer depois de mesclados com a ramificação principal no seu repositório.
Adicionar o script de utilitário dos DAGs
Adicione o script de utilitário DAG ao repositório. Esse script de utilitário copia todos os arquivos DAG no diretório dags/
do seu repositório para um diretório temporário, ignorando todos os arquivos Python que não são DAG. O
o script usa a biblioteca de cliente do Cloud Storage para fazer upload de todos os arquivos
desse diretório temporário para o diretório dags/
na sua
bucket do ambiente do Cloud Composer.
Criar configuração YAML do Cloud Build para sincronizar DAGs
No repositório, crie um arquivo YAML chamado
add-dags-to-composer.cloudbuild.yaml
que configure o job do Cloud Build
para sincronizar DAGs. Nele, há duas etapas:
Instale as dependências necessárias para o script de utilitário dos DAGs.
Execute o script de utilitário para sincronizar os DAGs no repositório com o ambiente do Cloud Composer.
Crie o gatilho do Cloud Build
Siga as instruções em Como criar repositórios do GitHub. guia para criar um gatilho baseado em app do GitHub com as seguintes configurações:
Nome:
add-dags-to-composer
Evento: enviar por push para uma ramificação
Source: repositório: escolha seu repositório.
Origem: ramificação de base:
^main$
(mudemain
para o nome da na ramificação de base do repositório, se necessário)Origem - Filtro de arquivos incluídos (glob):
dags/**
Configuração do build. Arquivo de configuração do Cloud Build:
/add-dags-to-composer.cloudbuild.yaml
(o caminho para o arquivo de build)
Na configuração avançada, adicione duas variáveis de substituição:
_DAGS_DIRECTORY
: o diretório em que os DAGs estão localizados no repositório. Se você estiver usando o repositório de exemplo deste guia, ele serádags/
._DAGS_BUCKET
: o bucket do Cloud Storage que contém o diretóriodags/
no ambiente de desenvolvimento do Cloud Composer. Omita o prefixogs://
. Por exemplo:us-central1-example-env-1234ab56-bucket
.
Testar seu pipeline de CI/CD
Nesta seção, siga um fluxo de desenvolvimento do DAG que usa seu novo criou gatilhos do Cloud Build.
Executar um job de pré-envio
Crie uma solicitação de envio para a ramificação principal para testar o build. Localize seu verificação de pré-envio na página. Clique em Detalhes e escolha Ver mais detalhes no Google Cloud Build para conferir os logs de build no console do Google Cloud.
Se a verificação de pré-envio falhar, consulte Como resolver falhas no build.
validar se o DAG funciona no ambiente de desenvolvimento do Cloud Composer
Depois que a solicitação de envio for aprovada, mescle-a à ramificação principal. Use o
console do Google Cloud para
ver os resultados da build. Se você tiver muitos
gatilhos do Cloud Build, é possível filtrar os builds pelo nome do gatilho
add-dags-to-composer
:
Depois que o job de sincronização do Cloud Build for concluído, o DAG sincronizado vai aparecer no ambiente de desenvolvimento do Cloud Composer. Nele, você pode validar se o DAG funciona conforme o esperado.
Adicionar o DAG ao ambiente de produção
Adicione o DAG manualmente à produção depois que ele for executado conforme o esperado.
de nuvem. Para isso,
faça upload do arquivo DAG
para o diretório dags/
no bucket do ambiente de produção do Cloud Composer.
Se o job de sincronização do DAG tiver falhado ou se o DAG não estiver se comportando como esperado no seu ambiente de desenvolvimento do Cloud Composer, consulte Como resolver falhas de build.
Como resolver falhas no build
Esta seção explica como lidar com cenários comuns de falha de build.
E se a verificação de pré-envio falhar?
Na solicitação de pull, clique em Detalhes e escolha Ver mais detalhes no Google Cloud Build para conferir os registros de build no console do Google Cloud. Use esses registros para depurar o problema da DAG. Depois de resolver os problemas, confirme a correção e envie para a ramificação. A verificação de pré-envio é executada novamente, e você pode continuar iterando usando os registros como uma ferramenta de depuração.
E se meu job de sincronização de DAG falhar?
Use o console do Google Cloud para
ver os resultados do build. Se você tiver muitos
gatilhos do Cloud Build, é possível filtrar os builds pelo nome do gatilho
add-dags-to-composer
: Examine os registros do job de build e resolva os
erros. Se precisar de mais ajuda para resolver os erros, utilize
canais de suporte.
E se o DAG não funcionar corretamente no ambiente do Cloud Composer?
Se o DAG não funcionar como esperado no seu ambiente de desenvolvimento ambiente do Cloud Composer, não promova manualmente o DAG para de produção do Cloud Composer. Em vez disso, escolha uma das opções a seguir:
- Reverta a solicitação de pull com as mudanças que quebraram a DAG para restaurar o estado imediatamente anterior às mudanças. Isso também reverte todos os outros arquivos nessa solicitação de pull.
- Crie uma nova solicitação de envio para reverter manualmente as alterações no DAG corrompido.
- Crie uma nova solicitação de pull para corrigir os erros no DAG.
Seguir qualquer uma dessas etapas aciona uma nova verificação de pré-envio e, após a mesclagem, o job de sincronização do DAG.