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

Platí pro:IoT Edge 1.4 zaškrtnutí IoT Edge 1.4

S aplikacemi Azure IoT Edge můžete snadno osvojit DevOps pomocí integrovaných úloh Azure IoT Edge v Azure Pipelines. Tento článek ukazuje, jak můžete pomocí Azure Pipelines sestavovat, testovat a nasazovat moduly Azure IoT Edge pomocí YAML. Případně můžete použít klasický editor.

Diagram – větve CI a CD pro vývoj a produkci

V tomto článku se dozvíte, jak pomocí integrovaných úloh Azure IoT Edge pro Azure Pipelines vytvářet 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.
Nasdílení 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 konečný soubor manifestu nasazení IoT Edge.
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 neprobádají 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 v 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 nasdílené do ú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 a ladění modulů v editoru Visual Studio Code nebo Vývoj a ladění modulů jazyka C# v sadě Visual Studio. Pro účely tohoto článku jsme v našem úložišti vytvořili řešení s názvem IoTEdgeSolution, které obsahuje kód modulu s názvem filtermodule.

    V tomto článku potřebujete jenom složku řešení vytvořenou šablonami 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 roli šablony nasazení neznáte, podívejte se na informace o nasazení modulů a vytvář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, ve kterém můžete odesílat 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.

Další informace o používání Azure Repos najdete v tématu Sdílení kódu se sadou Visual Studio a Azure Repos

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

