Kontinuerlig integrering och kontinuerlig distribution till Azure IoT Edge-enheter (klassisk redigerare)

Gäller för kryssrutan:IoT Edge 1.4 IoT Edge 1.4

Viktigt

IoT Edge 1.4 är den version som stöds. Om du har en tidigare version läser du Uppdatera IoT Edge.

Azure Pipelines innehåller en inbyggd Azure-IoT Edge uppgift som hjälper dig att implementera DevOps med dina Azure IoT Edge-program. Den här artikeln visar hur du använder funktionerna för kontinuerlig integrering och kontinuerlig distribution i Azure Pipelines för att snabbt och effektivt skapa, testa och distribuera program till azure-IoT Edge med den klassiska redigeraren. Du kan också använda YAML.

Diagram över grenarna för kontinuerlig integrering och kontinuerlig utveckling för utveckling och produktion .

I den här artikeln får du lära dig hur du använder de inbyggda Azure IoT Edge-uppgifterna för Azure Pipelines för att skapa bygg- och versionspipelines för din IoT Edge lösning. Varje Azure-IoT Edge uppgift som läggs till i din pipeline implementerar någon av följande fyra åtgärder:

Åtgärd Beskrivning
Skapa modulbilder Tar din IoT Edge lösningskod och skapar containeravbildningarna.
Push-modulbilder Push-överför modulavbildningar till det containerregister som du angav.
Generera distributionsmanifest Tar en deployment.template.json-fil och variablerna och genererar sedan den slutliga IoT Edge distributionsmanifestfilen.
Distribuera till IoT Edge-enheter Skapar IoT Edge distributioner till en eller flera IoT Edge enheter.

Om inget annat anges utforskar inte procedurerna i den här artikeln alla funktioner som är tillgängliga via uppgiftsparametrar. Mer information finns i följande resurser:

Förutsättningar

  • En Lagringsplats för Azure-lagringsplatser. Om du inte har en kan du skapa en ny Git-lagringsplats i projektet. I den här artikeln skapade vi en lagringsplats med namnet IoTEdgeRepo.

  • En IoT Edge lösning som checkats in och push-överförts till lagringsplatsen. Om du vill skapa en ny exempellösning för att testa den här artikeln följer du stegen i Utveckla Azure IoT Edge-moduler med Visual Studio Code. I den här artikeln har vi skapat en lösning på lagringsplatsen med namnet IoTEdgeSolution, som har koden för en modul med namnet filtermodule.

    I den här artikeln behöver du bara lösningsmappen som skapats av IoT Edge-mallarna i antingen Visual Studio Code eller Visual Studio. Du behöver inte skapa, push-överföra, distribuera eller felsöka den här koden innan du fortsätter. Du konfigurerar dessa processer i Azure Pipelines.

    Känna till sökvägen till filen deployment.template.json i din lösning, som används i flera steg. Om du inte känner till distributionsmallens roll kan du läsa Mer information om hur du distribuerar moduler och upprättar vägar.

    Tips

    Om du skapar en ny lösning klonar du lagringsplatsen lokalt först. När du sedan skapar lösningen kan du välja att skapa den direkt i lagringsplatsens mapp. Du kan enkelt checka in och skicka de nya filerna därifrån.

  • Ett containerregister där du kan push-överföra modulavbildningar. Du kan använda Azure Container Registry eller ett register från tredje part.

  • En aktiv Azure IoT-hubb med minst två IoT Edge enheter för att testa de separata test- och produktionsdistributionsstegen. Du kan följa snabbstartsartiklarna för att skapa en IoT Edge-enhet i Linux eller Windows

Skapa en byggpipeline för kontinuerlig integrering

