Kontinuální integrace a průběžné nasazování do zařízení Azure IoT Edge (klasický editor)

Platí pro:IoT Edge 1,4 zaškrtnutí IoT Edge 1,4

Důležité

IoT Edge 1.4 je podporovaná verze. Pokud používáte starší verzi, přečtěte si článek Aktualizace IoT Edge.

Azure Pipelines zahrnuje integrovanou úlohu Azure IoT Edge, která vám pomůže osvojit si DevOps s aplikacemi Azure IoT Edge. Tento článek ukazuje, jak používat funkce průběžné integrace a průběžného nasazování služby Azure Pipelines k rychlému a efektivnímu sestavování, testování a nasazování aplikací do azure IoT Edge pomocí klasického editoru. Alternativně můžete použít YAML.

Diagram větví kontinuální integrace a průběžného vývoje pro vývoj a výrobu

V tomto článku se dozvíte, jak pomocí integrovaných úloh Azure IoT Edge pro Azure Pipelines vytvořit kanály sestavení a verze pro IoT Edge řešení. Každá úloha Azure IoT Edge přidaná do kanálu implementuje jednu z následujících čtyř akcí:

Akce Popis
Sestavení imagí modulů Vezme kód řešení IoT Edge a sestaví image kontejneru.
Nabízení imagí modulů Nasdílí image modulů do registru kontejneru, který jste zadali.
Generování manifestu nasazení Vezme soubor deployment.template.json a proměnné a pak vygeneruje poslední IoT Edge soubor manifestu nasazení.
Nasazení do zařízení IoT Edge Vytvoří IoT Edge nasazení do jednoho nebo více IoT Edge zařízení.

Pokud není uvedeno jinak, postupy v tomto článku nezkoumaly všechny funkce dostupné prostřednictvím parametrů úlohy. Další informace naleznete v následujících zdrojích:

Požadavky

  • Úložiště Azure Repos. Pokud ho nemáte, můžete ve svém projektu vytvořit nové úložiště Git. Pro účely tohoto článku jsme vytvořili úložiště s názvem IoTEdgeRepo.

  • Řešení IoT Edge potvrzené a nabízené do vašeho úložiště. Pokud chcete vytvořit nové ukázkové řešení pro testování tohoto článku, postupujte podle kroků v tématu Vývoj modulů Azure IoT Edge pomocí nástroje Visual Studio Code. Pro účely tohoto článku jsme v našem úložišti vytvořili řešení s názvem IoTEdgeSolution, které obsahuje kód pro modul s názvem filtermodule.

    Pro účely tohoto článku potřebujete jenom složku řešení vytvořenou šablonou IoT Edge v editoru Visual Studio Code nebo v sadě Visual Studio. Před pokračováním nemusíte tento kód sestavovat, nasdílovat, nasazovat ani ladit. Tyto procesy nastavíte v Azure Pipelines.

    Znát cestu k souboru deployment.template.json ve vašem řešení, která se používá v několika krocích. Pokud neznáte roli šablony nasazení, přečtěte si téma Informace o nasazení modulů a vytvoření tras.

    Tip

    Pokud vytváříte nové řešení, nejprve místně naklonujte úložiště. Když pak vytvoříte řešení, můžete ho vytvořit přímo ve složce úložiště. Odsud můžete snadno potvrdit a odeslat nové soubory.

  • Registr kontejneru, do kterého můžete nasdílet image modulů. Můžete použít Azure Container Registry nebo registr třetí strany.

  • Aktivní centrum Azure IoT s nejméně dvěma IoT Edge zařízeními pro testování samostatných testovacích a produkčních fází nasazení. Pokud chcete vytvořit IoT Edge zařízení v Linuxu nebo Windows, můžete postupovat podle článků rychlého startu.

Vytvoření kanálu buildu pro kontinuální integraci

