Kontinuerlig integrering och kontinuerlig distribution till Azure IoT Edge-enheter

Gäller för:Bockmarkering för 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.

Du kan enkelt använda DevOps med dina Azure IoT Edge-program med de inbyggda Azure IoT Edge-uppgifterna i Azure Pipelines. Den här artikeln visar hur du kan använda Azure Pipelines för att skapa, testa och distribuera Azure IoT Edge-moduler med YAML. Du kan också använda den klassiska redigeraren.

Diagram över filialer 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 Azure Repos-lagringsplats. Om du inte har en kan du skapa en ny Git-lagringsplats i projektet. I den här artikeln har vi skapat en lagringsplats med namnet IoTEdgeRepo.

  • En IoT Edge-lösning har checkats in och push-överförts till din lagringsplats. 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.

    För den här artikeln behöver du bara den lösningsmapp 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 den deployment.template.json filen 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.

    Dricks

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

Mer information om hur du använder Azure Repos finns i Dela din kod med Visual Studio och Azure Repos.

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 när du checkar in ändringar i IoT Edge-exempellösningen och publicerar byggloggar.

  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 i den vänstra menyn 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 med knappen Ny pipeline .

  3. På sidan Var är din kod? väljer du Azure Repos Git YAML. Om du vill använda den klassiska redigeraren för att skapa projektets byggpipelines kan du läsa den klassiska redigeringsguiden.

  4. Välj den lagringsplats som du skapar en pipeline för.

    Skärmbild som visar hur du väljer lagringsplatsen för bygg-pipelinen.

  5. På sidan Konfigurera pipeline väljer du Startpipeline. Om du har en befintlig YAML-fil för Azure Pipelines som du vill använda för att skapa den här pipelinen kan du välja Befintlig YAML-fil för Azure Pipelines och ange grenen och sökvägen i lagringsplatsen till filen.

    Välj Startpipeline eller befintlig YAML-fil för Azure Pipelines för att påbörja bygg-pipelinen

  6. På sidan Granska yaml-pipelinen kan du välja standardnamnet azure-pipelines.yml för att byta namn på pipelinens konfigurationsfil.

    Välj Visa assistent för att öppna paletten Uppgifter .

    Skärmbild som visar hur du väljer Visa assistent för att öppna uppgiftspaletten.

  7. Om du vill lägga till en uppgift placerar du markören i slutet av YAML eller var du vill att instruktionerna för uppgiften ska läggas till. Sök efter och välj Azure IoT Edge. Fyll i aktivitetens parametrar på följande sätt. Välj sedan Lägg till.

    Parameter Description
    Åtgärd Välj Skapa modulbilder.
    .template.json fil Ange sökvägen till den deployment.template.json filen på lagringsplatsen som innehåller din IoT Edge-lösning.
    Standardplattform Välj lämpligt operativsystem för dina moduler baserat på din mål-IoT Edge-enhet.

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

    Skärmbild av paletten Använd uppgifter och hur du lägger till uppgifter i pipelinen.

    Dricks

    När varje uppgift har lagts till markerar redigeraren automatiskt de tillagda raderna. Om du vill förhindra oavsiktlig överskrivning avmarkerar du raderna och anger ett nytt utrymme för nästa uppgift innan du lägger till ytterligare uppgifter.

  8. Upprepa den här processen om du vill lägga till ytterligare tre uppgifter med följande parametrar:

    • Uppgift: Azure IoT Edge

      Parameter Description
      Åtgärd Välj Push-modulbilder.
      Containerregistertyp Använd standardtypen: Azure Container Registry.
      Azure-prenumeration Välj din prenumeration.
      Azure Container Registry Välj det register som du vill använda för pipelinen.
      .template.json fil Ange sökvägen till den deployment.template.json filen på lagringsplatsen som innehåller din IoT Edge-lösning.
      Standardplattform Välj lämpligt operativsystem för dina moduler baserat på din mål-IoT Edge-enhet.

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

    • Uppgift: Kopiera filer

      Parameter Description
      Källmapp Källmappen som ska kopieras från. Tom är lagringsplatsens rot. Använd variabler om filerna inte finns på lagringsplatsen. Exempel: $(agent.builddirectory).
      Innehåll Lägg till två rader: deployment.template.json och **/module.json.
      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.

    • Uppgift: Publicera byggartefakter

      Parameter Description
      Sökväg att publicera Ange variabeln $(Build.ArtifactStagingDirectory). Mer information om beskrivningen finns i Skapa variabler .
      Artefaktnamn Ange standardnamnet: drop
      Artefaktpublicera plats Använd standardplatsen: Azure Pipelines

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

  9. Välj Spara i listrutan Spara och kör längst upp till höger.

  10. Utlösaren för kontinuerlig integrering är aktiverad som standard för YAML-pipelinen. Om du vill redigera de här inställningarna väljer du din pipeline och väljer Redigera längst upp till höger. Välj Fler åtgärder bredvid knappen Kör längst upp till höger och gå till Utlösare. Kontinuerlig integrering visas som aktiverad under pipelinens namn. Om du vill se information om utlösaren markerar du rutan Åsidosätt yaml-utlösaren för kontinuerlig integrering härifrån .

