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

APLICA-SE A: Azure Data Factory Azure Synapse Analytics

Gorjeta

Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!

Nota

Synapse Analytics também suporta CI/CD. Consulte a documentação do Synapse Analytics CI/CD para obter mais informações.

Descrição geral

A integração contínua é a prática de testar automaticamente cada alteração feita ao código base. O mais cedo possível, a entrega contínua segue os testes que acontecem durante a integração contínua e empurra as alterações para um sistema de preparação ou produção.

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

Há dois métodos sugeridos para promover uma fábrica de dados para outro ambiente:

  • Implantação automatizada usando a integração do Data Factory com o Azure Pipelines.
  • Carregar 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 Integração e entrega contínuas no Azure Data Factory.

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

Melhorias contínuas na implantação

O recurso de publicação automatizada usa os recursos de modelo Validar tudo e Exportar ARM da experiência do usuário do Data Factory e torna a lógica consumível por meio de um pacote npm disponível publicamente @microsoft/azure-data-factory-utilities. Por esse motivo, você pode acionar 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. Esta capacidade irá proporcionar uma experiência de integração contínua mais verdadeira aos seus pipelines de CI/CD.

Nota

Certifique-se de usar a versão do nó 18.x e sua versão compatível para evitar erros que podem ocorrer devido à incompatibilidade do pacote com versões mais antigas.

Fluxo atual de CI/CD

  1. Cada usuário faz alterações em suas filiais privadas.
  2. Não é permitido enviar push para master. Os usuários devem criar uma solicitação 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 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 ARM sempre que uma nova alteração é enviada por push para a ramificação de publicação.

Diagram that shows the current CI/CD flow.

Passo manual

No fluxo atual de CI/CD, a experiência do usuário é a intermediária para criar o modelo 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 CI/CD

  1. Cada usuário faz alterações em suas filiais privadas.
  2. Não é permitido enviar push para master. Os usuários devem criar uma solicitação pull para fazer alterações.
  3. A compilação de pipeline do Azure DevOps é acionada sempre que uma nova confirmação é feita para master. Ele valida os recursos e gera um modelo ARM como um artefato se a validação for bem-sucedida.
  4. O pipeline DevOps Release é configurado para criar uma nova versão e implantar o modelo ARM sempre que uma nova compilação estiver disponível.

Diagram that shows the new CI/CD flow.

O que mudou?

  • Agora temos um processo de compilação que usa um pipeline de compilação de DevOps.
  • O pipeline de construção usa o pacote ADFUtilities NPM, que validará todos os recursos e gerará os modelos ARM. Esses modelos podem ser únicos e vinculados.
  • O pipeline de compilação é 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ão Publicar ).
  • A definição de versão do DevOps agora consumirá esse novo pipeline de compilação em vez do artefato Git.

Nota

Você pode continuar a usar o mecanismo existente, que é a adf_publish ramificação, ou você pode usar o novo fluxo. Ambos são suportados.

Descrição geral do pacote

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

  • Exportar o modelo do Resource Manager
  • Validar

Exportar o modelo do Resource Manager

Execute npm run build export <rootFolder> <factoryId> [outputFolder] para exportar o modelo ARM usando os recursos de uma determinada pasta. Este comando também executa uma verificação de validação antes de gerar o modelo ARM. Aqui está 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 do Data Factory estão localizados.
  • FactoryId é um campo obrigatório que representa o ID do recurso 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 apenas os gatilhos atualizados agora está disponível em geral e é mesclada no comando mostrado acima.

Nota

O modelo ARM gerado não é 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. Eis 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 do Data Factory estão localizados.
  • FactoryId é um campo obrigatório que representa o ID do recurso 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 é ser consumido por meio do Azure Pipeline. Em cada mesclagem em sua ramificação de colaboração, um pipeline pode ser acionado que primeiro valida todo o código e, em seguida, exporta o modelo ARM para um artefato de compilação que pode ser consumido por um pipeline de liberação. Como ele difere do processo de CI/CD atual é que você apontará seu pipeline de liberação para esse artefato em vez da ramificação existenteadf_publish.

Siga estes passos para começar:

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

    Screenshot that shows the New pipeline button.

  2. Selecione o repositório onde você deseja salvar o script YAML do pipeline. Recomendamos salvá-lo em uma pasta de compilação no mesmo repositório de seus recursos do Data Factory. Verifique se há um arquivo package.json no repositório que contenha 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 inicial. Se você carregou ou mesclou o arquivo YAML, como mostrado no exemplo a seguir, você também pode apontar diretamente para ele e editá-lo.

    Screenshot that shows Starter pipeline.

    # 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 temmplate" 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/222f1459-6ebd-4896-82ab-652d5f6883cf/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. Introduza o seu código YAML. Recomendamos que você use o arquivo YAML como ponto de partida.

  5. Salve e execute. Se você usou o YAML, ele é acionado toda vez que a ramificação principal é atualizada.

Nota

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 implantar, ainda seria necessário consultar a documentação sobre como parar e iniciar gatilhos para executar o script fornecido.

Saiba mais informações sobre integração e entrega contínuas no Data Factory: Integração e entrega contínuas no Azure Data Factory.