Partilhar via


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

Aplica-se a: Marca de verificação do IoT Edge 1.5 IoT Edge 1.5 Marca de verificação do IoT Edge 1.4 IoT Edge 1.4

Importante

IoT Edge 1.5 LTS e IoT Edge 1.4 LTS são versões suportadas. O IoT Edge 1.4 LTS termina a vida útil em 12 de novembro de 2024. Se tiver uma versão anterior, consulte Atualizar IoT Edge.

Você pode adotar facilmente 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 YAML. Como alternativa, você pode usar o editor clássico.

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

Neste artigo, você aprenderá a usar as tarefas internas do Azure IoT Edge para o Azure Pipelines para criar pipelines de compilação e liberação para sua solução IoT Edge. Cada tarefa do Azure IoT Edge adicionada ao seu pipeline implementa uma das quatro ações a seguir:

Ação Descrição
Criar imagens de módulo Pega o código da solução IoT Edge e cria as imagens de contêiner.
Enviar imagens do módulo Envia imagens de módulo para o registro de contêiner especificado.
Gerar manifesto de implantação Pega um arquivo deployment.template.json e as variáveis e, em seguida, gera o arquivo de manifesto de implantação final do IoT Edge.
Implementar em dispositivos IoT Edge Cria implantações do IoT Edge em um ou mais dispositivos IoT Edge.

A menos que especificado de outra forma, os procedimentos neste artigo não exploram todas as funcionalidades disponíveis através de parâmetros de tarefa. Para obter mais informações, consulte os seguintes recursos:

Pré-requisitos

  • Um repositório do Azure Repos. Se você não tiver um, você pode criar um novo repositório Git em seu projeto. Para este artigo, criamos um repositório chamado IoTEdgeRepo.

  • Uma solução IoT Edge comprometida e enviada para o seu repositório. Se você quiser criar uma nova solução de exemplo para testar este 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, tudo o que você precisa é da pasta de solução criada pelos modelos do IoT Edge no Visual Studio Code ou no Visual Studio. Você não precisa compilar, enviar, implantar ou depurar esse código antes de continuar. Você configurará esses processos no Azure Pipelines.

    Conheça o caminho para o arquivo deployment.template.json em sua solução, que é usado em várias etapas. Se você não estiver familiarizado com a função do modelo de implantação, consulte Saiba como implantar módulos e estabelecer rotas.

    Gorjeta

    Se você estiver criando uma nova solução, clone seu repositório localmente primeiro. Em seguida, ao criar a solução, você pode optar por criá-la diretamente na pasta do repositório. Você pode facilmente confirmar e enviar os novos arquivos de lá.

  • Um registro de contêiner onde você pode enviar imagens de módulo. Você pode usar o Registro de Contêiner do Azure ou um registro de terceiros.

  • Um hub IoT do Azure ativo com pelo menos dois dispositivos IoT Edge para testar os estágios de implantação de teste e produção separados. Você pode seguir os artigos de início rápido para criar um dispositivo IoT Edge no Linux ou Windows

Para obter mais informações sobre como usar o Azure Repos, consulte Compartilhar seu código com o Visual Studio e o Azure Repos.

Criar um pipeline de compilação para integração contínua

