Compartilhar via


Publicação automatizada para integração contínua e entrega contínua (CI/CD)

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Dica

Data Factory no Microsoft Fabric é a próxima geração de Azure Data Factory, com uma arquitetura mais simples, IA interna e novos recursos. Se você não estiver familiarizado com a integração de dados, comece com Fabric Data Factory. As cargas de trabalho existentes do ADF podem ser atualizadas para Fabric para acessar novos recursos em ciência de dados, análise em tempo real e relatórios.

Observação

O Synapse Analytics também dá suporte à CI/CD. Veja a documentação de CI/CD do Synapse Analytics para obter mais informações.

Visão geral

Integração contínua é a prática de testar cada alteração feita em sua base de código automaticamente. O quanto antes possível, a entrega contínua segue o teste que acontece durante a integração contínua e envia as alterações para um sistema de preparo ou produção.

No Azure Data Factory, CI/CD significa mover os pipelines do Data Factory de um ambiente, como desenvolvimento, teste e produção, para outro. O Data Factory usa modelos Azure Resource Manager (Modelos ARM) para armazenar a configuração de entidades do Data Factory, como pipelines, conjuntos de dados e fluxos de dados.

Há dois métodos sugeridos para promover um Data Factory para outro ambiente:

  • Implantação automatizada usando a integração do Data Factory com Azure Pipelines.
  • Carregando manualmente um modelo ARM usando a integração da experiência do usuário do Data Factory com o Azure Resource Manager.

Para obter mais informações, consulte A integração e entrega contínuas no Azure Data Factory.

Este artigo se concentra nas melhorias de implantação contínua e no recurso de publicação automatizada para CI/CD.

Melhorias de implantação contínua

O recurso de publicação automatizada utiliza os recursos de Validar tudo e Exportar modelo ARM da interface do usuário do Data Factory e disponibiliza a lógica por meio de um pacote npm publicamente disponível @microsoft/azure-data-factory-utilities. Por esse motivo, você pode disparar programaticamente essas ações em vez de ter que ir para a interface do usuário do Data Factory e selecionar um botão manualmente. Essa funcionalidade proporcionará aos pipelines de CI/CD uma experiência de integração contínua mais autêntica.

Observação

Certifique-se de usar a versão do Node.js 20.x e sua versão de pacotes compatíveis para evitar erros que possam ocorrer devido à incompatibilidade do pacote com versões mais antigas.

Fluxo de CI/CD atual

  1. Cada usuário faz alterações em suas ramificações privadas.
  2. O push para o mestre não é permitido. Os usuários devem criar uma solicitação de pull para fazer alterações.
  3. Os usuários devem carregar a interface do usuário do Data Factory e selecionar Publicar para implantar alterações no Data Factory e gerar os modelos do ARM na ramificação de publicação.
  4. O pipeline de lançamento do DevOps é configurado para criar uma nova versão e implantar o modelo do ARM sempre que uma nova alteração é enviada por push para o branch de publicação.

Diagrama que mostra o fluxo de CI/CD atual.

Etapa manual

No fluxo de CI/CD atual, a experiência do usuário é o intermediário para criar o modelo do ARM. Como resultado, um usuário deve ir para a interface do usuário do Data Factory e selecionar manualmente Publicar para iniciar a geração do modelo ARM e soltá-lo na ramificação de publicação.

O novo fluxo de CI/CD

  1. Cada usuário faz alterações em suas ramificações privadas.
  2. O push para o mestre não é permitido. Os usuários devem criar uma solicitação de pull para fazer alterações.
  3. A compilação do pipeline Azure DevOps é disparada sempre que uma nova confirmação é feita no mestre. Ele validará os recursos e gerará um modelo de ARM como um artefato se a validação for realizada com sucesso.
  4. O pipeline de liberação do DevOps é configurado para criar uma nova versão e implantar o modelo ARM sempre que uma nova build estiver disponível.

Diagrama que mostra o novo fluxo de CI/CD.

O que mudou?

  • Agora temos um processo de compilação que usa um pipeline de build do DevOps.
  • O pipeline de build usa o pacote ADFUtilities NPM, que validará todos os recursos e gerará os modelos de ARM. Esses modelos podem ser únicos e vinculados.
  • O pipeline de build é responsável por validar os recursos do Data Factory e gerar o modelo ARM em vez da interface do usuário do Data Factory (botãoPublicar ).
  • A definição de versão DevOps agora consumirá esse novo pipeline de Build em vez do artefato Git.

Observação

Você pode continuar usando o mecanismo existente, que é o branch adf_publish, ou pode optar pelo novo fluxo. Ambos têm suporte.

Visão geral do pacote

Dois comandos estão disponíveis no momento no pacote:

  • Exportar modelo ARM
  • Validar

Exportar modelo ARM

Execute npm run build export <rootFolder> <factoryId> [outputFolder] para exportar o modelo ARM usando os recursos de uma determinada pasta. Esse comando também executa uma verificação de validação antes de gerar o modelo ARM. Veja um exemplo usando um grupo de recursos chamado testResourceGroup:

npm run build export C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory ArmTemplateOutput
  • RootFolder é um campo obrigatório que representa onde os recursos de Data Factory estão localizados.
  • FactoryId é um campo obrigatório que representa a ID do recurso do Data Factory no formato /subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName>.
  • OutputFolder é um parâmetro opcional que especifica o caminho relativo para salvar o modelo ARM gerado.

A capacidade de parar/iniciar somente os gatilhos atualizados agora está geralmente disponível e é mesclada no comando mostrado acima.

