Publicação automatizada para CI/CD (integração contínua e entrega contínua)
APLICA-SE A: Azure Data Factory Azure Synapse Analytics
Dica
Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!
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 Azure Data Factory utiliza modelos do Azure Resource Manager (ARM) para armazenar a configuração de suas várias entidades do Azure Data Factory (pipelines, conjuntos de dados, fluxos e assim por diante).
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 Integração e entrega contínuas em 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 usa os recursos de Validar tudo e o modelo 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 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 fornecerá aos pipelines de CI/CD uma experiência de integração contínua mais verdadeira.
Observação
Certifique-se de usar o nó versão 18.x e sua versão compatível para evitar erros que podem ocorrer devido à incompatibilidade do pacote com versões mais antigas.
Fluxo de CI/CD atual
- Cada usuário faz alterações em suas ramificações privadas.
- O push para o mestre não é permitido. Os usuários devem criar uma solicitação de pull para fazer alterações.
- 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.
- 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.
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
- Cada usuário faz alterações em suas ramificações privadas.
- O push para o mestre não é permitido. Os usuários devem criar uma solicitação de pull para fazer alterações.
- A compilação do pipeline DevOps do Azure é 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.
- 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.
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 a usar o mecanismo existente, que é o branch adf_publish
, ou pode usar o 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 de recurso de 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 é publicado na versão em tempo real 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 de recurso de 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 é consumido por meio do 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:
Abra um projeto DevOps do Azure e vá para Pipelines. Selecione Novo Pipeline.
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" } }
Selecione Pipeline de início. 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.
# 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'
Insira seu código YAML. Recomendamos que você use o arquivo YAML como um ponto de partida.
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 implantar um ainda seria necessário referenciar a documentação sobre como parar e iniciar gatilhos para executar o script fornecido.
Conteúdo relacionado
Saiba mais sobre a integração e a entrega contínuas no Data Factory: integração e entrega contínuas no Azure data Factory.