Integração contínua e implantação contínua em dispositivos Azure IoT Edge (editor clássico)
Aplica-se a: IoT Edge 1.4
Importante
O IoT Edge 1.5 LTS e o IoT Edge 1.4 são versões com suporte. Se você estiver em uma versão anterior, confira Atualizar o IoT Edge.
O Azure Pipelines contém uma tarefa interna do Azure IoT Edge que ajuda a adotar DevOps com aplicativos Azure IoT Edge. Este artigo demonstra como usar a integração contínua e recursos de implantação contínua de Azure Pipelines para criar, testar e implantar aplicativos de maneira rápida e eficiente para o Azure IoT Edge usando o editor clássico. Como alternativa, você pode usar YAML.
Neste artigo, você aprenderá como usar as tarefas internas do Azure IoT Edge para Azure Pipelines a fim de criar e liberar pipelines para a sua solução do IoT Edge. Cada tarefa do Azure IoT Edge adicionada ao seu pipeline implementa uma das quatro ações seguintes:
Ação | Descrição |
---|---|
Criar imagens de módulo | Pega o código da solução do IoT Edge e cria as imagens de contêiner. |
Efetuar push de imagens de módulo | Efetua o push de imagens de módulo para o registro de contêiner especificado. |
Gerar o manifesto de implantação | Pega um arquivo deployment.template.json e as variáveis e gera o arquivo de manifesto de implantação de IoT Edge. |
Implantar em dispositivos IoT Edge | Cria implantações de IoT Edge em um ou mais dispositivos IoT Edge. |
A menos que especificado de outra forma, os procedimentos neste artigo não exploram toda a funcionalidade disponível por meio de parâmetros de tarefa. Para saber mais, consulte os recursos a seguir:
- Versão da tarefa
- Avançado – se aplicável, especifique os módulos que você não deseja criar.
- Opções de controle
- Variáveis de ambiente
- Variáveis de saída
Pré-requisitos
Um repositório do Azure Repos. Se você não tem um, crie um novo repositório Git no seu projeto. Neste artigo, criamos um repositório chamado IoTEdgeRepo.
Uma solução do IoT Edge confirmada e enviada para seu repositório. Se você quiser criar uma nova solução de exemplo para testar esse artigo, siga as etapas em Desenvolver módulos do Azure IoT Edge usando o Visual Studio Code. Para este artigo, criamos uma solução em nosso repositório chamada IoTEdgeSolution, que tem o código para um módulo chamado filtermodule.
Para este artigo, você só precisa da pasta da solução criada pelos modelos do IoT Edge no Visual Studio Code ou no Visual Studio. Não é necessário compilar, efetuar push, implantar ou depurar esse código antes de continuar. Você configura esses processos no Azure Pipelines.
Saiba qual é o caminho para o arquivo deployment.template.json na solução, que é usado em várias etapas. Se você não estiver familiarizado com a função do modelo de implantação, confira Saiba como implantar módulos e estabelecer rotas.
Dica
Se você está criando uma nova solução, clone o repositório localmente primeiro. Depois, ao criar a solução, escolha criá-la diretamente na pasta do repositório. É possível confirmar e efetuar push dos novos arquivos facilmente por lá.
Um registro de contêiner em que você possa efetuar push de imagens de módulo. Você pode usar um Registro de Contêiner do Azure ou um registro de terceiros.
Um hub IoT do Azure ativo com pelo menos dois dispositivos do IoT Edge para testar as fases de implantação de teste e produção separadas. Você pode seguir os artigos de início rápido para criar um dispositivo do IoT Edge no Linux ou Windows
Criar um pipeline de build para integração contínua
Nesta seção, você criará um novo pipeline de build. Configure o pipeline para ser executado automaticamente e publica os logs de compilação sempre que faz o check-in das alterações na solução IoT Edge.
Entre em sua organização do Azure DevOps (
https://dev.azure.com/{your organization}
) e abra o projeto que contém o repositório da solução do IoT Edge.No menu do painel esquerdo em seu projeto, selecione Pipelines. Selecione Criar Pipeline no centro da página. Ou, se você já tem um pipeline de build, selecione o botão Novo pipeline na parte superior direita.
Na parte inferior da página Onde está seu código? , selecione Usar o editor clássico. Se você quiser usar o YAML para criar pipelines de build do projeto, confira o Guia do YAML.
Siga os prompts para criar o pipeline.
Forneça as informações de origem para o novo pipeline de build. Selecione Git do Azure Repos como a origem, depois selecione o projeto, o repositório e o branch em que se encontra o código da solução do IoT Edge. Em seguida, selecione Continuar.
Selecione Trabalho vazio ao invés de um modelo.
Após a criação do pipeline, você será direcionado para o editor de pipeline. Aqui, você pode alterar o nome do pipeline, o pool de agentes e a especificação do agente.
Você pode selecionar um pool hospedado pela Microsoft ou um pool de hospedagem interna que você gerencia.
Na descrição do pipeline, escolha a especificação de agentes correta com base em sua plataforma de destino:
Se quiser compilar os módulos na plataforma amd64 para contêineres do Linux, escolha ubuntu-18.04
Se quiser criar os módulos na plataforma amd64 para contêineres do Windows 1809, você precisará configurar o agente auto-hospedado no Windows.
Se quiser criar os módulos na plataforma arm32v7 ou arm64 para contêineres do Linux, você precisará configurar o agente auto-hospedado no Linux.
O pipeline vem pré-configurado com um trabalho chamado Trabalho do agente 1. Selecione o sinal de adição (+) para adicionar quatro tarefas ao trabalho: Azure IoT Edge duas vezes, Copiar Arquivos uma vez e Publicar artefatos de build uma vez. Pesquise cada tarefa e passe o mouse sobre o nome da tarefa para ver o botão Adicionar.
Quando as quatro tarefas forem adicionadas, seu trabalho do agente será semelhante ao exemplo a seguir:
Selecione a primeira tarefa Azure IoT Edge para editá-la. Essa tarefa compila todos os módulos na solução com a plataforma de destino especificada. Edite as tarefas com os valores a seguir:
Parâmetro Descrição Nome de exibição O nome de exibição é atualizado automaticamente quando o campo Ação muda. Ação Selecione Criar imagens de módulo. Arquivo .template.json selecione as reticências (...) e navegue até o arquivo deployment.template.json no repositório que contém sua solução do IoT Edge. Plataforma padrão Selecione o sistema operacional adequado para os módulos com base no dispositivo do IoT Edge de destino. Variáveis de saída Forneça um nome de referência para associar ao caminho do arquivo em que o arquivo deployment.json é gerado, como edge. Para obter mais informações sobre essa tarefa e seus parâmetros, confira a tarefa do Azure IoT Edge.
Essas configurações usam o repositório de imagens e a tag que são definidos no arquivo
module.json
para nomear e marcar a imagem do módulo. Compilar imagens de módulo também ajuda a substituir as variáveis pelo valor exato definido no arquivomodule.json
. No Visual Studio ou no Visual Studio Code, especifique o valor real em um arquivo.env
. No Azure Pipelines, defina o valor na guia Variáveis de Pipeline. Selecione a guia Variáveis no menu do editor de pipeline e configure o nome e o valor da seguinte maneira:- ACR_ADDRESS: o valor de Servidor de logon do Registro de Contêiner do Azure. É possível encontrar o valor do servidor de logon na página Visão geral do registro de contêiner no portal do Azure.
Se você tiver outras variáveis em seu projeto, poderá especificar o nome e o valor nessa guia. Compilar imagens de módulo reconhece apenas variáveis que estão no formato
${VARIABLE}
. Certifique-se de usar esse formato em seus arquivos**/module.json
.Selecione a segunda tarefa Azure IoT Edge para editá-la. Essa tarefa efetua push de todas as imagens de módulo para o registro de contêiner selecionado.
Parâmetro Descrição Nome de exibição O nome de exibição é atualizado automaticamente quando o campo Ação muda. Ação Selecione Efetuar push de imagens de módulo. Tipo de registro de contêiner Use o tipo padrão: Azure Container Registry
.Assinatura do Azure Escolha sua assinatura. Registro de Contêiner do Azure selecione o tipo de registro de contêiner usado para armazenar as imagens de módulo. Dependendo do tipo de registro escolhido, o formulário é alterado. Se você escolher Registro de Contêiner do Azure, use as listas suspensas para selecionar a assinatura do Azure e o nome do registro de contêiner. Se você escolher Registro de Contêiner Genérico, selecione Novo para criar uma conexão de serviço de registro. Arquivo .template.json selecione as reticências (...) e navegue até o arquivo deployment.template.json no repositório que contém sua solução do IoT Edge. Plataforma padrão Selecione o sistema operacional adequado para os módulos com base no dispositivo do IoT Edge de destino. Adicionar credencial do registro ao manifesto de implantação Especifique true para adicionar a credencial do registro para enviar imagens do docker ao manifesto de implantação. Para obter mais informações sobre essa tarefa e seus parâmetros, confira a tarefa do Azure IoT Edge.
Se você tiver vários registros de contêiner para hospedar suas imagens de módulo, você precisará duplicar essa tarefa, selecionar o registro de contêiner diferente e usar Ignorar módulos nas configurações Avançadas para ignorar as imagens que não são para esse registro específico.
Selecione a tarefa Copiar Arquivos para editá-la. Use essa tarefa para copiar arquivos para o diretório de teste do artefato.
Parâmetro Descrição Nome de exibição Use o nome padrão ou personalize Pasta de Origem A pasta com os arquivos a serem copiados. Sumário Adicione duas linhas: deployment.template.json
e**/module.json
. Esses dois arquivos servem como entradas para gerar o manifesto de implantação do IoT Edge.Pasta de Destino Especifique a variável $(Build.ArtifactStagingDirectory)
. Confira Criar variáveis para saber mais sobre a descrição.Para obter mais informações sobre essa tarefa e seus parâmetros, confira a tarefa de cópia de arquivos.
Selecione a tarefa Publicar artefatos de build para editá-la. Forneça o caminho do diretório de preparo do artefato para a tarefa para que o caminho possa ser publicado no pipeline de lançamento.
Parâmetro Descrição Nome de exibição Use o nome padrão ou personalize. Caminho para publicar Especifique a variável $(Build.ArtifactStagingDirectory)
. Confira Criar variáveis para saber mais.Nome do artefato Use o nome padrão: drop Local de publicação do artefato Use o local padrão: Azure Pipelines Para obter mais informações sobre essa tarefa e seus parâmetros, confira a tarefa de publicação de artefatos de compilação.
Abra a guia Gatilhos e marque a caixa Ativar integração contínua. Verifique se o branch que contém seu código está incluído.
- Selecione Salvar na lista suspensa Salvar e enfileirar.
Agora esse pipeline está configurado para ser executado automaticamente quando você efetuar push do novo código para seu repositório. A última tarefa, publicar os artefatos do pipeline, dispara um pipeline de lançamento. Acesse a próxima seção para compilar o pipeline de lançamento.
Crie um pipeline de lançamento para implantação contínua
Nesta seção, crie um pipeline de lançamento configurado para ser executado automaticamente quando o pipeline de build deixar de ter artefatos e para mostrar logs de implantação no Azure Pipelines.
Crie um novo pipeline e adicione um novo estágio:
Na guia Versões em Pipelines, selecione +Novo pipeline. Ou, se você já tiver pipelines de lançamento, escolha o botão +Novo e clique em +Novo pipeline de lançamento.
Quando tiver que selecionar um modelo, escolha começar com um Trabalho vazio.
O novo pipeline de lançamento é iniciado com um estágio, chamado Estágio 1. Renomeie o Estágio 1 como dev e trate-o como um pipeline de implantação contínua para seu ambiente de desenvolvimento. Normalmente, os pipelines de implantação contínua têm vários estágios, incluindo dev, preparoe prod. Você pode usar nomes diferentes e criar mais com base em sua prática DevOps. Feche a janela de detalhes do estágio depois de renomeá-lo.
Você também pode renomear seu pipeline de lançamento selecionando o texto "Novo pipeline de lançamento" na parte superior.
Vincule a versão aos artefatos de build publicados pelo pipeline de build. Clique em Adicionar na área de artefatos.
Na página Adicionar um artefato, selecione Construir como o tipo Origem. Em seguida, selecione o projeto e o pipeline de build que você criou. Se desejar, você pode alterar o Alias de origem para algo mais descritivo. Em seguida, selecione Adicionar.
Abra os gatilhos de artefato e selecione o botão de alternância para habilitar o gatilho de implantação contínua. Agora, uma nova versão será criada sempre que um novo build estiver disponível.
O estágio dev é pré-configurado com um trabalho e nenhuma tarefa. No menu do pipeline, selecione Tarefas, depois escolha o estágio dev. Selecione o Trabalho do agente e altere seu Nome de exibição para QA. Você pode configurar detalhes sobre o trabalho do agente, mas a tarefa de implantação é insensível à plataforma, então é possível usar qualquer especificação do Agente no pool do Agente escolhido.
No trabalho QA, selecione o sinal de adição ( + ) para adicionar duas tarefas. Pesquise e adicione Azure IoT Edge duas vezes.
Selecione a primeira tarefa do Azure IoT Edge e configure-a com os seguintes valores:
Parâmetro Descrição Nome de exibição O nome de exibição é atualizado automaticamente quando o campo Ação muda. Ação Selecione Generate deployment manifest
.arquivo .template.json Especifique o caminho: $(System.DefaultWorkingDirectory)/Drop/drop/deployment.template.json
. O caminho é publicado a partir do pipeline de build.Plataforma padrão Selecione o sistema operacional adequado para os módulos com base no dispositivo do IoT Edge de destino. Caminho de saída Coloque o caminho $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json
. Esse caminho é o arquivo de manifesto de implantação IoT Edge final.Essas configurações ajudam a substituir os URLs de imagem de módulo no arquivo
deployment.template.json
. O manifesto Gerar implantação também ajuda a substituir as variáveis pelo valor exato que você definiu no arquivodeployment.template.json
. No Visual Studio/Visual Studio Code, você especifica o valor real em um arquivo.env
. Em Azure Pipelines, defina o valor na guia Variáveis de pipeline de lançamento. Mova para a guia Variáveis e configure o nome e o valor da seguinte maneira:- ACR_ADDRESS: o valor do servidor de Login do Registro de Contêiner do Azure. Você pode recuperar o servidor de Logon da página Visão Geral do seu registro de contêiner no portal do Azure.
- ACR_PASSWORD: sua senha do Registro de Contêiner do Azure.
- ACR_USER: seu nome de usuário do Registro de Contêiner do Azure.
Se você tiver outras variáveis em seu projeto, poderá especificar o nome e o valor nesta guia. O manifesto Gerar implantação só pode reconhecer as variáveis que estão no tipo
${VARIABLE}
. Verifique se você está usando essa variante em seus arquivos*.template.json
."registryCredentials": { "<ACR name>": { // Your Azure Container Registry **Registry name** value "username": "${ACR_USER}", "password": "${ACR_PASSWORD}", "address": "${ACR_ADDRESS}" } }
Selecione a segunda tarefa do Azure IoT Edge e configure-a com os seguintes valores:
Parâmetro Descrição Nome de exibição O nome de exibição é atualizado automaticamente quando o campo Ação muda. Ação Selecione Deploy to IoT Edge devices
.Arquivo de implantação Coloque o caminho $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json
. Este caminho é o arquivo de manifesto de implantação do IoT Edge.Assinatura do Azure selecione a assinatura que contém seu Hub IoT. Nome do Hub IoT Selecione seu Hub IoT. Escolha um/vários dispositivos Escolha se deseja que o pipeline de lançamento seja implantado em um ou vários dispositivos. Se quiser implantar em um único dispositivo, insira a ID do dispositivo do IoT Edge. Se estiver implantando em vários dispositivos, especifique a condição de destino do dispositivo. A condição de destino é um filtro para corresponder a um conjunto de dispositivos do IoT Edge e IoT Hub. Se você quiser usar tags de dispositivo como a condição, você precisa atualizar suas tags de dispositivos correspondentes com o dispositivo gêmeo do Hub IoT. Atualize a ID de implantação do IoT Edge e a prioridade de implantação do IoT Edge nas configurações avançadas. Para saber mais sobre como criar uma implantação em vários dispositivos, confira Entender as implantações automáticas do IoT Edge. ID do dispositivo ou condição de destino Dependendo da seleção anterior, especifique uma ID do dispositivo ou uma condição de destino para implantar em vários dispositivos. Avançado Para a ID de implantação do IoT Edge, especifique $(System.TeamProject)-$(Release.EnvironmentName)
. Essa variável mapeia o projeto e o nome da versão com sua ID de implantação IoT Edge.Se sua tarefa envolve o uso de uma imagem que reside em um Docker Trusted Registry privado que não é visível para a nuvem pública, você pode definir a variável de ambiente SKIP_MODULE_IMAGE_VALIDATION para
true
para ignorar a validação da imagem.Selecione Salvar para salvar as alterações no novo pipeline de lançamento. Retorne para o modo de exibição do pipeline selecionando a guia Pipeline no menu.
Observação
Implantações em camadas ainda não são compatíveis com as tarefas do Azure IoT Edge no Azure DevOps.
No entanto, você pode usar uma tarefa de CLI do Azure no Azure DevOps para criar sua implantação como uma implantação em camadas. Para o valor de Script Embutido, você pode usar o comando az iot edge deployment create:
az iot edge deployment create -d {deployment_name} -n {hub_name} --content modules_content.json --layered true
Verificar o CI/CD do IoT Edge com os pipelines de lançamento e de build
Para disparar um trabalho de build, você pode efetuar push da confirmação do repositório do código-fonte ou dispará-lo manualmente. Nesta seção, dispare manualmente o pipeline de CI/CD para testar o funcionamento dele. Em seguida, verifique se a implantação é bem-sucedida.
No menu do painel esquerdo, selecione Pipelines e abra o pipeline de build que você criou no início deste artigo.
Você pode acionar um trabalho de compilação em seu pipeline de build selecionando o botão Executar pipeline no canto superior direito.
Revise as configurações do Executar pipeline. Em seguida, selecione Executar.
Selecione Trabalho do agente 1 para observar o progresso da execução. Você pode revisar os registros de saída do trabalho selecionando o trabalho.
Se o pipeline de build concluir com êxito, ele disparará uma versão para o estágio dev. A versão dev bem-sucedida cria implantação do IoT Edge para dispositivos IoT Edge.
Clique em estágio dev para ver os logs de liberação.
Se o seu pipeline estiver falhando, comece examinando os logs. Você pode exibir os logs navegando até o resumo de execução de pipeline e selecionando o trabalho e a tarefa. Se uma determinada tarefa estiver falhando, verifique os logs dessa tarefa. Para obter instruções detalhadas sobre como configurar e usar logs, consulte Examinar logs para diagnosticar problemas de pipeline.
Próximas etapas
- Entenda a implantação do IoT Edge em Noções básicas sobre implantações do IoT Edge para dispositivos únicos ou em escala
- Siga as etapas para criar, atualizar ou excluir uma implantação em Implantar e monitorar os módulos do IoT Edge em larga escala.