Kontinuerlig integrering och kontinuerlig distribution till Azure IoT Edge-enheter (klassisk redigerare)
Gäller för kryssrutan: 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.
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:
- Uppgiftsversion
- Avancerat – Om tillämpligt anger du moduler som du inte vill skapa.
- Kontrollalternativ
- Miljövariabler
- Utdatavariabler
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.
Logga in på din Azure DevOps-organisation (
https://dev.azure.com/{your organization}
) och öppna projektet som innehåller din IoT Edge lösningslagringsplats.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.
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.
Följ anvisningarna för att skapa din pipeline.
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.
Välj Tomt jobb i stället för en mall.
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:
Om du vill skapa dina moduler i plattform amd64 för Linux-containrar väljer du ubuntu-18.04
Om du vill skapa dina moduler i plattform amd64 för Windows 1809-containrar måste du konfigurera en lokalt installerad agent i Windows.
Om du vill skapa dina moduler i plattform arm32v7 eller arm64 för Linux-containrar måste du konfigurera en lokalt installerad agent i Linux.
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 .
När alla fyra aktiviteter läggs till ser agentjobbet ut som i följande exempel:
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 imodule.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.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.
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.
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.
Öppna fliken Utlösare och markera kryssrutan Aktivera kontinuerlig integrering. Kontrollera att grenen som innehåller koden ingår.
- 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:
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.
När du uppmanas att välja en mall väljer du att börja med ett tomt jobb.
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.
Länka versionen till de byggartefakter som publiceras av bygg-pipelinen. Klicka på Lägg till i artefaktområdet.
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.
Ö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.
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.
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.
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 ideployment.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}" } }
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.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.
I menyn till vänster väljer du Pipelines och öppnar bygg-pipelinen som du skapade i början av den här artikeln.
Du kan utlösa ett byggjobb i bygg-pipelinen genom att välja knappen Kör pipeline längst upp till höger.
Granska inställningarna för Körningspipeline . Välj sedan Kör.
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.
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.
Klicka på utvecklingssteg för att se versionsloggar.
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
- Förstå IoT Edge distribution i Förstå IoT Edge distributioner för enskilda enheter eller i stor skala
- Gå igenom stegen för att skapa, uppdatera eller ta bort en distribution i Distribuera och övervaka IoT Edge moduler i stor skala.