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
- Cada usuário faz alterações em suas filiais privadas.
- Não é permitido enviar push para master. Os usuários devem criar uma solicitação 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 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 ARM sempre que uma nova alteração é enviada por push para a ramificação de publicação.
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
- Cada usuário faz alterações em suas filiais privadas.
- Não é permitido enviar push para master. Os usuários devem criar uma solicitação pull para fazer alterações.
- 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.
- 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.
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:
Abra um projeto de DevOps do Azure e vá para Pipelines. Selecione Novo Pipeline.
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" } }
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.
# 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/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'
Introduza o seu código YAML. Recomendamos que você use o arquivo YAML como ponto de partida.
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.
Conteúdos relacionados
Saiba mais informações sobre integração e entrega contínuas no Data Factory: Integração e entrega contínuas no Azure Data Factory.