Continue integratie en continue implementatie op Azure IoT Edge-apparaten (klassieke editor)
Van toepassing op: IoT Edge 1.4
Belangrijk
IoT Edge 1.5 LTS en IoT Edge 1.4 zijn ondersteunde releases. Raadpleeg IoT Edge bijwerken als u een eerdere versie hebt.
Azure Pipelines bevat een ingebouwde Azure IoT Edge-taak waarmee u DevOps kunt gebruiken met uw Azure IoT Edge-toepassingen. In dit artikel wordt gedemonstreerde hoe u de functies voor continue integratie en continue implementatie van Azure Pipelines gebruikt om snel en efficiënt toepassingen te bouwen, testen en implementeren in uw Azure IoT Edge met behulp van de klassieke editor. U kunt ook YAML-gebruiken.
In dit artikel leert u hoe u de ingebouwde Azure IoT Edge-taken voor Azure Pipelines gebruikt om build- en release-pijplijnen te maken voor uw IoT Edge-oplossing. Elke Azure IoT Edge-taak die aan uw pijplijn is toegevoegd, implementeert een van de volgende vier acties:
Handeling | Beschrijving |
---|---|
Module-afbeeldingen bouwen | Pakt uw IoT Edge-oplossingscode en bouwt de containerafbeeldingen. |
Afbeeldingen van pushmodules | Verzendt module-afbeeldingen naar het containerregister dat u hebt opgegeven. |
Implementatiemanifest genereren | Neemt een deployment.template.json bestand en de variabelen en genereert vervolgens het uiteindelijke Manifestbestand van de IoT Edge-implementatie. |
Uitrollen op IoT Edge-apparaten | Hiermee maakt u IoT Edge-implementaties op een of meer IoT Edge-apparaten. |
Tenzij anders opgegeven, verkennen de procedures in dit artikel niet alle functionaliteit die beschikbaar is via taakparameters. Zie de volgende bronnen voor meer informatie:
- Taakversie
- Advanced : geef, indien van toepassing, modules op die u niet wilt bouwen.
- Opties voor besturingselementen
- omgevingsvariabelen
- Uitvoervariabelen
Benodigdheden
Een Azure Repos-repository. Als u er nog geen hebt, kunt u een nieuwe Git-opslagplaats maken in uw project. Voor dit artikel hebben we een opslagplaats gemaakt met de naam IoTEdgeRepo.
Een IoT Edge-oplossing die is doorgevoerd en naar uw opslagplaats gepusht. Als u een nieuwe voorbeeldoplossing wilt maken voor het testen van dit artikel, volgt u de stappen in Azure IoT Edge-modules ontwikkelen met Behulp van Visual Studio Code. Voor dit artikel hebben we een oplossing gemaakt in onze opslagplaats met de naam IoTEdgeSolution, die de code bevat voor een module met de naam filtermodule.
Voor dit artikel hebt u alleen de oplossingsmap nodig die is gemaakt door de IoT Edge-sjablonen in Visual Studio Code of Visual Studio. U hoeft deze code niet te bouwen, pushen, implementeren of fouten op te sporen voordat u doorgaat. U gaat deze processen instellen in Azure Pipelines.
Het pad naar het deployment.template.json-bestand in uw oplossing kennen, dat in verschillende stappen wordt gebruikt. Als u niet bekend bent met de rol van de implementatiesjabloon, zie hoe u modules implementeert en routes opzet.
Hint
Als u een nieuwe oplossing maakt, kloont u eerst uw opslagplaats lokaal. Wanneer u vervolgens de oplossing maakt, kunt u ervoor kiezen om deze rechtstreeks in de opslagplaatsmap te maken. U kunt de nieuwe bestanden eenvoudig committen en pushen.
Een containerregister waar u module-installatiekopieën kunt pushen. U kunt Azure Container Registry of een register van derden gebruiken.
Een actieve Azure IoT-hub met ten minste twee IoT Edge-apparaten voor het testen van de afzonderlijke test- en productie-implementatiefasen. U kunt de quickstart-artikelen volgen om een IoT Edge-apparaat te maken in Linux of Windows
Een build-pijplijn maken voor continue integratie
In deze sectie maakt u een nieuwe buildpipeline. U configureert de pijplijn zodanig dat deze automatisch wordt uitgevoerd en buildlogboeken publiceert wanneer u wijzigingen in de IoT Edge-oplossing incheckt.
Meld u aan bij uw Azure DevOps-organisatie (
https://dev.azure.com/{your organization}
) en open het project dat uw IoT Edge-oplossingsopslagplaats bevat.Selecteer Pijplijnen in het linkerdeelvenstermenu in uw project. Selecteer Pijplijn maken in het midden van de pagina. Als u al pijplijnen hebt opgebouwd, selecteert u de Knop Nieuwe Pijplijn in de rechterbovenhoek.
Onderaan de Waar is uw code? pagina, selecteert u Gebruik de klassieke editor. Als u YAML wilt gebruiken om de build-pijplijnen van uw project te maken, raadpleegt u de YAML-handleiding.
Volg de aanwijzingen om uw pijplijn te maken.
Geef de broninformatie op voor uw nieuwe buildpipeline. Selecteer Azure Repos Git als de bron en selecteer vervolgens het project, de opslagplaats en de vertakking waar de code van uw IoT Edge-oplossing zich bevindt. Selecteer vervolgens Doorgaan.
Selecteer Lege taak in plaats van een sjabloon.
Zodra uw pijplijn is gemaakt, gaat u naar de pijplijneditor. Hier kunt u de naam, de agentgroep en de agentspecificatie van de pijplijn wijzigen.
U kunt een door Microsoft gehoste pool of een zelf-hostende pool selecteren die u beheert.
Kies in de beschrijving van de pijplijn de juiste agentspecificatie op basis van uw doelplatform:
Als u uw modules wilt bouwen in platform amd64 voor Linux-containers, kiest u ubuntu-18.04-
Als u uw modules wilt bouwen in platform amd64 voor Windows 1809-containers, moet u zelf-hostende agent instellen op Windows.
Als u uw modules wilt bouwen in platform arm32v7 of arm64 voor Linux-containers, moet u zelf-hostende agent instellen op Linux.
Uw pijplijn is vooraf geconfigureerd met een taak met de naam Agent-taak 1. Selecteer het plusteken (+) om vier taken toe te voegen aan de taak: Azure IoT Edge twee keer, Bestanden één keer kopiëren en Build-artefacten één keer publiceren. Zoek naar elke taak en beweeg de muisaanwijzer over de naam van de taak om de knop Toevoegen te zien.
Wanneer alle vier de taken worden toegevoegd, ziet uw agenttaak eruit als in het volgende voorbeeld:
Selecteer de eerste Azure IoT Edge- taak om deze te bewerken. Met deze taak worden alle modules in de oplossing gebouwd met het doelplatform dat u opgeeft. Bewerk de taak met de volgende waarden:
Maatstaf Beschrijving Weergavenaam De weergavenaam wordt automatisch bijgewerkt wanneer het veld Actie wordt gewijzigd. Handeling Selecteer Installatiekopieën van buildmodules. .template.json-bestand Selecteer het beletselteken (...) en navigeer naar het deployment.template.json bestand in de opslagplaats die uw IoT Edge-oplossing bevat. Standaardplatform Selecteer het juiste besturingssysteem voor uw modules op basis van uw beoogde IoT Edge-apparaat. Uitvoervariabelen Geef een verwijzingsnaam op om te koppelen aan het bestandspad waar uw deployment.json bestand wordt gegenereerd, zoals edge. Zie de Azure IoT Edge-taak voor meer informatie over deze taak en de bijbehorende parameters.
Deze configuraties maken gebruik van de opslagplaats en tag voor installatiekopieën die zijn gedefinieerd in het
module.json
-bestand om de module-installatiekopieën een naam te geven en te taggen. buildmodule-afbeeldingen helpt ook bij het vervangen van de variabelen door de exacte waarde die u in hetmodule.json
-bestand definieert. In Visual Studio of Visual Studio Code geeft u de werkelijke waarde op in een.env
-bestand. In Azure Pipelines stelt u de waarde in op het tabblad Pijplijnvariabelen. Selecteer het tabblad Variabelen in het menu pijplijneditor en configureer de naam en waarde als volgt:- ACR_ADDRESS: Uw Azure Container Registry aanmeldingsserverwaarde. U vindt de waarde van de aanmeldingsserver op de overzichtspagina van het containerregister in Azure Portal.
Als u andere variabelen in uw project hebt, kunt u de naam en waarde op dit tabblad opgeven. Module-afbeeldingen bouwen herkent alleen variabelen die zich in
${VARIABLE}
-indeling bevinden. Zorg ervoor dat u deze indeling gebruikt in uw**/module.json
-bestanden.Selecteer de tweede Azure IoT Edge- taak om deze te bewerken. Met deze taak worden alle moduleinstallatiekopieën naar het containerregister gepusht dat u selecteert.
Maatstaf Beschrijving Weergavenaam De weergavenaam wordt automatisch bijgewerkt wanneer het veld Actie wordt gewijzigd. Handeling Selecteer Pushmodule-afbeeldingen. Containerregistertype Gebruik het standaardtype: Azure Container Registry
.Azure-abonnement Kies uw abonnement. Azure-containerregister Selecteer het type containerregister dat u gebruikt om uw moduleinstallatiekopieën op te slaan. Afhankelijk van het registertype dat u kiest, wordt het formulier gewijzigd. Als u Azure Container Registrykiest, gebruikt u de vervolgkeuzelijsten om het Azure-abonnement en de naam van uw containerregister te selecteren. Als u Generic Container Registrykiest, selecteert u Nieuwe om een registerserviceverbinding te maken. .template.json-bestand Selecteer het beletselteken (...) en navigeer naar het deployment.template.json bestand in de opslagplaats die uw IoT Edge-oplossing bevat. Standaardplatform Selecteer het juiste besturingssysteem voor uw modules op basis van uw beoogde IoT Edge-apparaat. Registerreferentie toevoegen aan implementatiemanifest Geef 'waar' op om de registry-referentie toe te voegen om Docker-afbeeldingen naar het implementatiemanifest te pushen. Zie de Azure IoT Edge-taak voor meer informatie over deze taak en de bijbehorende parameters.
Als u meerdere containerregisters hebt om uw moduleinstallatiekopieën te hosten, moet u deze taak dupliceren, verschillende containerregisters selecteren en module(s) overslaan in de Geavanceerde-instellingen gebruiken om de installatiekopieën te omzeilen die niet voor dit specifieke register zijn.
Selecteer de Bestanden kopiëren taak om deze te bewerken. Gebruik deze taak om bestanden te kopiëren naar de map voor fasering van artefacten.
Maatstaf Beschrijving Weergavenaam De standaardnaam gebruiken of aanpassen Bronmap De map met de bestanden die moeten worden gekopieerd. Inhoud Voeg twee regels toe: deployment.template.json
en**/module.json
. Deze twee bestanden fungeren als invoer voor het genereren van het IoT Edge-implementatiemanifest.Doelmap Geef de variabele $(Build.ArtifactStagingDirectory)
op. Zie Build-variabelen voor meer informatie over de beschrijving.Zie De taak Bestanden kopiëren voor meer informatie over deze taak en de bijbehorende parameters.
Selecteer de Publiceer Build-artifacten taak om deze te bewerken. Geef het pad voor de tijdelijke opslag van artefacten aan de taak, zodat het pad kan worden gepubliceerd in de releasepijplijn.
Maatstaf Beschrijving Weergavenaam Gebruik de standaardnaam of pas deze aan. Pad naar publiceren Geef de variabele $(Build.ArtifactStagingDirectory)
op. Zie Build-variabelen voor meer informatie.Naam van het artefact Gebruik de standaardnaam: neerzetten Locatie voor publicatie van artefacten Gebruik de standaardlocatie: Azure Pipelines- Zie taak Build-artefacten publiceren voor meer informatie over deze taak en de bijbehorende parameters.
Open het tabblad Triggers en vink het selectievakje aan om continue integratie in te schakelen. Zorg ervoor dat de branch met je code is opgenomen.
- Selecteer Opslaan uit het vervolgkeuzemenu Opslaanwachtrij &.
Deze pijplijn is nu zo geconfigureerd dat deze automatisch wordt uitgevoerd wanneer u nieuwe code naar uw opslagplaats pusht. De laatste taak, het publiceren van de pijplijnartefacten, activeert een release-pijplijn. Ga door naar de volgende sectie om de release-pijplijn te bouwen.
Een release-pijplijn maken voor continue implementatie
In deze sectie maakt u een release-pijplijn die is geconfigureerd om automatisch te worden uitgevoerd wanneer uw build-pijplijn artefacten aflevert, en worden de implementatielogboeken weergegeven in Azure Pipelines.
Maak een nieuwe pijplijn en voeg een nieuwe fase toe:
Kies + Nieuwe pijplijn op het tabblad Releases onder Pijplijnen. Als u al release-pijplijnen hebt, kiest u de knop + Nieuw en selecteert u + Nieuwe release-pijplijn.
Wanneer u wordt gevraagd om een sjabloon te selecteren, kiest u ervoor om te beginnen met een lege taak.
De nieuwe release-pijplijn initialiseert met één fase, fase 1 genoemd. Wijzig de naam van fase 1 in dev en behandel deze als een pijplijn voor continue implementatie voor uw ontwikkelomgeving. Pijplijnen voor continue implementatie hebben meestal meerdere fasen, waaronder ontwikkelen, faseren en prod. U kunt verschillende namen gebruiken en meer maken op basis van uw DevOps-praktijk. Sluit het detailvenster van de fase zodra de naam ervan is gewijzigd.
U kunt de naam van de release-pijplijn ook wijzigen door bovenaan de tekst 'Nieuwe release-pijplijn' te selecteren.
Koppel de release aan de build-artefacten die zijn gepubliceerd door de buildpipeline. Klik op toevoegen in het gebied artefacten.
Selecteer op de pagina "Een artefact toevoegen""Build" als brontype. Kies het project en de pijplijn voor bouwen die u hebt gemaakt. Als u wilt, kunt u de bronalias wijzigen in iets beschrijvender. Selecteer vervolgens toevoegen.
Open de artefacttriggers en selecteer de wisselknop om de continue implementatietrigger in te schakelen. Er wordt nu een nieuwe release gemaakt telkens wanneer er een nieuwe build beschikbaar is.
De ontwikkelfase is vooraf geconfigureerd met één taak en nul taken. Selecteer taken in het pijplijnmenu en kies vervolgens de ontwikkelfase . Selecteer de agenttaak en wijzig de weergavenaam in QA. U kunt details over de agenttaak configureren, maar de implementatietaak is platformgevoelig, zodat u elke agentspecificatie in de gekozen agentgroep kunt gebruiken.
Selecteer in de QA-taak het plusteken (+) om twee taken toe te voegen. Zoek en voeg Azure IoT Edge twee keer toe.
Selecteer de eerste Azure IoT Edge-taak en configureer deze met de volgende waarden:
Maatstaf Beschrijving Weergavenaam De weergavenaam wordt automatisch bijgewerkt wanneer het veld Actie wordt gewijzigd. Handeling Selecteer Generate deployment manifest
..template.json-bestand Geef het pad op: $(System.DefaultWorkingDirectory)/Drop/drop/deployment.template.json
. Het pad wordt gepubliceerd vanuit de buildpipeline.Standaardplatform Selecteer het juiste besturingssysteem voor uw modules op basis van uw beoogde IoT Edge-apparaat. Uitvoerpad Plaats het pad $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json
. Dit pad is het uiteindelijke manifestbestand voor de IoT Edge-implementatie.Deze configuraties helpen de URL's van de module-installatiekopieën in het
deployment.template.json
bestand te vervangen. Het distributiemanifest Genereren helpt ook bij het vervangen van de variabelen door de exacte waarde die u in hetdeployment.template.json
bestand hebt gedefinieerd. In Visual Studio/Visual Studio Code geeft u de werkelijke waarde in een.env
bestand op. In Azure Pipelines stelt u de waarde in op het tabblad Release Pipeline Variables . Ga naar het tabblad Variabelen en configureer de naam en waarde als volgt:- ACR_ADDRESS: de azure Container Registry-aanmeldingsserverwaarde. U vindt de aanmeldingsserver op de overzichtspagina van het containerregister in de Azure-portal.
- ACR_PASSWORD: uw Azure Container Registry-wachtwoord.
- ACR_USER: uw Azure Container Registry-gebruikersnaam.
Als u andere variabelen in uw project hebt, kunt u de naam en waarde op dit tabblad opgeven. Het Genereren van het implementatiemanifest kan alleen de variabelen herkennen die zich in de
${VARIABLE}
-configuratie bevinden. Zorg ervoor dat u deze smaak in uw*.template.json
bestanden gebruikt."registryCredentials": { "<ACR name>": { // Your Azure Container Registry **Registry name** value "username": "${ACR_USER}", "password": "${ACR_PASSWORD}", "address": "${ACR_ADDRESS}" } }
Selecteer de tweede Azure IoT Edge-taak en configureer deze met de volgende waarden:
Maatstaf Beschrijving Weergavenaam De weergavenaam wordt automatisch bijgewerkt wanneer het veld Actie wordt gewijzigd. Handeling Selecteer Deploy to IoT Edge devices
.Implementatiebestand Voer het pad in $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json
. Dit pad is het manifestbestand voor de IoT Edge-implementatie.Azure-abonnement Selecteer het abonnement dat uw IoT Hub bevat. IoT Hub-naam Selecteer uw IoT-hub. Eén/meerdere apparaten kiezen Kies of u de release-pijplijn wilt implementeren op een of meerdere apparaten. Als u implementeert op één apparaat, voert u de IoT Edge-apparaat-id in. Als u op meerdere apparaten implementeert, geeft u de doelvoorwaarde van het apparaat op. De doelvoorwaarde is een filter dat overeenkomt met een set IoT Edge-apparaten in IoT Hub. Als u apparaattags als voorwaarde wilt gebruiken, moet u de bijbehorende apparaattags bijwerken met IoT Hub-apparaatdubbel. Werk de ioT Edge-implementatie-id en de prioriteit van de IoT Edge-implementatie bij in de geavanceerde instellingen. Zie Automatische implementaties van IoT Edge begrijpen voor meer informatie over het maken van een implementatie voor meerdere apparaten. Apparaat-id of doelvoorwaarde Geef, afhankelijk van de vorige selectie, een apparaat-id of doelvoorwaarde op die op meerdere apparaten moet worden geïmplementeerd. Geavanceerd Geef voor de IoT Edge-implementatie-id op $(System.TeamProject)-$(Release.EnvironmentName)
. Deze variabele wijst het project en de releasenaam toe aan uw IoT Edge-implementatie-id.Als uw taak betrekking heeft op het gebruik van een installatiekopieën die zich in een persoonlijk Vertrouwd Docker-register bevinden dat niet zichtbaar is voor de openbare cloud, kunt u de omgevingsvariabele SKIP_MODULE_IMAGE_VALIDATION instellen om de validatie van installatiekopieën over te
true
slaan.Selecteer Opslaan om uw wijzigingen op te slaan in de nieuwe release-pijplijn. Ga terug naar de pijplijnweergave door het tabblad Pijplijn te selecteren in het menu.
Notitie
Gelaagde implementaties worden nog niet ondersteund in taken van Azure IoT Edge in Azure DevOps.
U kunt echter een Azure CLI-taak in Azure DevOps gebruiken om uw implementatie te maken als een gelaagde implementatie. Voor de Inlinescriptwaarde kunt u de opdracht az iot edge deployment creategebruiken:
az iot edge deployment create -d {deployment_name} -n {hub_name} --content modules_content.json --layered true
IoT Edge CI/CD verifiëren met de build- en release-pijplijnen
Om een buildtaak te starten, kunt u een commit naar de repository pushen of deze handmatig activeren. In deze sectie activeert u handmatig de CI/CD-pijplijn om te testen of deze werkt. Controleer vervolgens of de implementatie is geslaagd.
Selecteer Pijplijnen in het linkerdeelvenstermenu en open de build-pijplijn die u aan het begin van dit artikel hebt gemaakt.
U kunt een buildtaak in uw build-pijplijn activeren door de knop Pijplijn uitvoeren in de rechterbovenhoek te selecteren.
Controleer de instellingen van de pijplijn uitvoeren . Vervolgens selecteer Uitvoeren.
Selecteer Agenttaak 1 om de voortgang van de uitvoering te bekijken. U kunt de logboeken van de uitvoer van de taak bekijken door de taak te selecteren.
Als de build-pijplijn succesvol is voltooid, wordt er een release naar de dev stage gestart. Met de geslaagde dev-release wordt een IoT Edge-implementatie gemaakt om IoT Edge-apparaten te targeten.
Klik op ontwikkelfase om releaselogboeken te bekijken.
Als uw pijplijn mislukt, kijkt u eerst naar de logboeken. U kunt logboeken bekijken door naar het overzicht van de pijplijnuitvoering te navigeren en de job en taak te selecteren. Als een bepaalde taak mislukt, controleert u de logboeken voor die taak. Zie Logboeken controleren om pijplijnproblemen vast te stellen voor gedetailleerde instructies voor het configureren en gebruiken van logboeken.
Volgende stappen
- Inzicht in de IoT Edge-implementaties in IoT Edge-implementaties voor individuele apparaten of op grote schaal
- Doorloop de stappen voor het maken, bijwerken of verwijderen van een implementatie in IoT Edge-modules op schaal implementeren en bewaken.