Dela via


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

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.

Azure Pipelines innehåller en inbyggd Azure IoT Edge-uppgift som hjälper dig att använda 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 skapa, testa och distribuera program snabbt och effektivt 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 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

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

  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.

  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 pipelinen 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. Din pipeline ä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 aktiviteterna 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 för 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 Description
    Display name 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ål-IoT Edge-enhet.
    Utdatavariabler Ange ett referensnamn som ska associeras med den filsökväg där din deployment.json fil genererar, till exempel edge.

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

    Dessa konfigurationer 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 namnet och värdet enligt följande:

    • ACR_ADDRESS: Ditt Azure Container Registry-inloggningsservervärde. Du hittar värdet för inloggningsservern på containerregistrets översiktssida i Azure-portalen.

    Om du har andra variabler i projektet kan du ange namn och värde på den här fliken. Avbildningar av byggmoduler känner bara igen 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 Description
    Display name 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 modulavbildningarna. 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å ditt containerregister. 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ål-IoT Edge-enhet.
    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 modulavbildningarna måste du duplicera den här uppgiften, välja olika containerregister och använda Bypass-moduler i 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 Description
    Display name 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 en katalogsökväg för artefaktlagring till uppgiften så att sökvägen kan publiceras till versionspipelinen.

    Parameter Description
    Display name Använd standardnamnet eller anpassa.
    Sökväg att publicera 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 och kö .

Den här pipelinen är nu konfigurerad att köras automatiskt när du skickar ny kod till lagringsplatsen. Den sista uppgiften, som publicerar pipelineartefakter, 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 + 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 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 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.

Kommentar

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