Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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 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 a integração contínua e os recursos de implantação contínua do Azure Pipelines para criar, testar e implantar aplicativos de forma rápida e eficiente no 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 |
|---|---|
| Construir imagens do módulo | Pega o código da solução do IoT Edge e cria as imagens de contêiner. |
| Enviar imagens do módulo | Envia as imagens de módulos para o registro de contêiner especificado. |
| Gerar o manifesto de implantação | Pega um arquivo deployment.template.json e as variáveis, e então gera o arquivo de manifesto final 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 obter mais informações, consulte os seguintes recursos:
- Versão de 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, enviar, desplegar 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 onde você pode enviar imagens de módulos. 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 compilação para integração contínua
Nesta seção, você criará um novo pipeline de build. Configure o pipeline para ser executado automaticamente e publique logs de compilação sempre que efetuar check-in de alterações na solução do 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 os pipelines de build do projeto, consulte o guia yaml.
Siga os prompts para criar seu pipeline.
Forneça as informações de origem para sua nova pipeline de build. Selecione o Git do Azure Repos como a origem e selecione o projeto, o repositório e o branch em que o código da solução do IoT Edge está localizado. Em seguida, selecione Continuar.
Selecione Trabalho vazio em vez de um modelo.
Depois que o pipeline for criado, você será levado 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 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ê quiser criar seus módulos na plataforma amd64 para contêineres do Linux, escolha ubuntu-18.04
Se você quiser criar seus módulos na plataforma amd64 para contêineres do Windows 1809, precisará configurar o agente auto-hospedado no Windows.
Se você quiser criar seus módulos na plataforma arm32v7 ou arm64 para contêineres do Linux, será necessário configurar o agente auto-hospedado no Linux.
Seu 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 todas as quatro tarefas são adicionadas, o trabalho do Agente se parece com o seguinte exemplo:
Selecione a primeira tarefa do Azure IoT Edge para editá-la. Essa tarefa cria todos os módulos na solução com a plataforma de destino especificada. Edite a tarefa 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 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 onde o seu arquivo deployment.json é gerado, como edge. Para obter mais informações sobre essa tarefa e os respectivos parâmetros, confira Tarefa do Azure IoT Edge.
Essas configurações usam o repositório de imagem e a marca que são definidas no
module.jsonarquivo para nomear e marcar a imagem do módulo. Criar imagens de módulo também ajuda a substituir as variáveis pelo valor exato definido nomodule.jsonarquivo. No Visual Studio ou no Visual Studio Code, especifique o valor real em um.envarquivo. 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: o valor do servidor de login 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 nessa guia. Criar imagens de módulo reconhece apenas as variáveis que estão em
${VARIABLE}formato. Certifique-se de usar esse formato em seus**/module.jsonarquivos.Selecione a segunda tarefa do Azure IoT Edge para editá-la. Essa tarefa envia todas as imagens do 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 Enviar imagens do 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 que você usa para armazenar as imagens do módulo. Dependendo de qual tipo de registro você escolher, o formulário será alterado. Se você escolher o Registro de Contêiner do Azure, use os menus suspensos 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 do 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 para o manifesto de implantação. Para obter mais informações sobre essa tarefa e os respectivos parâmetros, confira Tarefa do Azure IoT Edge.
Se você tiver vários registros de contêiner para hospedar suas imagens de módulo, precisará duplicar essa tarefa, selecionar um registro de contêiner diferente e usar módulos bypass 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 preparo do artefato.
Parâmetro Descrição Nome de exibição 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.jsone**/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 os respectivos parâmetros, confira a tarefa Copiar arquivos.
Selecione a tarefa Publicar Artefatos de Build para editá-la. Forneça o caminho do diretório de estágio de artefatos para a tarefa para que o caminho possa ser publicado no pipeline de liberação.
Parâmetro Descrição Nome de exibição Use o nome padrão ou personalize. Caminho para publicar Especifique a variável $(Build.ArtifactStagingDirectory). Consulte variáveis de build para saber mais.Nome do artefato 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 esta tarefa e seus parâmetros, consulte a tarefa Publicar artefatos de build.
Abra a aba Gatilhos e marque a caixa para Habilitar a integração contínua. Verifique se o ramo que contém o seu código está incluído.
- Selecione Salvar na lista suspensa Salvar e enfileirar.
Esse pipeline agora está configurado para ser executado automaticamente quando você envia um novo código por push para o repositório. A última tarefa, publicando os artefatos de pipeline, dispara um pipeline de lançamento. Acesse a próxima seção para compilar o pipeline de lançamento.
Crie um pipeline de liberação para implantação contínua
Nesta seção, você criará um pipeline de lançamento configurado para ser executado automaticamente quando o pipeline de build gerar artefatos, e ele 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, selecione o botão + Novo e escolha + 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 da etapa uma vez que seja renomeada.
Você também pode renomear seu pipeline de implantação selecionando o texto "Novo pipeline de implantação" 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, em Tipo de Origem, selecione Build. 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 alternador 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 de controle de qualidade, selecione o ícone de adicionar (+) para incluir 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 implementação.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 Insira o caminho $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Esse caminho é o arquivo final de manifesto de implantação do IoT Edge.Essas configurações ajudam a alterar os URLs das imagens do módulo no arquivo
deployment.template.json. O manifesto Gerar manifesto de 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 Release. Mova para a guia Variáveis e configure o nome e o valor como segue.- ACR_ADDRESS: 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 Gerar manifesto de implantação só pode reconhecer as variáveis que estão no perfil
${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 liberação seja implantado em um único dispositivo ou em 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 IoT Edge dentro do 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 nome do projeto e da versão com a ID de implantação do 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
truepara 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
As implantações em camadas ainda não têm suporte nas 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 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
Verifique o CI/CD do IoT Edge com os pipelines de build e lançamento
Para acionar um processo de build, você pode enviar um commit para o repositório de código-fonte ou então acioná-lo manualmente. Nesta seção, você ativa manualmente o pipeline de CI/CD para testar se ele está funcionando. 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 Tarefa 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 inicia uma liberação para a fase dev. A versão dev bem-sucedida cria implantação do IoT Edge para dispositivos IoT Edge.
Clique no estágio de desenvolvimento para ver os logs de versão.
Se o seu pipeline estiver falhando, comece verificando os registros. 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 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.