V této části vytvoříte nový kanál buildu. Kanál nakonfigurujete tak, aby se automaticky spouštěl a publikoval protokoly sestavení při každém vracení změn řešení IoT Edge se změnami.

  1. Přihlaste se ke své organizaci Azure DevOps (https://dev.azure.com/{your organization}) a otevřete projekt, který obsahuje úložiště řešení IoT Edge.

    Snímek obrazovky, který ukazuje, jak otevřít projekt DevOps

  2. V nabídce levého podokna vašeho projektu vyberte Kanály. Uprostřed stránky vyberte Vytvořit kanál . Nebo pokud už máte kanály buildu, vyberte tlačítko Nový kanál v pravém horním rohu.

    Snímek obrazovky, který ukazuje, jak vytvořit nový kanál buildu

  3. V dolní části stránky Kde je váš kód? vyberte Použít klasický editor. Pokud chcete k vytvoření kanálů sestavení projektu použít YAML, projděte si průvodce YAML.

    Snímek obrazovky, který ukazuje, jak používat klasický editor

  4. Podle pokynů vytvořte kanál.

    1. Zadejte informace o zdroji nového kanálu buildu. Jako zdroj vyberte Azure Repos Git a pak vyberte projekt, úložiště a větev, kde se nachází kód řešení IoT Edge. Pak vyberte Pokračovat.

      Snímek obrazovky znázorňující, jak vybrat zdroj kanálu

    2. Místo šablony vyberte Prázdná úloha .

      Snímek obrazovky ukazující, jak začít s prázdnou úlohou pro kanál buildu

  5. Po vytvoření kanálu budete přesměrováni do editoru kanálu. Tady můžete změnit název kanálu, fond agentů a specifikaci agenta.

    Můžete vybrat fond hostovaný Microsoftem nebo fond v místním prostředí, který spravujete.

    V popisu kanálu zvolte správnou specifikaci agenta na základě vaší cílové platformy:

    Konfigurace specifikace agenta sestavení

  6. Váš kanál je předkonfigurovaný s úlohou s názvem Úloha agenta 1. Výběrem znaménka plus (+) přidáte do úlohy čtyři úkoly: Azure IoT Edge dvakrát, kopírovat soubory jednou a publikovat artefakty sestavení jednou. Vyhledejte jednotlivé úkoly a najeďte myší na jeho název, aby se zobrazilo tlačítko Přidat .

    Přidejte úlohu Azure IoT Edge.

    Po přidání všech čtyř úloh bude vaše úloha Agent vypadat jako v následujícím příkladu:

    Čtyři úlohy v kanálu buildu

  7. Vyberte první úlohu Azure IoT Edge a upravte ji. Tato úloha sestaví všechny moduly v řešení s cílovou platformou, kterou zadáte. Upravte úlohu s následujícími hodnotami:

    Parametr Popis
    Zobrazované jméno Zobrazovaný název se automaticky aktualizuje při změně pole Akce.
    Akce Vyberte Build module images (Sestavit image modulů).
    Soubor .template.json Vyberte tři tečky (...) a v úložišti, které obsahuje IoT Edge řešení, přejděte k souboru deployment.template.json.
    Výchozí platforma Vyberte vhodný operační systém pro vaše moduly na základě cílového IoT Edge zařízení.
    Výstupní proměnné Zadejte název odkazu, který chcete přidružit k cestě k souboru, který se generuje v souboru deployment.json, například edge.

    Další informace o této úloze a jejích parametrech najdete v tématu Úloha Azure IoT Edge.

    Tyto konfigurace používají úložiště imagí a značku, které jsou definované v module.json souboru k pojmenování a označení image modulu. Image modulu sestavení také pomáhají nahradit proměnné přesnou hodnotou, kterou definujete v module.json souboru. V sadě Visual Studio nebo Visual Studio Code zadáte skutečnou .env hodnotu v souboru. V Azure Pipelines nastavíte hodnotu na kartě Proměnné kanálu . V nabídce editoru kanálu vyberte kartu Variables (Proměnné ) a nakonfigurujte název a hodnotu takto:

    • ACR_ADDRESS: Hodnota přihlašovacího serveru Azure Container Registry. Hodnotu přihlašovacího serveru najdete na stránce přehledu registru kontejneru v Azure Portal.

    Pokud máte v projektu jiné proměnné, můžete zadat název a hodnotu na této kartě. Image modulu sestavení rozpoznávají pouze proměnné, které jsou ve ${VARIABLE} formátu. Ujistěte se, že ve svých souborech používáte **/module.json tento formát.

  8. Vyberte druhou úlohu Azure IoT Edge a upravte ji. Tato úloha odešle všechny image modulů do registru kontejneru, který vyberete.

    Parametr Popis
    Zobrazované jméno Zobrazovaný název se automaticky aktualizuje při změně pole Akce.
    Akce Vyberte Nasdílení imagí modulů.
    Typ registru kontejneru Použijte výchozí typ: Azure Container Registry.
    Předplatné Azure Zvolte vaše předplatné.
    Azure Container Registry Vyberte typ registru kontejneru, který používáte k ukládání imagí modulů. V závislosti na zvoleném typu registru se formulář změní. Pokud zvolíte Azure Container Registry, pomocí rozevíracích seznamů vyberte předplatné Azure a název vašeho registru kontejneru. Pokud zvolíte Generic Container Registry, vyberte Nový a vytvořte připojení služby registru.
    Soubor .template.json Vyberte tři tečky (...) a v úložišti, které obsahuje IoT Edge řešení, přejděte do souboru deployment.template.json.
    Výchozí platforma Vyberte odpovídající operační systém pro vaše moduly na základě cílového IoT Edge zařízení.
    Přidání přihlašovacích údajů registru do manifestu nasazení Zadáním hodnoty true přidáte přihlašovací údaje registru pro odesílání imagí Dockeru do manifestu nasazení.

    Další informace o této úloze a jejích parametrech najdete v tématu Úloha azure IoT Edge.

    Pokud máte pro hostování imagí modulů více registrů kontejnerů, musíte tuto úlohu duplikovat, vybrat jiný registr kontejneru a pomocí vynechat moduly v upřesňujícím nastavení obejít image, které nejsou určené pro tento konkrétní registr.

  9. Vyberte úlohu Kopírovat soubory a upravte ji. Pomocí této úlohy zkopírujte soubory do pracovního adresáře artefaktů.

    Parametr Popis
    Zobrazované jméno Použijte výchozí název nebo přizpůsobte
    Zdrojová složka Složka se soubory, které se mají zkopírovat.
    Obsah Přidejte dva řádky: deployment.template.json a **/module.json. Tyto dva soubory slouží jako vstupy pro vygenerování manifestu nasazení IoT Edge.
    Cílová složka Zadejte proměnnou $(Build.ArtifactStagingDirectory). Další informace o popisu najdete v tématu Sestavení proměnných .

    Další informace o této úloze a jejích parametrech najdete v tématu Kopírování souborů.

  10. Vyberte úlohu Publish Build Artifacts (Publikovat artefakty sestavení ) a upravte ji. Zadejte cestu k pracovnímu adresáři artefaktů k úloze, aby bylo možné cestu publikovat do kanálu verze.

    Parametr Popis
    Zobrazované jméno Použijte výchozí název nebo si ho přizpůsobte.
    Cesta k publikování Zadejte proměnnou $(Build.ArtifactStagingDirectory). Další informace najdete v tématu Vytváření proměnných .
    Název artefaktu Použijte výchozí název: drop
    Umístění publikování artefaktů Použijte výchozí umístění: Azure Pipelines.

    Další informace o této úloze a jejích parametrech najdete v tématu Publikování úlohy artefaktů sestavení.

  11. Otevřete kartu Triggery a zaškrtněte políčko Povolit kontinuální integraci. Ujistěte se, že je zahrnuta větev obsahující váš kód.

Snímek obrazovky znázorňující, jak zapnout trigger kontinuální integrace

  1. V rozevíracím seznamu Uložit frontu & vyberte Uložit.

Tento kanál je teď nakonfigurovaný tak, aby se spouštěl automaticky, když do úložiště nasdílíte nový kód. Poslední úloha, publikování artefaktů kanálu, aktivuje kanál verze. Pokračujte k další části a sestavte kanál verze.

Vytvoření kanálu verze pro průběžné nasazování

V této části vytvoříte kanál verze, který je nakonfigurovaný tak, aby se spouštěl automaticky, když kanál sestavení zahodí artefakty, a zobrazí protokoly nasazení ve službě Azure Pipelines.

Vytvořte nový kanál a přidejte novou fázi:

  1. Na kartě Vydané verze v části Kanály zvolte + Nový kanál. Nebo pokud už máte kanály vydaných verzí, zvolte tlačítko + Nový a vyberte + Nový kanál verze.

    Přidání kanálu verze pomocí tlačítka + Nový kanál

  2. Po zobrazení výzvy k výběru šablony zvolte, jestli chcete začít s prázdnou úlohou.

    Začněte s prázdnou úlohou pro kanál verze.

  3. Kanál nové verze se inicializuje v jedné fázi s názvem Fáze 1. Přejmenujte fázi 1 na vývoj a zacházejte s ní jako s kanálem průběžného nasazování pro vaše vývojové prostředí. Kanály průběžného nasazování mají obvykle několik fází, včetně vývoje, přípravného a produkčního prostředí. Můžete použít různé názvy a vytvářet další na základě vašich postupů DevOps. Po přejmenování zavřete okno podrobností fáze.

    Kanál verze můžete také přejmenovat tak, že nahoře vyberete text Nový kanál vydané verze.

  4. Propojte vydání s artefakty sestavení, které jsou publikovány kanálem sestavení. Klikněte na Přidat v oblasti artefaktů.

    Klikněte na přidat v oblasti artefaktů rozhraní.

  5. Na stránce Přidat artefakt jako typ zdroje vyberte Sestavit. Zvolte projekt a kanál sestavení, který jste vytvořili. Pokud chcete, můžete změnit alias zdroje na něco popisnějšího. Pak vyberte Přidat.

    Na stránce Přidat artefakt vyberte Přidat a vytvořte artefakt.

  6. Otevřete triggery artefaktů a výběrem přepínače povolte trigger průběžného nasazování. Nová verze se teď vytvoří pokaždé, když bude k dispozici nové sestavení.

    Otevřete triggery artefaktů a přepnutím povolte trigger průběžného nasazování.

  7. Fáze vývoje je předem nakonfigurovaná s jednou úlohou a nulovými úkoly. V nabídce kanálu vyberte Úkoly a pak zvolte fázi vývoje . Vyberte úlohu Agent a změňte její Zobrazovaný název na Qa (Kontrola kvality). Můžete nakonfigurovat podrobnosti o úloze agenta, ale úloha nasazení není nezávislá na platformě, takže můžete použít libovolnou specifikaci agenta ve zvoleném fondu agentů.

    Zobrazení úkolů pro vývojovou fázi na kartě Úkoly

  8. V úloze kontroly kvality vyberte znaménko plus (+) a přidejte dva úkoly. Vyhledejte a přidejte Azure IoT Edge dvakrát.

  9. Vyberte první úlohu Azure IoT Edge a nakonfigurujte ji s následujícími hodnotami:

    Parametr Popis
    Zobrazované jméno Zobrazovaný název se automaticky aktualizuje při změně pole Akce.
    Akce Vyberte Generate deployment manifest.
    Soubor .template.json Zadejte cestu: $(System.DefaultWorkingDirectory)/Drop/drop/deployment.template.json. Cesta se publikuje z kanálu sestavení.
    Výchozí platforma Vyberte odpovídající operační systém pro vaše moduly na základě cílového IoT Edge zařízení.
    Výstupní cesta Zadejte cestu $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Tato cesta je konečný soubor manifestu nasazení IoT Edge.

    Tyto konfigurace pomáhají nahradit adresy URL image modulu v deployment.template.json souboru. Manifest Generovat nasazení také pomáhá nahradit proměnné přesnou hodnotou, kterou jste definovali deployment.template.json v souboru. V sadě Visual Studio nebo Visual Studio Code zadáváte skutečnou hodnotu v .env souboru. V Azure Pipelines nastavíte hodnotu na kartě Proměnné kanálu verze . Přejděte na kartu Proměnné a nakonfigurujte název a hodnotu následujícím postupem:

    • ACR_ADDRESS: Hodnota přihlašovacího serveru Azure Container Registry. Přihlašovací server můžete načíst ze stránky Přehled registru kontejneru v Azure Portal.
    • ACR_PASSWORD: Heslo Azure Container Registry.
    • ACR_USER: Vaše uživatelské jméno Azure Container Registry.

    Pokud máte v projektu další proměnné, můžete zadat název a hodnotu na této kartě. Manifest Generovat nasazení dokáže rozpoznat pouze proměnné, které jsou v ${VARIABLE} příchuti. Ujistěte se, že ve svých souborech používáte *.template.json tuto příchuť.

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

    Konfigurace proměnných pro kanál verze na kartě Proměnné

  10. Vyberte druhou úlohu Azure IoT Edge a nakonfigurujte ji s následujícími hodnotami:

    Parametr Popis
    Zobrazované jméno Zobrazovaný název se automaticky aktualizuje při změně pole Akce.
    Akce Vyberte Deploy to IoT Edge devices.
    Soubor nasazení Zadejte cestu $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Tato cesta je soubor IoT Edge souboru manifestu nasazení.
    Předplatné Azure Vyberte předplatné, které obsahuje vaše IoT Hub.
    název IoT Hub Vyberte centrum IoT.
    Volba jednoho nebo více zařízení Zvolte, jestli chcete kanál verze nasadit na jedno nebo více zařízení. Pokud nasadíte na jedno zařízení, zadejte ID IoT Edge zařízení. Pokud nasazujete do více zařízení, zadejte cílovou podmínku zařízení. Cílová podmínka je filtr, který odpovídá sadě IoT Edge zařízení v IoT Hub. Pokud chcete jako podmínku použít značky zařízení, musíte aktualizovat odpovídající značky zařízení pomocí IoT Hub dvojčete zařízení. V upřesňujícím nastavení aktualizujte ID nasazení IoT Edge a prioritu nasazení IoT Edge. Další informace o vytváření nasazení pro více zařízení najdete v tématu Vysvětlení IoT Edge automatických nasazení.
    ID zařízení nebo cílová podmínka V závislosti na předchozím výběru zadejte ID zařízení nebo cílovou podmínku , která se má nasadit na více zařízení.
    Pokročilý Jako ID nasazení IoT Edge zadejte $(System.TeamProject)-$(Release.EnvironmentName). Tato proměnná mapuje název projektu a verze na id nasazení IoT Edge.

    Pokud váš úkol zahrnuje použití image, která se nachází v privátním důvěryhodném registru Dockeru, který není viditelný pro veřejný cloud, můžete nastavit proměnnou prostředí SKIP_MODULE_IMAGE_VALIDATION na hodnotu a true přeskočit tak ověření image.

    Přidání úloh Azure IoT Edge pro fázi vývoje

  11. Vyberte Uložit a uložte změny do kanálu nové verze. Vraťte se do zobrazení kanálu tak, že v nabídce vyberete kartu Kanál .

Poznámka

V úlohách Azure IoT Edge v Azure DevOps se zatím nepodporují vrstvené nasazení.

K vytvoření nasazení ve vrstveném nasazení ale můžete použít úlohu Azure CLI v Azure DevOps . Pro hodnotu Inline Script (Vložený skript ) můžete použít příkaz az iot edge deployment create:

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

Ověření IoT Edge CI/CD pomocí kanálů sestavení a verze

Pokud chcete aktivovat úlohu sestavení, můžete buď odeslat potvrzení do úložiště zdrojového kódu, nebo ho aktivovat ručně. V této části ručně aktivujete kanál CI/CD a otestujete, že funguje. Pak ověřte, že nasazení proběhlo úspěšně.

  1. V nabídce levého podokna vyberte Kanály a otevřete kanál sestavení, který jste vytvořili na začátku tohoto článku.

  2. Úlohu sestavení v kanálu sestavení můžete aktivovat tak, že v pravém horním rohu vyberete tlačítko Spustit kanál .

    Ruční aktivace kanálu sestavení pomocí tlačítka Spustit kanál

  3. Zkontrolujte nastavení spustit kanál . Pak vyberte Spustit.

    Zadejte možnosti kanálu spuštění a vyberte Spustit.

  4. Vyberte Úloha agenta 1 a watch průběh spuštění. Výběrem úlohy můžete zkontrolovat protokoly výstupu úlohy.

    Kontrola výstupu protokolu úlohy

  5. Pokud se kanál sestavení úspěšně dokončí, aktivuje se fáze vydání do fáze vývoje . Úspěšná verze pro vývoj vytvoří IoT Edge nasazení pro cíl IoT Edge zařízení.

    Vydání do vývoje

  6. Kliknutím na vývojová fáze zobrazíte protokoly vydaných verzí.

    Protokoly vydaných verzí

  7. Pokud váš kanál selhává, začněte tím, že se podíváte na protokoly. Protokoly můžete zobrazit tak, že přejdete na souhrn spuštění kanálu a vyberete úlohu a úlohu. Pokud určitý úkol selhává, zkontrolujte protokoly pro daný úkol. Podrobné pokyny ke konfiguraci a používání protokolů najdete v tématu Kontrola protokolů pro diagnostiku problémů s kanály.

Další kroky