Partilhar via


Integração contínua e implantação contínua em dispositivos do Azure IoT Edge (editor clássico)

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

Importante

IoT Edge 1.5 LTS e IoT Edge 1.4 são versões suportadas. Se tiver uma versão anterior, consulte Atualizar IoT Edge.

O Azure Pipelines inclui uma tarefa interna do Azure IoT Edge que ajuda você a adotar o DevOps com seus aplicativos do Azure IoT Edge. Este artigo demonstra como usar os recursos de integração contínua e implantação contínua do Azure Pipelines para criar, testar e implantar aplicativos de forma rápida e eficiente em seu Azure IoT Edge usando o editor clássico. Como alternativa, você pode usar YAML.

Diagrama dos ramos de integração contínua e desenvolvimento contínuo 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

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

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

  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 que mostra como abrir seu projeto 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 que mostra como criar um novo pipeline de compilação.

  3. Na parte inferior da página Onde está seu código? , selecione Usar o editor clássico. Se você deseja usar o YAML para criar os pipelines de construção do seu projeto, consulte o guia do YAML.

    Captura de tela que mostra como usar o editor clássico.

  4. Siga as instruções para criar seu pipeline.

    1. Forneça as informações de origem para seu novo pipeline de compilação. Selecione Azure Repos Git como a origem e, em seguida, selecione o projeto, o repositório e a ramificação onde o código da solução IoT Edge está localizado. Em seguida, selecione Continuar.

      Captura de tela mostrando como selecionar a origem do pipeline.

    2. Selecione Trabalho vazio em vez de um modelo.

      Captura de tela mostrando como começar com um trabalho vazio para seu pipeline de compilação.

  5. Depois que o pipeline for criado, você será levado ao 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 auto-hospedado que você gerencia.

    Na descrição do pipeline, escolha a especificação correta do agente com base na plataforma de destino:

    • Se você gostaria de construir seus módulos na plataforma amd64 para contêineres Linux, escolha ubuntu-18.04

    • Se você gostaria de criar seus módulos na plataforma amd64 para contêineres do Windows 1809, você precisa configurar o agente auto-hospedado no Windows.

    • Se você gostaria de construir seus módulos na plataforma arm32v7 ou arm64 para contêineres Linux, você precisa configurar o agente auto-hospedado no Linux.

    Configure a especificação do agente de compilação.

  6. Seu pipeline vem pré-configurado com um trabalho chamado Agent job 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 compilação uma vez. Pesquise cada tarefa e passe o mouse sobre o nome da tarefa para ver o botão Adicionar .

    Adicionar tarefa do Azure IoT Edge.

    Quando todas as quatro tarefas são adicionadas, seu trabalho de agente se parece com o exemplo a seguir:

    Quatro tarefas no pipeline de construção.

  7. Selecione a primeira tarefa do Azure IoT Edge para editá-la. Esta tarefa cria todos os módulos da solução com a plataforma de destino que você especificar. Edite a tarefa 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 Construir imagens do módulo.
    .template.json arquivo Selecione as reticências (...) e navegue até 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.
    Variáveis de saída Forneça um nome de referência para associar ao caminho do arquivo onde o arquivo deployment.json gera, como borda.

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

    Essas configurações usam o repositório de imagens e a tag que são definidos no module.json arquivo para nomear e marcar a imagem do módulo. As imagens do módulo de compilação também ajudam a substituir as variáveis pelo valor exato definido module.json no arquivo. No Visual Studio ou Visual Studio Code, você especifica o valor real em um .env arquivo. No Azure Pipelines, você define 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: Seu valor de servidor de Logon do Registro de Contêiner do Azure. Você pode encontrar o valor do servidor de logon na página de 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 nesta guia. As imagens do módulo de compilação reconhecem apenas as variáveis que estão no ${VARIABLE} formato. Certifique-se de que utiliza este formato nos seus **/module.json ficheiros.

  8. Selecione a segunda tarefa do Azure IoT Edge para editá-la. Esta tarefa envia por push todas as imagens de módulo para o registro de contêiner selecionado.

    Parâmetro Description
    Display name O nome para exibição é atualizado automaticamente quando o campo Ação é alterado.
    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 Escolha a sua subscrição.
    Registo de Contentores do Azure Selecione o tipo de registro de contêiner que você usa para armazenar as imagens do módulo. Dependendo do tipo de registro escolhido, o formulário é alterado. Se você escolher o Registro de Contêiner do Azure, use as listas suspensas para selecionar a assinatura do Azure e o nome do seu 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.
    .template.json arquivo Selecione as reticências (...) e navegue até 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.
    Adicionar credencial do Registro ao manifesto de implantação Especifique true para adicionar a credencial do Registro para enviar imagens do docker para o manifesto de implantação.

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

    Se você tiver vários registros de contêiner para hospedar as imagens do módulo, precisará duplicar essa tarefa, selecionar registro de contêiner diferente e usar Ignorar módulo(s) nas Configurações avançadas para ignorar as imagens que não são para esse registro específico.

  9. Selecione a tarefa Copiar arquivos para editá-la. Use esta tarefa para copiar arquivos para o diretório de preparo de artefatos.

    Parâmetro Description
    Display name Usar o nome padrão ou personalizar
    Pasta de origem A pasta com os arquivos a serem copiados.
    Conteúdos 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). 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.

  10. Selecione a tarefa Publicar artefatos de compilação para editá-la. Forneça o caminho do diretório de preparo de artefato para a tarefa para que o caminho possa ser publicado para liberar o pipeline.

    Parâmetro Description
    Display name Use o nome padrão ou personalize.
    Caminho para publicação Especifique a variável $(Build.ArtifactStagingDirectory). Consulte Criar variáveis para saber mais.
    Nome do artefacto Use o nome padrão: drop
    Local de publicação do artefato Usar 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.

  11. Abra a guia Gatilhos e marque a caixa para Habilitar integração contínua. Certifique-se de que a ramificação que contém o seu código está incluída.

Captura de tela mostrando como ativar o gatilho de integração contínua.

  1. Selecione Salvar na lista suspensa Salvar fila de & .

Esse pipeline agora está configurado para ser executado automaticamente quando você envia um novo código para o repositório. A última tarefa, publicar os artefatos de pipeline, aciona um pipeline de liberação. 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 seu pipeline de compilação solta artefatos e ele mostrará 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. 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 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 será criada cada vez que uma nova compilação estiver 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.

Nota

Ainda não há suporte para implantações em camadas em tarefas do Azure IoT Edge no Azure DevOps.

No entanto, você pode usar uma tarefa da CLI do Azure no Azure DevOps para criar sua implantação como uma implantação em camadas. Para o valor Inline Script , 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

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