Integração contínua e implantação contínua em dispositivos Azure IoT Edge

Aplica-se a:marca de seleção do IoT Edge 1.4 IoT Edge 1.4

Importante

A versão com suporte é a IoT Edge 1.4. Se você estiver em uma versão anterior, confira Atualizar o IoT Edge.

Você pode facilmente adotar o DevOps com seus aplicativos do Azure IoT Edge com as tarefas internas do Azure IoT Edge no Azure Pipelines. Este artigo demonstra como você pode usar o Azure Pipelines para criar, testar e implantar módulos do Azure IoT Edge usando o YAML. Como alternativa, você pode usar o editor clássico.

Diagrama de ramos de integração contínua e desenvolvimento contínuo para desenvolvimento e produção.

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:

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

Para obter mais informações de como usar o Azure Repos, confira Compartilhar seu código com o GIT do Visual Studio e do Azure Repos.

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 quando você fizer check-in de alterações na solução de amostra do IoT Edge e para publicar logs de build.

  1. 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.

    Captura de tela mostrando como abrir seu projeto DevOps.

  2. 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.

    Captura de tela mostrando como criar um novo pipeline de build usando o botão Novo pipeline.

  3. Na página Onde está seu código? , selecione Azure Repos Git YAML . Se você quiser usar o editor clássico para criar pipelines de build do projeto, consulte o guia do editor clássico.

  4. Selecione o repositório para o qual você está criando um pipeline.

    Captura de tela mostrando como selecionar o repositório para seu pipeline de build.

  5. Na página Configurar seu pipeline, selecione Pipeline inicial. Se você tiver um arquivo YAML do Azure Pipelines preexistente que deseja usar para criar esse pipeline, poderá selecionar o arquivo YAML existente do Azure Pipelines e fornecer o branch e o caminho no repositório para o arquivo.

    Selecionar o pipeline inicial ou o arquivo YAML existente do Azure Pipelines para iniciar o pipeline de build

  6. Na página Examinar o YAML do pipeline, você pode clicar no nome padrão azure-pipelines.yml para renomear o arquivo de configuração do pipeline.

    Selecione Mostrar assistente para abrir a paleta Tarefas.

    Captura de tela que mostra como selecionar Mostrar assistente para abrir a paleta Tarefas.

  7. Para adicionar uma tarefa, coloque o cursor no final do YAML ou onde desejar que as instruções da tarefa sejam adicionadas. Pesquise e selecione Azure IoT Edge. Preencha os parâmetros da tarefa da maneira a seguir. Em seguida, selecione Adicionar.

    Parâmetro Descrição
    Ação Selecione Criar imagens de módulo.
    Arquivo .template.json Forneça o caminho para 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.

    Para obter mais informações sobre essa tarefa e os respectivos parâmetros, confira Tarefa do Azure IoT Edge.

    Captura de tela da paleta Usar tarefas e como adicionar tarefas ao pipeline.

    Dica

    Depois que cada tarefa for adicionada, o editor realçará automaticamente as linhas adicionadas. Para evitar a substituição acidental, desmarque as linhas e forneça um novo espaço para a próxima tarefa antes de adicionar tarefas adicionais.

  8. Repita esse processo para adicionar mais três tarefas com os seguintes parâmetros:

    • Tarefa: Azure IoT Edge

      Parâmetro Descrição
      Ação Selecione Efetuar push de imagens de módulo.
      Tipo de registro de contêiner Use o tipo padrão: Registro de Contêiner do Azure.
      Assinatura do Azure Selecione sua assinatura.
      Registro de Contêiner do Azure Escolha o registro que você deseja usar para seu pipeline.
      Arquivo .template.json Forneça o caminho para 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.

      Para obter mais informações sobre essa tarefa e os respectivos parâmetros, confira Tarefa do Azure IoT Edge.

    • Tarefa: Copiar Arquivos

      Parâmetro Descrição
      Pasta de Origem A pasta de origem da qual copiar. A raiz do repositório é vazia. Use variáveis se os arquivos não estiverem no repositório. Exemplo: $(agent.builddirectory).
      Sumário Adicione duas linhas: deployment.template.json e **/module.json.
      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 os respectivos parâmetros, confira a tarefa Copiar arquivos.

    • Tarefa: Publicar Artefatos de Build

      Parâmetro Descrição
      Caminho para publicar Especifique a variável $(Build.ArtifactStagingDirectory). Confira Criar variáveis para saber mais sobre a descrição.
      Nome do artefato Especifique o nome padrão: drop
      Local de publicação do artefato Use a localização padrão: Azure Pipelines

      Para obter mais informações sobre essa tarefa e os respectivos parâmetros, confira a tarefa Publicar artefatos de build.

  9. Selecione Salvar na lista suspensa Salvar e executar no canto superior direito.

  10. O gatilho para integração contínua é habilitado por padrão para seu pipeline YAML. Se desejar editar essas configurações, selecione seu pipeline e selecione Editar no canto superior direito. Selecione Mais ações ao lado do botão Executar no canto superior direito e vá para Gatilhos. A Integração contínua é mostrada como habilitada sob o nome do pipeline. Se você quiser ver os detalhes do gatilho, marque a caixa Substituir o gatilho de integração contínua do YAML daqui.

Captura de tela mostrando como revisar as configurações de gatilho do pipeline no menu Gatilhos em Mais ações.

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:

  1. 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.

    Adicione um pipeline de lançamento usando o botão +Novo pipeline

  2. Quando tiver que selecionar um modelo, escolha começar com um Trabalho vazio.

    Iniciar com um trabalho vazio para o pipeline de lançamento

  3. 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.

  4. Vincule a versão aos artefatos de build publicados pelo pipeline de build. Clique em Adicionar na área de artefatos.

    Clique em Adicionar na área de artefatos da interface

  5. 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.

    Na página Adicionar um artefato, selecione Adicionar para criar o artefato

  6. 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.

    Abra os gatilhos do artefato e alterne para habilitar o gatilho de implantação contínua

  7. 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.

    Exibir as tarefas para o estágio dev na guia Tarefas

  8. No trabalho QA, selecione o sinal de adição ( + ) para adicionar duas tarefas. Pesquise e adicione Azure IoT Edge duas vezes.

  9. 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 arquivo deployment.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}"
      }
    }
    

    Configure as variáveis para o pipeline de lançamento na guia Variáveis

  10. 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.

    Adicionar tarefas do Azure IoT Edge para seu estágio dev

  11. 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.

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.

  1. No menu do painel esquerdo, selecione Pipelines e abra o pipeline de build que você criou no início deste artigo.

  2. Você pode acionar um trabalho de compilação em seu pipeline de build selecionando o botão Executar pipeline no canto superior direito.

    Acione manualmente o pipeline de build usando o botão Executar pipeline

  3. Revise as configurações do Executar pipeline. Em seguida, selecione Executar.

    Especifique as opções de execução do pipeline e selecione Executar

  4. 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.

    Revise a saída do registro do trabalho

  5. 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.

    Versão para dev

  6. Clique em estágio dev para ver os logs de liberação.

    Logs de lançamento

  7. 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