Skärmbild som visar hur du granskar pipelinens utlösarinställningar från menyn Utlösare under Fler åtgärder.

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 + Ny 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, kallat Steg 1. Byt namn på steg 1 för att utveckla och behandla det som en pipeline för kontinuerlig distribution för din utvecklingsmiljö. 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 sceninformationsfönstret 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 området artefakter.

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

  5. På 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. Utvecklingsfasen är förkonfigurerad med ett jobb och noll aktiviteter. På pipelinemenyn väljer du Uppgifter och sedan utvecklingssteget. Välj agentjobbetoch ä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 uppgifter 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 Description
    Display name 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ål-IoT Edge-enhet.
    Utmatningssö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 ersätter 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ärde 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 . Gå till fliken Variabler och konfigurera namnet och värdet enligt följande:

    • ACR_ADDRESS: Ditt Azure Container Registry-inloggningsservervärde. Du kan hämta inloggningsservern från sidan Översikt i containerregistret i Azure-portalen.
    • ACR_PASSWORD: Ditt Azure Container Registry-lösenord.
    • ACR_USER: Ditt Användarnamn för Azure Container Registry.

    Om du har andra variabler i projektet kan du ange namn och värde på den här fliken. Distributionsmanifestet Generera 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 versionspipelinen på fliken Variabler

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

    Parameter Description
    Display name 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 fil-IoT Edge-distributionsmanifestfilen.
    Azure-prenumeration Välj den prenumeration som innehåller din IoT Hub.
    Namn på IoT Hub 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:t. 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-enhetstvillingen. Uppdatera IoT Edge-distributions-ID :t och IoT Edge-distributionsprioriteten i de avancerade inställningarna. Mer information om hur du skapar en distribution för flera enheter finns i Förstå automatiska IoT Edge-distributioner.
    Enhets-ID eller målvillkor Beroende på föregående val anger du ett enhets-ID eller målvillkor som ska distribueras till flera enheter.
    Avancerad För IoT Edge-distributions-ID 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 ställa in SKIP_MODULE_IMAGE_VALIDATION miljövariabeln för true att hoppa över bildverifiering.

    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.

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 den vänstra menyn 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ör pipeline . Välj sedan Kör.

    Ange pipelinealternativ för körning och välj Kör

  4. Välj Agentjobb 1 för att se 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 till IoT Edge-målenheter.

    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 jobb och uppgift. Om en viss uppgift misslyckas kontrollerar du loggarna för den uppgiften. Detaljerade anvisningar för hur du konfigurerar och använder loggar finns i Granska loggar för att diagnostisera pipelineproblem.

Nästa steg