Observação

O modelo ARM gerado não está publicado na versão ativa da fábrica. A implantação deve ser feita usando um pipeline de CI/CD.

Validar

Execute npm run build validate <rootFolder> <factoryId> para validar todos os recursos de uma determinada pasta. Veja um exemplo:

npm run build validate C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory
  • RootFolder é um campo obrigatório que representa onde os recursos de Data Factory estão localizados.
  • FactoryId é um campo obrigatório que representa a ID do recurso do Data Factory no formato /subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName>.

Criar um pipeline do Azure

Embora os pacotes npm possam ser consumidos de várias maneiras, um dos principais benefícios está sendo consumido por meio de Azure Pipeline. Em cada mesclagem em sua ramificação de colaboração, um pipeline pode ser disparado que primeiro valida todo o código e, em seguida, exporta o modelo do ARM para um artefato de build que pode ser consumido por um pipeline de lançamento. A diferença entre o processo de CI/CD atual é que você apontará seu pipeline de lançamento neste artefato em vez do branch adf_publish existente.

Siga estas etapas para começar:

  1. Abra um projeto de Azure DevOps e vá para Pipelines. Selecione Novo Pipeline.

    Captura de tela que mostra o novo botão Pipeline.

  2. Selecione o repositório no qual você deseja salvar o script YAML do pipeline. É recomendável salvá-lo em uma pasta de build no mesmo repositório de seus recursos de Data Factory. Verifique se há um arquivo package.json no repositório que contém o nome do pacote, conforme mostrado no exemplo a seguir:

    {
        "scripts":{
            "build":"node node_modules/@microsoft/azure-data-factory-utilities/lib/index"
        },
        "dependencies":{
            "@microsoft/azure-data-factory-utilities":"^1.0.0"
        }
    } 
    
  3. Selecione Pipeline de inicialização. Se você carregou ou mesclou o arquivo YAML, conforme mostrado no exemplo a seguir, você também pode apontar diretamente para ele e editá-lo.

    Captura de tela que mostra o pipeline Starter.

    # Sample YAML file to validate and export an ARM template into a build artifact
    # Requires a package.json file located in the target repository
    
    trigger:
    - main #collaboration branch
    
    pool:
      vmImage: 'ubuntu-latest'
    
    steps:
    
    # Installs Node and the npm packages saved in your package.json file in the build
    
    - task: UseNode@1
      inputs:
        version: '18.x'
      displayName: 'Install Node.js'
    
    - task: Npm@1
      inputs:
        command: 'install'
        workingDir: '$(Build.Repository.LocalPath)/<folder-of-the-package.json-file>' #replace with the package.json folder
        verbose: true
      displayName: 'Install npm package'
    
    # Validates all of the Data Factory resources in the repository. You'll get the same validation errors as when "Validate All" is selected.
    # Enter the appropriate subscription and name for the source factory. Either of the "Validate" or "Validate and Generate ARM template" options are required to perform validation. Running both is unnecessary.
    
    - task: Npm@1
      inputs:
        command: 'custom'
        workingDir: '$(Build.Repository.LocalPath)/<folder-of-the-package.json-file>' #replace with the package.json folder
        customCommand: 'run build validate $(Build.Repository.LocalPath)/<Root-folder-from-Git-configuration-settings-in-ADF> /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/<Your-ResourceGroup-Name>/providers/Microsoft.DataFactory/factories/<Your-Factory-Name>'
      displayName: 'Validate'
    
    # Validate and then generate the ARM template into the destination folder, which is the same as selecting "Publish" from the UX.
    # The ARM template generated isn't published to the live version of the factory. Deployment should be done by using a CI/CD pipeline. 
    
    - task: Npm@1
      inputs:
        command: 'custom'
        workingDir: '$(Build.Repository.LocalPath)/<folder-of-the-package.json-file>' #replace with the package.json folder
        customCommand: 'run build export $(Build.Repository.LocalPath)/<Root-folder-from-Git-configuration-settings-in-ADF> /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/<Your-ResourceGroup-Name>/providers/Microsoft.DataFactory/factories/<Your-Factory-Name> "ArmTemplate"'
    #For using preview that allows you to only stop/ start triggers that are modified, please comment out the above line and uncomment the below line. Make sure the package.json contains the build-preview command. 
     #customCommand: 'run build-preview export $(Build.Repository.LocalPath) /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/GartnerMQ2021/providers/Microsoft.DataFactory/factories/Dev-GartnerMQ2021-DataFactory "ArmTemplate"'
      displayName: 'Validate and Generate ARM template'
    
    # Publish the artifact to be used as a source for a release pipeline.
    
    - task: PublishPipelineArtifact@1
      inputs:
        targetPath: '$(Build.Repository.LocalPath)/<folder-of-the-package.json-file>/ArmTemplate' #replace with the package.json folder
        artifact: 'ArmTemplates'
        publishLocation: 'pipeline'
    
  4. Insira seu código YAML. Recomendamos que você use o arquivo YAML como um ponto de partida.

  5. Salvar e executar. Se você usou o YAML, ele será disparado toda vez que o branch principal for atualizado.

Observação

Os artefatos gerados já contêm scripts pré e pós-implantação para os gatilhos, portanto, não é necessário adicioná-los manualmente. No entanto, ao realizar a implantação, ainda seria necessário consultar a documentação sobre como parar e iniciar gatilhos para executar o script fornecido.

Saiba mais sobre integração e entrega contínuas no Data Factory: A integração e entrega contínuas no Azure Data Factory.