Delen via


Continue integratie en continue implementatie op Azure IoT Edge-apparaten (klassieke editor)

Van toepassing op: Vinkje voor IoT Edge 1.4 IoT Edge 1.4

Belangrijk

IoT Edge 1.5 LTS en IoT Edge 1.4 worden ondersteund. 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.

Diagram van de vertakkingen voor continue integratie en continue ontwikkeling voor ontwikkeling en productie.

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:

Actie Beschrijving
Module-installatiekopieën bouwen Neemt uw IoT Edge-oplossingscode en bouwt de containerinstallatiekopieën.
Installatiekopieën van pushmodules Pusht module-installatiekopieën 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.
Implementeren naar 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. Voor meer informatie raadpleegt u de volgende bronnen:

Vereisten

  • Een Opslagplaats voor Azure-opslagplaatsen. 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, raadpleegt u Meer informatie over het implementeren van modules en het opzetten van routes.

    Tip

    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 doorvoeren 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 build-pijplijn. U configureert de pijplijn zodanig dat deze automatisch wordt uitgevoerd en buildlogboeken publiceert wanneer u wijzigingen in de IoT Edge-oplossing incheckt.

  1. Meld u aan bij uw Azure DevOps-organisatie (https://dev.azure.com/{your organization}) en open het project dat uw IoT Edge-oplossingsopslagplaats bevat.

    Schermopname van het openen van uw DevOps-project.

  2. Selecteer Pijplijnen in het linkerdeelvenstermenu in uw project. Selecteer Pijplijn maken in het midden van de pagina. Als u al build-pijplijnen hebt, selecteert u de knop Nieuwe pijplijn in de rechterbovenhoek.

    Schermopname van het maken van een nieuwe build-pijplijn.

  3. Selecteer onderaan de pagina Waar is uw code? de optie De klassieke editor gebruiken. Als u YAML wilt gebruiken om de build-pijplijnen van uw project te maken, raadpleegt u de YAML-handleiding.

    Schermopname van het gebruik van de klassieke editor.

  4. Volg de aanwijzingen om uw pijplijn te maken.

    1. Geef de broninformatie op voor uw nieuwe build-pijplijn. Selecteer Azure Repos Git als de bron en selecteer vervolgens het project, de opslagplaats en de vertakking waar uw IoT Edge-oplossingscode zich bevindt. Selecteer vervolgens Doorgaan.

      Schermopname die laat zien hoe u uw pijplijnbron selecteert.

    2. Selecteer Lege taak in plaats van een sjabloon.

      Schermopname die laat zien hoe u begint met een lege taak voor uw build-pijplijn.

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

    Configureer de specificatie van de buildagent.

  6. 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, Kopieer bestanden één keer en publiceer eenmaal buildartefacten . Zoek naar elke taak en beweeg de muisaanwijzer over de naam van de taak om de knop Toevoegen weer te geven.

    Azure IoT Edge-taak toevoegen.

    Wanneer alle vier de taken worden toegevoegd, ziet uw agenttaak eruit als in het volgende voorbeeld:

    Vier taken in de build-pijplijn.

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

    Parameter Description
    Display name De weergavenaam wordt automatisch bijgewerkt wanneer het veld Actie wordt gewijzigd.
    Actie 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 die moet worden gekoppeld aan het bestandspad waar het 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 in het module.json bestand zijn gedefinieerd om de module-installatiekopieën een naam te geven en te taggen. Met buildmodule-installatiekopieën kunt u ook de variabelen vervangen door de exacte waarde die u in het module.json bestand definieert. In Visual Studio of Visual Studio Code geeft u de werkelijke waarde in een .env bestand op. In Azure Pipelines stelt u de waarde in op het tabblad Pijplijnvariabelen . Selecteer het tabblad Variabelen in het menu van de pijplijneditor en configureer de naam en waarde als volgt:

    • ACR_ADDRESS: de 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. Buildmodule-installatiekopieën herkennen alleen variabelen die in ${VARIABLE} indeling zijn. Zorg ervoor dat u deze indeling gebruikt in uw **/module.json bestanden.

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

    Parameter Description
    Display name De weergavenaam wordt automatisch bijgewerkt wanneer het veld Actie wordt gewijzigd.
    Actie Selecteer Installatiekopieën van pushmodules.
    Containerregistertype Gebruik het standaardtype: Azure Container Registry.
    Azure-abonnement Kies uw abonnement.
    Azure Container Registry 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 Registry kiest, gebruikt u de vervolgkeuzelijsten om het Azure-abonnement en de naam van uw containerregister te selecteren. Als u Algemeen containerregister kiest, selecteert u Nieuw 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 registerreferentie toe te voegen voor het pushen van Docker-installatiekopieën naar het implementatiemanifest.

    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 om de installatiekopieën te omzeilen die niet voor dit specifieke register zijn.

  9. Selecteer de taak Bestanden kopiëren om deze te bewerken. Gebruik deze taak om bestanden te kopiëren naar de map voor fasering van artefacten.

    Parameter Description
    Display name 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.

  10. Selecteer de taak BuildArtefacten publiceren om deze te bewerken. Geef het mappad voor fasering van artefacten op naar de taak, zodat het pad kan worden gepubliceerd naar de release-pijplijn.

    Parameter Description
    Display name Gebruik de standaardnaam of pas deze aan.
    Pad om te 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 De taak Build-artefacten publiceren voor meer informatie over deze taak en de bijbehorende parameters.

  11. Open het tabblad Triggers en schakel het selectievakje in om continue integratie in te schakelen. Zorg ervoor dat de vertakking met uw code is opgenomen.

Schermopname die laat zien hoe u continue integratietrigger inschakelt.

  1. Selecteer Opslaan in de vervolgkeuzelijst Opslaan en wachtrij.

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 verwijdert en worden implementatielogboeken in Azure Pipelines weergegeven.

Maak een nieuwe pijplijn en voeg een nieuwe fase toe:

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

    Een release-pijplijn toevoegen met de knop + Nieuwe pijplijn

  2. Wanneer u wordt gevraagd om een sjabloon te selecteren, kiest u ervoor om te beginnen met een lege taak.

    Begin met een lege taak voor uw release-pijplijn

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

  4. Koppel de release aan de buildartefacten die zijn gepubliceerd door de build-pijplijn. Klik op Het gebied Artefacten toevoegen .

    Klik op Toevoegen in het gebied artefacten van de interface

  5. Selecteer Build als brontype op de pagina Een artefact toevoegen. Kies het project en de build-pijplijn die u hebt gemaakt. Als u wilt, kunt u de bronalias wijzigen in iets beschrijvender. Selecteer vervolgens Toevoegen.

    Selecteer Op de pagina Een artefact toevoegen de optie Toevoegen om het artefact te maken

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

    Open de artefacttriggers en wisselknop om de continue implementatietrigger in te schakelen

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

    De taken voor uw ontwikkelfase weergeven op het tabblad Taken

  8. Selecteer in de QA-taak het plusteken (+) om twee taken toe te voegen. Zoek en voeg Azure IoT Edge twee keer toe.

  9. Selecteer de eerste Azure IoT Edge-taak en configureer deze met de volgende waarden:

    Parameter Description
    Display name De weergavenaam wordt automatisch bijgewerkt wanneer het veld Actie wordt gewijzigd.
    Actie Selecteer Generate deployment manifest.
    .template.json-bestand Geef het pad op: $(System.DefaultWorkingDirectory)/Drop/drop/deployment.template.json. Het pad wordt gepubliceerd vanuit de build-pijplijn.
    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 het deployment.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 distributiemanifest Genereren kan alleen de variabelen herkennen die in ${VARIABLE} smaak zijn. 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}"
      }
    }
    

    Configureer de variabelen voor uw release-pijplijn op het tabblad Variabelen

  10. Selecteer de tweede Azure IoT Edge-taak en configureer deze met de volgende waarden:

    Parameter Description
    Display name De weergavenaam wordt automatisch bijgewerkt wanneer het veld Actie wordt gewijzigd.
    Actie Selecteer Deploy to IoT Edge devices.
    Implementatiebestand Plaats het pad $(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.
    Naam van de IoT Hub 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.

    Azure IoT Edge-taken toevoegen voor uw ontwikkelfase

  11. 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 Azure IoT Edge-taken 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 create gebruiken:

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

Als u een buildtaak wilt activeren, kunt u een doorvoering naar de broncodeopslagplaats pushen of 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.

  1. Selecteer Pijplijnen in het linkerdeelvenstermenu en open de build-pijplijn die u aan het begin van dit artikel hebt gemaakt.

  2. U kunt een buildtaak in uw build-pijplijn activeren door de knop Pijplijn uitvoeren in de rechterbovenhoek te selecteren.

    Uw build-pijplijn handmatig activeren met behulp van de knop Pijplijn uitvoeren

  3. Controleer de instellingen van de pijplijn uitvoeren . Selecteer vervolgens Uitvoeren.

    Opties voor run-pijplijn opgeven en Uitvoeren selecteren

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

    De logboekuitvoer van de taak controleren

  5. Als de build-pijplijn is voltooid, wordt er een release naar de ontwikkelfase geactiveerd. Met de geslaagde dev-release wordt een IoT Edge-implementatie gemaakt om IoT Edge-apparaten te targeten.

    Release naar dev

  6. Klik op ontwikkelfase om releaselogboeken weer te geven.

    Release-logboeken

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