Nesta seção, você cria um novo pipeline de compilação. Configure o pipeline para ser executado automaticamente quando fizer check-in de quaisquer alterações na solução IoT Edge de exemplo e publicar logs de compilação.

  1. Entre em sua organização do Azure DevOps (https://dev.azure.com/{your organization}) e abra o projeto que contém seu repositório de soluções do IoT Edge.

    Captura de tela mostrando como abrir seu projeto de DevOps.

  2. No menu do painel esquerdo do seu projeto, selecione Pipelines. Selecione Criar pipeline no centro da página. Ou, se você já tiver pipelines de compilação, selecione o botão Novo pipeline no canto superior direito.

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

  3. Na página Onde está seu código? , selecione Azure Repos Git YAML. Se você deseja usar o editor clássico para criar os pipelines de construção do seu 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 compilação.

  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 do Azure Pipelines existente e fornecer a ramificação e o caminho no repositório para o arquivo.

    Selecione Pipeline inicial ou Arquivo YAML de pipelines existentes do Azure para iniciar seu pipeline de compilação

  6. Na página Revisar o YAML do pipeline, você pode selecionar o nome azure-pipelines.yml padrão 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 quiser que as instruções para a tarefa sejam adicionadas. Procure e selecione Azure IoT Edge. Preencha os parâmetros da tarefa da seguinte forma. Em seguida, selecione Adicionar.

    Parâmetro Description
    Ação Selecione Construir imagens do módulo.
    .template.json arquivo Forneça o caminho para o arquivo deployment.template.json no repositório que contém sua solução IoT Edge.
    Plataforma padrão Selecione o sistema operacional apropriado para seus módulos com base no dispositivo IoT Edge de destino.

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

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

    Gorjeta

    Depois que cada tarefa for adicionada, o editor destacará automaticamente as linhas adicionadas. Para evitar substituições acidentais, 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 Description
      Ação Selecione Enviar imagens do módulo.
      Tipo de registro de contêiner Use o tipo padrão: Azure Container Registry.
      Subscrição do Azure Selecione a sua subscrição.
      Registo de Contentores do Azure Escolha o registro que você deseja usar para o pipeline.
      .template.json arquivo Forneça o caminho para o arquivo deployment.template.json no repositório que contém sua solução IoT Edge.
      Plataforma padrão Selecione o sistema operacional apropriado para seus módulos com base no dispositivo IoT Edge de destino.

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

    • Tarefa: Copiar arquivos

      Parâmetro Description
      Pasta de origem A pasta de origem da qual copiar. Vazio é a raiz do repo. Use variáveis se os arquivos não estiverem no repositório. Exemplo: $(agent.builddirectory).
      Conteúdos Adicione duas linhas: deployment.template.json e **/module.json.
      Pasta de destino Especifique a variável $(Build.ArtifactStagingDirectory). Consulte Compilar variáveis para saber mais sobre a descrição.

      Para obter mais informações sobre essa tarefa e seus parâmetros, consulte Tarefa Copiar arquivos.

    • Tarefa: Publicar artefatos de compilação

      Parâmetro Description
      Caminho para publicação Especifique a variável $(Build.ArtifactStagingDirectory). Consulte Compilar variáveis para saber mais sobre a descrição.
      Nome do artefacto Especifique 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, consulte Publicar tarefa de artefatos de compilação.

  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 Triggers. A integração contínua mostra como ativada sob o nome do seu pipeline. Se desejar ver os detalhes do gatilho, marque a caixa Substituir o gatilho de integração contínua YAML a partir daqui .

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

Continue para a próxima seção para criar o pipeline de liberação.

Criar um pipeline de liberação para implantação contínua

Nesta seção, você cria um pipeline de liberação que é configurado para ser executado automaticamente quando o pipeline de compilação solta artefatos e mostra os logs de implantação no Azure Pipelines.

Crie um novo pipeline e adicione um novo estágio:

  1. Na guia Lançamentos, em Pipelines, escolha + Novo pipeline. Ou, se você já tiver pipelines de liberação, escolha o botão + Novo e selecione + Novo pipeline de liberação.

    Adicionar um pipeline de liberação usando o botão + Novo pipeline

  2. Quando solicitado a selecionar um modelo, escolha começar com um trabalho vazio.

    Comece com um trabalho vazio para seu pipeline de liberação

  3. Seu novo pipeline de liberação é inicializado com um estágio, chamado Estágio 1. Renomeie o Estágio 1 para desenvolver e tratá-lo 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 desenvolvimento, preparo e prod. Você pode usar nomes diferentes e criar mais com base em sua prática de DevOps. Feche a janela de detalhes do palco depois que ela for renomeada.

    Você também pode renomear seu pipeline de liberação selecionando o texto "Novo pipeline de lançamento" na parte superior.

  4. Vincule a versão aos artefatos de compilação publicados pelo pipeline de compilação. Selecione 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 de origem. Escolha o projeto e o pipeline de construção 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 a alternância para habilitar o gatilho de implantação contínua. Agora, uma nova versão é criada cada vez que uma nova compilação está disponível.

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

  7. O estágio de desenvolvimento é pré-configurado com um trabalho e zero tarefas. No menu pipeline, selecione Tarefas e, em seguida, escolha o estágio de desenvolvimento . Selecione o trabalho do Agente e altere seu Nome para exibição para QA. Você pode configurar detalhes sobre o trabalho do agente, mas a tarefa de implantação não diferencia a plataforma para que você possa usar qualquer especificação do agente no pool de agentes escolhido.

    Visualize as tarefas para seu estágio de desenvolvimento na guia Tarefas

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

  9. Selecione a primeira tarefa do Azure IoT Edge e configure-a com os seguintes valores:

    Parâmetro Description
    Display name O nome para exibição é atualizado automaticamente quando o campo Ação é alterado.
    Ação Selecione Generate deployment manifest.
    .template.json arquivo Especifique o caminho: $(System.DefaultWorkingDirectory)/Drop/drop/deployment.template.json. O caminho é publicado a partir do pipeline de compilação.
    Plataforma padrão Selecione o sistema operacional apropriado para seus módulos com base no dispositivo 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 final do IoT Edge.

    Essas configurações ajudam a substituir as URLs de imagem do deployment.template.json módulo no arquivo. O manifesto de implantação Gerar também ajuda a substituir as variáveis pelo valor exato definido no deployment.template.json arquivo. No Visual Studio/Visual Studio Code, você está especificando o valor real em um .env arquivo. No Azure Pipelines, você define o valor na guia Release Pipeline Variables . Vá para a guia Variáveis e configure o nome e o valor da seguinte maneira:

    • ACR_ADDRESS: Seu valor de servidor de Logon do Registro de Contêiner do Azure. Você pode recuperar o servidor de Logon na 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 de implantação Gerar só pode reconhecer as variáveis que estão no ${VARIABLE} sabor. Certifique-se de que está a utilizar este sabor nos seus *.template.json ficheiros.

    "registryCredentials": {
      "<ACR name>": { // Your Azure Container Registry **Registry name** value
        "username": "${ACR_USER}",
        "password": "${ACR_PASSWORD}",
        "address": "${ACR_ADDRESS}"
      }
    }
    

    Configure as variáveis para seu pipeline de liberação na guia Variáveis

  10. Selecione a segunda tarefa do Azure IoT Edge e configure-a com os seguintes valores:

    Parâmetro Description
    Display name O nome para exibição é atualizado automaticamente quando o campo Ação é alterado.
    Ação Selecione Deploy to IoT Edge devices.
    Arquivo de implantação Coloque o caminho $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Esse caminho é o arquivo de manifesto de implantação do IoT Edge.
    Subscrição do Azure Selecione a assinatura que contém seu Hub IoT.
    Nome do Hub IoT Selecione seu hub IoT.
    Escolha um ou vários dispositivos Escolha se deseja que o pipeline de liberação seja implantado em um ou vários dispositivos. Se você implantar em um único dispositivo, insira o ID do dispositivo IoT Edge. Se você 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 IoT Edge no Hub IoT. Se você quiser usar tags de dispositivo como condição, precisará atualizar as tags de dispositivos correspondentes com o dispositivo gêmeo do Hub IoT. Atualize o ID de implantação do IoT Edge e a prioridade de implantação do IoT Edge nas configurações avançadas. Para obter mais informações sobre como criar uma implantação para vários dispositivos, consulte Compreender as implantações automáticas do IoT Edge.
    ID do dispositivo ou condição de destino Dependendo da seleção anterior, especifique um ID de dispositivo ou 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 seu ID de implantação do IoT Edge.

    Se sua tarefa envolver o uso de uma imagem que reside em um Registro Confiável do Docker 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 ignorar a validação da imagem.

    Adicionar tarefas do Azure IoT Edge para seu estágio de desenvolvimento

  11. Selecione Salvar para salvar as alterações no novo pipeline de versão. Retorne à visualização de pipeline selecionando a guia Pipeline no menu.

Verifique o CI/CD do IoT Edge com os pipelines de compilação e lançamento

Para acionar um trabalho de compilação, você pode enviar por push uma confirmação para o repositório de código-fonte ou acioná-la manualmente. Nesta seção, você aciona manualmente o pipeline de CI/CD para testar se ele funciona. Em seguida, verifique se a implantação foi bem-sucedida.

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

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

    Acione manualmente seu pipeline de compilação usando o botão Executar pipeline

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

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

  4. Selecione Trabalho do agente 1 para observar o progresso da execução. Você pode revisar os logs da saída do trabalho selecionando o trabalho.

    Revisar a saída do log do trabalho

  5. Se o pipeline de compilação for concluído com êxito, ele acionará uma liberação para o estágio de desenvolvimento . A versão de desenvolvimento bem-sucedida cria a implantação do IoT Edge para dispositivos IoT Edge de destino.

    Lançamento para desenvolvimento

  6. Selecione o estágio de desenvolvimento para ver os logs de versão.

    Registos de versão

  7. Se o pipeline estiver falhando, comece examinando os logs. Você pode visualizar os logs navegando até o resumo de execução do 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 Revisar logs para diagnosticar problemas de pipeline.

Próximos passos