V této části vytvoříte nový kanál sestavení. Kanál nakonfigurujete tak, aby se spouštěl automaticky, když se změnami v ukázkovém IoT Edge řešení a publikujete protokoly sestavení.

  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.

    Otevření projektu DevOps

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

    Vytvoření nového kanálu sestavení pomocí tlačítka Nový kanál

  3. Na stránce Kde je váš kód? vyberte Azure Repos Git YAML. Pokud chcete k vytvoření kanálů sestavení projektu použít klasický editor, projděte si průvodce klasickým editorem.

  4. Vyberte úložiště, pro které vytváříte kanál.

    Vyberte úložiště pro kanál buildu.

  5. Na stránce Konfigurace kanálu vyberte Úvodní kanál. Pokud už existuje soubor YAML služby Azure Pipelines, který chcete použít k vytvoření tohoto kanálu, můžete vybrat Existující soubor YAML služby Azure Pipelines a zadat větev a cestu v úložišti k souboru.

    Výběrem úvodního kanálu nebo existujícího souboru YAML služby Azure Pipelines spusťte kanál sestavení.

  6. Na stránce Kontrola kanálu YAML můžete vybrat výchozí název azure-pipelines.yml a přejmenovat konfigurační soubor kanálu.

    Výběrem možnosti Zobrazit asistenta otevřete paletu Úkoly .

    Výběrem možnosti Zobrazit asistenta otevřete paletu Úkolů.

  7. Pokud chcete přidat úkol, umístěte kurzor na konec YAML nebo na místo, kam chcete přidat pokyny pro úkol. Vyhledejte a vyberte Azure IoT Edge. Parametry úkolu vyplňte následujícím způsobem. Pak vyberte Přidat.

    Parametr Popis
    Akce Vyberte Sestavit image modulů.
    Soubor .template.json Zadejte cestu k souboru deployment.template.json v úložišti, které obsahuje vaše řešení IoT Edge.
    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í.

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

    Přidání úkolů do kanálu pomocí palety Úkolů

    Tip

    Po přidání každého úkolu editor automaticky zvýrazní přidané řádky. Pokud chcete zabránit náhodnému přepsání, zrušte výběr řádků a před přidáním dalších úkolů poskytněte nové místo pro další úkol.

  8. Opakováním tohoto postupu přidejte další tři úlohy s následujícími parametry:

    • Úloha: Azure IoT Edge

      Parametr Popis
      Akce Vyberte Nasdílení imagí modulů.
      Typ registru kontejneru Použijte výchozí typ: Azure Container Registry.
      Předplatné Azure Vyberte své předplatné.
      Azure Container Registry Zvolte registr, který chcete použít pro kanál.
      Soubor .template.json Zadejte cestu k souboru deployment.template.json v úložišti, které obsahuje vaše řešení IoT Edge.
      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í.

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

    • Úkol: Kopírování souborů

      Parametr Popis
      Zdrojová složka Zdrojová složka, ze které chcete kopírovat. Prázdný je kořen úložiště. Pokud soubory nejsou v úložišti, použijte proměnné. Příklad: $(agent.builddirectory).
      Obsah Přidejte dva řádky: deployment.template.json a **/module.json.
      Cílová složka Zadejte proměnnou $(Build.ArtifactStagingDirectory). 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 Úloha kopírování souborů.

    • Úloha: Publikování artefaktů sestavení

      Parametr Popis
      Cesta k publikování Zadejte proměnnou $(Build.ArtifactStagingDirectory). Informace o popisu najdete v tématu Sestavení proměnných .
      Název artefaktu Zadejte 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í.

  9. V rozevíracím seznamu Uložit a spustit v pravém horním rohu vyberte Uložit.

  10. Trigger pro průběžnou integraci je ve výchozím nastavení povolený pro váš kanál YAML. Pokud chcete tato nastavení upravit, vyberte kanál a v pravém horním rohu klikněte na Upravit . Vyberte Další akce vedle tlačítka Spustit v pravém horním rohu a přejděte na Aktivační události. Průběžná integrace se pod názvem vašeho kanálu zobrazuje jako povolená. Pokud chcete zobrazit podrobnosti o triggeru, zaškrtněte políčko Přepsat trigger kontinuální integrace YAML odsud .

    Pokud chcete zkontrolovat nastavení triggeru kanálu, přečtěte si téma Aktivační události v části Další akce.

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 automaticky spustil, když kanál buildu 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ě Releases (Vydané verze ) v části Pipelines (Kanály) zvolte + New pipeline (+ Nový kanál). Nebo pokud už máte kanály 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, že chcete začít prázdnou úlohou.

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

  3. Nový kanál verze se inicializuje v jedné fázi s názvem Fáze 1. Přejmenujte Fázi 1 na vývoj a považujte ji za kanál 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í, mezi které patří vývoj, příprava a prod. Můžete použít různé názvy a vytvářet další na základě vašich postupů v DevOps. Po přejmenování zavřete okno podrobností fáze.

    Kanál verze můžete také přejmenovat tak, že v horní části vyberete text Nový kanál verze.

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

    V oblasti artefaktů rozhraní klikněte na přidat.

  5. Na stránce Přidat artefakt jako Typ zdroje vyberte Sestavení. Zvolte projekt a kanál buildu, 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ý build.

    Otevřete triggery artefaktů a přepněte na povolení triggeru průběžného nasazování.

  7. Fáze vývoje je předem nakonfigurovaná s jednou úlohou a žádnými úkoly. V nabídce kanálu vyberte Úlohy 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í nerozlišuje platformu, takže můžete použít jakoukoli specifikaci agenta ve zvoleném fondu agentů.

    Zobrazení úkolů pro vaši 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 pro ni následující hodnoty:

    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 buildu.
    Výchozí platforma Vyberte vhodný operační systém pro vaše moduly na základě vašeho cílového IoT Edge zařízení.
    Výstupní cesta Vložte cestu $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Tato cesta je konečným souborem manifestu nasazení IoT Edge.

    Tyto konfigurace pomáhají nahradit adresy URL obrázků 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. Ve VS/VS Code zadáváte skutečnou .env hodnotu v souboru. V Azure Pipelines nastavíte hodnotu na kartě Proměnné kanálu verze . Přejděte na kartu Proměnné a následujícím postupem nakonfigurujte název a hodnotu:

    • 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: Vaše Azure Container Registry heslo.
    • ACR_USER: Vaše uživatelské jméno Azure Container Registry.

    Pokud máte v projektu jiné proměnné, můžete zadat název a hodnotu na této kartě. Manifest Generovat nasazení dokáže rozpoznat pouze proměnné, které jsou ve ${VARIABLE} variantě. Ujistěte se, že ve svých souborech používáte *.template.json tento 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 pro ni následující hodnoty:

    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í Vložte cestu $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json. Tato cesta je souborem 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 do jednoho nebo několika zařízení. Pokud nasadíte do jednoho 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í IoT Hub dvojčete zařízení. V upřesňujícím nastavení aktualizujte ID nasazení IoT Edge a IoT Edge prioritu nasazení. Další informace o vytvoření nasazení pro více zařízení najdete v tématu Principy automatického nasazení IoT Edge.
    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 pro nasazení do 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 true a přeskočit ověřování image.

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

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

Ověření IoT Edge CI/CD s využitím kanálů buildu 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 buildu, který jste vytvořili na začátku tohoto článku.

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

    Ruční aktivace kanálu buildu 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 sledujte 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 buildu ú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í.

    Release to dev

  6. Kliknutím na Fáze vývoje zobrazíte protokoly 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á úloha selhává, zkontrolujte protokoly pro danou úlohu. Podrobné pokyny ke konfiguraci a používání protokolů najdete v tématu Kontrola protokolů pro diagnostiku problémů s kanály.

Další kroky