Kontinuerlig integrering och kontinuerlig distribution till Azure IoT Edge-enheter
Gäller för: IoT Edge 1.5 IoT Edge 1.4
Viktigt!
IoT Edge 1.5 LTS och IoT Edge 1.4 LTS stöds. IoT Edge 1.4 LTS upphör den 12 november 2024. 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.
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.
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 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.
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.Välj den lagringsplats som du skapar en pipeline för.
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.
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 .
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.
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.
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.
Välj Spara i listrutan Spara och kör längst upp till höger.
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 .
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 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 + Ny 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, 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.
Länka versionen till de byggartefakter som publiceras av bygg-pipelinen. Välj Lägg till i området artefakter.
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.
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.
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 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 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 . 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 Portal.
- 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}" } }
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.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.
I den vänstra menyn 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ör pipeline . Välj sedan Kör.
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.
Om bygg-pipelinen har slutförts utlöses en version till utvecklingsfasen . Den lyckade utvecklingsversionen skapar IoT Edge-distribution till IoT Edge-målenheter.
Välj 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 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
- Förstå IoT Edge-distributionen 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.