Airflow gerenciado (Geração 3) | Airflow gerenciado (Geração 2) | Airflow gerenciado (Geração 1 legada)
Este guia explica como criar um pipeline de CI/CD para testar, sincronizar e implantar DAGs no ambiente do Airflow gerenciado do seu repositório do GitHub.
Se você quiser apenas sincronizar 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 para testar, sincronizar e implantar DAGs tem as seguintes etapas:
Você faz uma mudança em um DAG e a envia para uma ramificação de desenvolvimento no seu repositório.
Você abre uma solicitação de envio na ramificação principal do seu repositório.
O Cloud Build executa testes de unidade para verificar se o DAG é válido.
Sua solicitação de envio é aprovada e mesclada à ramificação principal do seu repositório.
O Cloud Build sincroniza o ambiente do Airflow gerenciado de desenvolvimento com essas novas mudanças.
Você verifica se o DAG funciona conforme o esperado no ambiente de desenvolvimento
Se o DAG funcionar conforme o esperado, faça upload dele para o ambiente do Airflow gerenciado de produção.
Objetivos
- Executar uma verificação automatizada de pré-envio usando o Cloud Build. Essa verificação executa testes de unidade para um DAG.
- Sincronizar DAGs no ambiente do Serviço gerenciado para Apache Airflow de desenvolvimento com DAGs no seu repositório do GitHub.
Antes de começar
Este guia pressupõe que você está trabalhando com dois ambientes idênticos do Airflow gerenciado: um ambiente de desenvolvimento e um ambiente de produção.
Para fins deste guia, você está configurando um pipeline de CI/CD apenas para o ambiente de desenvolvimento. Verifique se o ambiente usado não é de produção.
Este guia pressupõe que você tenha seus DAGs e testes armazenados em um repositório do GitHub.
O pipeline de CI/CD de exemplo demonstra o conteúdo de um repositório de exemplo. Os DAGs e testes são armazenados no diretório
dags/, com arquivos de requisitos, o arquivo de restrições e arquivos de configuração do Cloud Build armazenados no nível superior. O utilitário de sincronização de DAGs e os requisitos dele estão localizados no diretórioutils.
Criar um job de verificação de pré-envio e testes de unidade
O primeiro job do Cloud Build executa uma verificação de pré-envio, que executa testes de unidade para seus DAGs.
Adicionar testes de unidade
Se ainda não tiver feito isso, crie testes de unidade para seus
DAGs. Salve esses testes junto com os DAGs no seu repositório, cada um com o sufixo _test. Por exemplo, o arquivo de teste do DAG em example_dag.py é example_dag_test.py. Esses 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 configure o job do Cloud Build para verificações de pré-envio. Nele, há três etapas:
- Instalar as dependências necessárias para seus DAGs.
- Instalar as dependências necessárias para seus testes de unidade.
- Executar os testes de DAG.
Criar o gatilho de build do Cloud Build para a verificação de pré-envio
Siga o guia Como criar repositórios do GitHub para criar um gatilho baseado em um app do GitHub com as seguintes configurações:
Nome:
test-dagsEvento: solicitação de envio
Origem - Repositório: escolha seu repositório
Origem - Ramificação de base:
^main$(mudemainpara o nome da ramificação de base do seu 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 nesse job sincroniza seus DAGs com o ambiente do Airflow gerenciado depois que eles são mesclados à ramificação principal no seu repositório.
Adicionar o script de utilitário de DAGs
Adicione o script de utilitário de DAGs ao seu 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 DAGs. Em seguida, 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/ no bucket do ambiente do Airflow gerenciado.
Criar configuração YAML do Cloud Build para sincronizar DAGs
No seu 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:
Instalar as dependências necessárias para o script de utilitário de DAGs.
Executar o script de utilitário para sincronizar os DAGs no seu repositório com o ambiente do Airflow gerenciado.
Criar o gatilho de build do Cloud Build
Siga o guia Como criar repositórios do GitHub para criar um gatilho baseado em um app do GitHub com as seguintes configurações:
Nome:
add-dags-to-composerEvento: enviar por push para uma ramificação
Origem - Repositório: escolha seu repositório
Origem - Ramificação de base:
^main$(mudemainpara o nome da ramificação de base do seu 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 seu 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 odags/diretório no ambiente do Airflow gerenciado de desenvolvimento. Omita o prefixogs://. Por exemplo:us-central1-example-env-1234ab56-bucket.
Testar o pipeline de CI/CD
Nesta seção, siga um fluxo de desenvolvimento de DAGs que utiliza os gatilhos do Cloud Build recém-criados.
Executar um job de pré-envio
Crie uma solicitação de envio para sua ramificação principal para testar o build. Localize a verificação de pré-envio na página. Clique em Detalhes e escolha Ver mais detalhes no Google Cloud Build para conferir os registros de build no Google Cloud console.
Se a verificação de pré-envio falhou, consulte Como resolver falhas de build.
Validar se o DAG funciona no ambiente de desenvolvimento
Depois que a solicitação de envio for aprovada, mescle-a à ramificação principal. Use o
Google Cloud console para
conferir os resultados do build. Se você tiver muitos gatilhos do Cloud Build, filtre 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 do Airflow gerenciado de desenvolvimento. Nele, você pode validar se o DAG funciona conforme o esperado.
Adicionar o DAG ao ambiente de produção
Depois que o DAG funcionar conforme o esperado, adicione-o manualmente ao ambiente de produção. Para fazer isso, faça upload do arquivo DAG
para o diretório dags/ no bucket do ambiente do Airflow gerenciado de produção.
Se o job de sincronização de DAGs falhou ou se o DAG não está se comportando conforme o esperado no seu ambiente do Airflow gerenciado de desenvolvimento, consulte Como resolver falhas de build.
Como resolver falhas de build
Esta seção explica como resolver cenários comuns de falha de build.
E se a verificação de pré-envio falhar?
Na solicitação de envio, clique em Detalhes e escolha Ver mais detalhes no Google Cloud Build para conferir os registros de build no Google Cloud console. Use esses registros para ajudar a depurar o problema com o seu DAG. Depois de resolver os problemas, faça commit da correção e envie para sua ramificação. A verificação de pré-envio é executada novamente, e você pode continuar a iterar usando os registros como uma ferramenta de depuração.
E se o job de sincronização de DAGs falhar?
Use o Google Cloud console para
conferir os resultados do build. Se você tiver muitos gatilhos do Cloud Build, filtre 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
os canais de suporte.
E se o DAG não funcionar corretamente no ambiente do Airflow gerenciado?
Se o DAG não funcionar conforme o esperado no ambiente do Airflow gerenciado de desenvolvimento, não promova o DAG manualmente para o ambiente do Airflow gerenciado de produção. Em vez disso, escolha uma das opções a seguir:
- Reverta a solicitação de pull com as mudanças que quebraram o DAG para restaurá-lo ao estado imediatamente anterior às mudanças. Isso também reverte todos os outros arquivos nessa solicitação de envio.
- Crie uma nova solicitação de envio para reverter manualmente as mudanças no DAG corrompido.
- Crie uma nova solicitação de envio 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 de DAGs.