I det här avsnittet skapar du en ny bygg-pipeline. Du konfigurerar pipelinen så att den körs automatiskt och publicerar byggloggar när du checkar in ändringar i IoT Edge lösning.

  1. Logga in på din Azure DevOps-organisation (https://dev.azure.com/{your organization}) och öppna projektet som innehåller din IoT Edge lösningslagringsplats.

    Skärmbild som visar hur du öppnar ditt DevOps-projekt.

  2. Välj Pipelines på menyn till vänster i projektet. Välj Skapa pipeline i mitten av sidan. Om du redan har byggpipelines väljer du knappen Ny pipeline längst upp till höger.

    Skärmbild som visar hur du skapar en ny bygg-pipeline.

  3. Längst ned på sidan Var är din kod? väljer du Använd den klassiska redigeraren. Om du vill använda YAML för att skapa projektets byggpipelines kan du läsa YAML-guiden.

    Skärmbild som visar hur du använder den klassiska redigeraren.

  4. Följ anvisningarna för att skapa din pipeline.

    1. Ange källinformationen för din nya bygg-pipeline. Välj Azure Repos Git som källa och välj sedan projektet, lagringsplatsen och grenen där din IoT Edge lösningskod finns. Välj sedan Fortsätt.

      Skärmbild som visar hur du väljer din pipelinekälla.

    2. Välj Tomt jobb i stället för en mall.

      Skärmbild som visar hur du börjar med ett tomt jobb för bygg-pipelinen.

  5. När din pipeline har skapats tas du till pipelineredigeraren. Här kan du ändra pipelinens namn, agentpool och agentspecifikation.

    Du kan välja en Microsoft-värdbaserad pool eller en pool med egen värd som du hanterar.

    I din pipelinebeskrivning väljer du rätt agentspecifikation baserat på målplattformen:

    Konfigurera specifikationen för byggagenten.

  6. Pipelinen är förkonfigurerad med ett jobb som heter Agentjobb 1. Välj plustecknet (+) för att lägga till fyra uppgifter i jobbet: Azure IoT Edge två gånger, Kopiera filer en gång och Publicera byggartefakter en gång. Sök efter varje aktivitet och hovra över aktivitetens namn för att se knappen Lägg till .

    Lägg till Azure IoT Edge uppgift.

    När alla fyra aktiviteter läggs till ser agentjobbet ut som i följande exempel:

    Fyra uppgifter i bygg-pipelinen.

  7. Välj den första Azure-IoT Edge uppgiften att redigera den. Den här uppgiften skapar alla moduler i lösningen med den målplattform som du anger. Redigera uppgiften med följande värden:

    Parameter Beskrivning
    Visningsnamn Visningsnamnet uppdateras automatiskt när fältet Åtgärd ändras.
    Åtgärd Välj Skapa modulbilder.
    .template.json-fil Välj ellipsen (...) och gå till filen deployment.template.json på lagringsplatsen som innehåller din IoT Edge lösning.
    Standardplattform Välj lämpligt operativsystem för dina moduler baserat på din målenhet IoT Edge.
    Utdatavariabler Ange ett referensnamn som ska associeras med filsökvägen där filen deployment.json genererar, till exempel edge.

    Mer information om den här uppgiften och dess parametrar finns i Azure IoT Edge uppgift.

    De här konfigurationerna använder avbildningslagringsplatsen och taggen module.json som definieras i filen för att namnge och tagga modulbilden. Skapa modulbilder hjälper också till att ersätta variablerna med det exakta värde som du definierar i module.json filen. I Visual Studio eller Visual Studio Code anger du det faktiska värdet i en .env fil. I Azure Pipelines anger du värdet på fliken Pipelinevariabler . Välj fliken Variabler på pipelineredigerarens meny och konfigurera namn och värde enligt följande:

    • ACR_ADDRESS: Värdet för Azure Container Registry-inloggningsservern. Du hittar inloggningsservervärdet på containerregistrets översiktssida i Azure Portal.

    Om du har andra variabler i projektet kan du ange namn och värde på den här fliken. Skapa modulbilder identifierar endast variabler som är i ${VARIABLE} format. Se till att du använder det här formatet i dina **/module.json filer.

  8. Välj den andra Azure-IoT Edge uppgiften för att redigera den. Den här uppgiften skickar alla modulavbildningar till det containerregister som du väljer.

    Parameter Beskrivning
    Visningsnamn Visningsnamnet uppdateras automatiskt när fältet Åtgärd ändras.
    Åtgärd Välj Push-modulbilder.
    Containerregistertyp Använd standardtypen: Azure Container Registry.
    Azure-prenumeration Välj din prenumeration.
    Azure Container Registry Välj den typ av containerregister som du använder för att lagra dina modulavbildningar. Beroende på vilken registertyp du väljer ändras formuläret. Om du väljer Azure Container Registry använder du listrutorna för att välja Azure-prenumerationen och namnet på containerregistret. Om du väljer Allmänt containerregister väljer du Nytt för att skapa en registertjänstanslutning.
    .template.json-fil Välj ellipsen (...) och gå till filen deployment.template.json på lagringsplatsen som innehåller din IoT Edge lösning.
    Standardplattform Välj lämpligt operativsystem för dina moduler baserat på din målenhet IoT Edge.
    Lägga till registerautentiseringsuppgifter i distributionsmanifestet Ange true för att lägga till registerautentiseringsuppgifterna för push-överföring av Docker-avbildningar till distributionsmanifestet.

    Mer information om den här uppgiften och dess parametrar finns i Azure IoT Edge uppgift.

    Om du har flera containerregister som värd för dina modulavbildningar måste du duplicera den här uppgiften, välja ett annat containerregister och använda Bypass-moduleri avancerade inställningar för att kringgå avbildningarna som inte gäller för det här specifika registret.

  9. Välj aktiviteten Kopiera filer för att redigera den. Använd den här uppgiften för att kopiera filer till mellanlagringskatalogen för artefakter.

    Parameter Beskrivning
    Visningsnamn Använd standardnamnet eller anpassa
    Källmapp Mappen med de filer som ska kopieras.
    Innehåll Lägg till två rader: deployment.template.json och **/module.json. Dessa två filer fungerar som indata för att generera IoT Edge distributionsmanifestet.
    Målmapp Ange variabeln $(Build.ArtifactStagingDirectory). Mer information om beskrivningen finns i Skapa variabler .

    Mer information om den här uppgiften och dess parametrar finns i Kopiera filer uppgift.

  10. Välj aktiviteten Publicera byggartefakter för att redigera den. Ange sökvägen för artefaktlagringskatalogen till uppgiften så att sökvägen kan publiceras till versionspipelinen.

    Parameter Beskrivning
    Visningsnamn Använd standardnamnet eller anpassa.
    Sökväg till publicering Ange variabeln $(Build.ArtifactStagingDirectory). Mer information finns i Skapa variabler .
    Artefaktnamn Använd standardnamnet: släpp
    Artefaktpublicera plats Använd standardplatsen: Azure Pipelines

    Mer information om den här uppgiften och dess parametrar finns i Publicera byggartefakter.

  11. Öppna fliken Utlösare och markera kryssrutan Aktivera kontinuerlig integrering. Kontrollera att grenen som innehåller koden ingår.

Skärmbild som visar hur du aktiverar kontinuerlig integreringsutlösare.

  1. Välj Spara i listrutan Spara & kö .

Den här pipelinen har nu konfigurerats för att köras automatiskt när du skickar ny kod till lagringsplatsen. Den sista uppgiften, som publicerar pipelineartefakterna, utlöser en versionspipeline. Fortsätt till nästa avsnitt för att skapa versionspipelinen.

Skapa en versionspipeline för kontinuerlig distribution

I det här avsnittet skapar du en versionspipeline som är konfigurerad att köras automatiskt när din byggpipeline släpper artefakter, och den visar distributionsloggar i Azure Pipelines.

Skapa en ny pipeline och lägg till en ny fas:

  1. På fliken Versioner under Pipelines väljer du + Ny pipeline. Om du redan har versionspipelines väljer du knappen + Nytt och väljer + Ny versionspipeline.

    Lägg till en versionspipeline med knappen + Ny pipeline

  2. När du uppmanas att välja en mall väljer du att börja med ett tomt jobb.

    Börja med ett tomt jobb för versionspipelinen

  3. Din nya versionspipeline initieras med ett steg, som kallas steg 1. Byt namn på steg 1 för att utveckla och behandla det som en pipeline för kontinuerlig distribution för utvecklingsmiljön. Vanligtvis har pipelines för kontinuerlig distribution flera steg, inklusive utveckling, mellanlagring och prod. Du kan använda olika namn och skapa mer baserat på din DevOps-praxis. Stäng fönstret med fasinformation när det har bytt namn.

    Du kan också byta namn på versionspipelinen genom att välja texten "Ny versionspipeline" längst upp.

  4. Länka versionen till de byggartefakter som publiceras av bygg-pipelinen. Klicka på Lägg till i artefaktområdet.

    Klicka på Lägg till i området artefakter i gränssnittet

  5. sidan Lägg till en artefakt väljer du Skapa som källtyp. Välj projektet och bygg-pipelinen som du skapade. Om du vill kan du ändra källaliaset till något mer beskrivande. Välj sedan Lägg till.

    På sidan Lägg till en artefakt väljer du Lägg till för att skapa artefakten

  6. Öppna artefaktutlösarna och välj växlingsknappen för att aktivera utlösaren för kontinuerlig distribution. Nu skapas en ny version varje gång en ny version är tillgänglig.

    Öppna artefaktutlösarna och växla för att aktivera utlösaren för kontinuerlig distribution

  7. Utvecklingssteget är förkonfigurerat med ett jobb och noll aktiviteter. På pipelinemenyn väljer du Uppgifter och sedan utvecklingssteget . Välj agentjobbet och ändra dess visningsnamn till QA. Du kan konfigurera information om agentjobbet, men distributionsuppgiften är plattformsokänslig så att du kan använda valfri agentspecifikation i den valda agentpoolen.

    Visa aktiviteterna för utvecklingsfasen under fliken Uppgifter

  8. I QA-jobbet väljer du plustecknet (+) för att lägga till två uppgifter. Sök efter och lägg till Azure IoT Edge två gånger.

  9. Välj den första Azure-IoT Edge uppgiften och konfigurera den med följande värden:

    Parameter Beskrivning
    Visningsnamn Visningsnamnet uppdateras automatiskt när fältet Åtgärd ändras.
    Åtgärd Välj Generate deployment manifest.
    .template.json-fil Ange sökvägen: $(System.DefaultWorkingDirectory)/Drop/drop/deployment.template.json. Sökvägen publiceras från bygg-pipelinen.
    Standardplattform Välj lämpligt operativsystem för dina moduler baserat på din målenhet IoT Edge.
    Utdatasökväg Placera sökvägen $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Den här sökvägen är den sista IoT Edge distributionsmanifestfilen.

    De här konfigurationerna hjälper dig att ersätta url:erna för modulbild i deployment.template.json filen. Manifestet Generera distribution hjälper också till att ersätta variablerna med det exakta värdet som du definierade i deployment.template.json filen. I Visual Studio/Visual Studio Code anger du det faktiska värdet i en .env fil. I Azure Pipelines anger du värdet på fliken Versionspipelinevariabler . Flytta till fliken Variabler och konfigurera namnet och värdet enligt följande:

    • ACR_ADDRESS: Värdet för din Azure Container Registry-inloggningsserver. Du kan hämta inloggningsservern från sidan Översikt i containerregistret i Azure Portal.
    • ACR_PASSWORD: Ditt Azure Container Registry lösenord.
    • ACR_USER: Ditt Azure Container Registry användarnamn.

    Om du har andra variabler i projektet kan du ange namn och värde på den här fliken. Manifestet Generera distribution kan bara identifiera de variabler som är i ${VARIABLE} smak. Se till att du använder den här smaken i dina *.template.json filer.

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

    Konfigurera variablerna för din versionspipeline på fliken Variabler

  10. Välj den andra Azure-IoT Edge uppgiften och konfigurera den med följande värden:

    Parameter Beskrivning
    Visningsnamn Visningsnamnet uppdateras automatiskt när fältet Åtgärd ändras.
    Åtgärd Välj Deploy to IoT Edge devices.
    Distributionsfil Placera sökvägen $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Den här sökvägen är filen IoT Edge distributionsmanifestfilen.
    Azure-prenumeration Välj den prenumeration som innehåller din IoT Hub.
    IoT Hub namn Välj din IoT-hubb.
    Välj en/flera enheter Välj om du vill att versionspipelinen ska distribueras till en eller flera enheter. Om du distribuerar till en enda enhet anger du IoT Edge enhets-ID. Om du distribuerar till flera enheter anger du enhetens målvillkor. Målvillkoret är ett filter som matchar en uppsättning IoT Edge enheter i IoT Hub. Om du vill använda enhetstaggar som villkor måste du uppdatera motsvarande enhetstaggar med IoT Hub enhetstvilling. Uppdatera IoT Edge distributions-ID och IoT Edge distributionsprioritet i de avancerade inställningarna. Mer information om hur du skapar en distribution för flera enheter finns i Förstå IoT Edge automatiska distributioner.
    Enhets-ID eller målvillkor Beroende på föregående val anger du ett enhets-ID eller målvillkor för distribution till flera enheter.
    Avancerat För distributions-ID för IoT Edge anger du $(System.TeamProject)-$(Release.EnvironmentName). Den här variabeln mappar projektet och versionsnamnet med ditt IoT Edge distributions-ID.

    Om din uppgift innebär att använda en avbildning som finns i ett privat Betrott Docker-register som inte är synligt för det offentliga molnet, kan du ange SKIP_MODULE_IMAGE_VALIDATION miljövariabeln till true för att hoppa över avbildningsverifieringen.

    Lägga till Azure IoT Edge-uppgifter för utvecklingsfasen

  11. Välj Spara för att spara ändringarna i den nya versionspipelinen. Gå tillbaka till pipelinevyn genom att välja fliken Pipeline på menyn.

Anteckning

Distributioner i flera lager stöds ännu inte i Azure IoT Edge-uppgifter i Azure DevOps.

Du kan dock använda en Azure CLI-uppgift i Azure DevOps för att skapa distributionen som en distribution i flera lager. För värdet Infogat skript kan du använda kommandot az iot edge deployment create:

az iot edge deployment create -d {deployment_name} -n {hub_name} --content modules_content.json --layered true

Verifiera IoT Edge CI/CD med bygg- och versionspipelines

Om du vill utlösa ett byggjobb kan du antingen skicka en incheckning till källkodslagringsplatsen eller utlösa den manuellt. I det här avsnittet utlöser du CI/CD-pipelinen manuellt för att testa att den fungerar. Kontrollera sedan att distributionen lyckas.

  1. I menyn till vänster väljer du Pipelines och öppnar bygg-pipelinen som du skapade i början av den här artikeln.

  2. Du kan utlösa ett byggjobb i bygg-pipelinen genom att välja knappen Kör pipeline längst upp till höger.

    Utlös bygg-pipelinen manuellt med knappen Kör pipeline

  3. Granska inställningarna för Körningspipeline . Välj sedan Kör.

    Ange alternativ för körningspipeline och välj Kör

  4. Välj Agentjobb 1 för att watch körningens förlopp. Du kan granska loggarna för jobbets utdata genom att välja jobbet.

    Granska jobbets loggutdata

  5. Om bygg-pipelinen har slutförts utlöses en version till utvecklingsfasen . Den lyckade utvecklingsversionen skapar IoT Edge distribution för att rikta IoT Edge enheter.

    Release to dev

  6. Klicka på utvecklingssteg för att se versionsloggar.

    Lanseringsloggar

  7. Om pipelinen misslyckas börjar du med att titta på loggarna. Du kan visa loggar genom att gå till sammanfattningen av pipelinekörningen och välja jobbet och aktiviteten. Om en viss aktivitet misslyckas kontrollerar du loggarna för den aktiviteten. Detaljerade anvisningar för hur du konfigurerar och använder loggar finns i Granska loggar för att diagnostisera pipelineproblem.

Nästa steg