持續整合和持續部署至 Azure IoT Edge 裝置

適用於:IoT Edge 1.5 複選標記 IoT Edge 1.5 IoT Edge 1.4 複選標記 IoT Edge 1.4

重要

支援 IoT Edge 1.5 LTS 和 IoT Edge 1.4 LTS 版本。 IoT Edge 1.4 LTS 於 2024 年 11 月 12 日結束生命週期。 如果您是舊版,請參閱更新 IoT Edge

您可以使用 Azure Pipelines 中的內建 Azure IoT Edge 工作,輕鬆地使用 Azure IoT Edge 應用程式來採用 DevOps。 本文示範如何使用 Azure Pipelines 來建置、測試及部署使用 YAML 的 Azure IoT Edge 模組。 或者,您可以使用 傳統編輯器

用於開發和生產的持續整合和持續開發分支圖表。

在本文中,您將瞭解如何使用適用於 Azure Pipelines 的內 建 Azure IoT Edge 工作 ,為您的 IoT Edge 解決方案建立建置和發行管線。 新增至管線的每個 Azure IoT Edge 工作都會實作下列四個動作之一:

動作 描述
建置模組映像 採用IoT Edge解決方案程式碼並建置容器映像。
推送模組映像 將模組映像推送至您指定的容器登錄。
產生部署指令清單 取得deployment.template.json檔案和變數,然後產生最終的IoT Edge部署指令清單檔案。
部署到 IoT Edge 裝置 建立一或多個IoT Edge裝置的IoT Edge部署。

除非另有指定,否則本文中的程式不會探索透過工作參數提供的所有功能。 如需詳細資訊,請參閱以下資源:

必要條件

  • Azure Repos 存放庫。 如果您沒有 Git 存放庫,您可以在 專案中建立新的 Git 存放庫。 在本文中,我們建立了名為 IoTEdgeRepo的存放庫。

  • 已認可並推送至存放庫的IoT Edge解決方案。 如果您想要建立新的範例解決方案以測試本文,請遵循使用 Visual Studio Code 開發 Azure IoT Edge 模組中的步驟。 在本文中,我們在名為 IoTEdgeSolution的存放庫中建立了解決方案,其中包含名為 filtermodule 的模組程序代碼。

    在本文中,您只需要 Visual Studio Code 或 Visual Studio 中 IoT Edge 範本所建立的解決方案資料夾。 在繼續之前,您不需要建置、推送、部署或偵錯此程序代碼。 您將在 Azure Pipelines 中設定這些程式。

    瞭解解決方案中deployment.template.json檔案的路徑,這會在數個步驟中使用。 如果您不熟悉部署範本的角色,請參閱 瞭解如何部署模組和建立路由

    提示

    如果您要建立新的解決方案,請先在本機複製存放庫。 然後,當您建立方案時,您可以選擇直接在存放庫資料夾中建立它。 您可以輕鬆地認可並推送新檔案。

  • 您可以在其中推送模組映像的容器登錄。 您可以使用 Azure Container Registry 或第三方登錄。

  • 具有至少兩個IoT Edge裝置的作用中 Azure IoT 中樞 ,用於測試個別測試和生產部署階段。 您可以遵循快速入門文章,在 LinuxWindows 上建立 IoT Edge 裝置

如需使用 Azure Repos 的詳細資訊,請參閱 與 Visual Studio 和 Azure Repos 共用您的程式代碼。

建立建置管線以進行持續整合

在本節中,您會建立新的組建管線。 當您簽入範例 IoT Edge 解決方案的任何變更並發佈組建記錄時,您可以設定管線以自動執行。

  1. 登入您的 Azure DevOps 組織 (https://dev.azure.com/{your organization}) 並開啟包含 IoT Edge 解決方案存放庫的專案。

    顯示如何開啟DevOps專案的螢幕快照。

  2. 從專案的左窗格功能表中,選取 [ 管線]。 選取 頁面中央的 [建立管線 ]。 或者,如果您已經有組建管線,請選取右上方的 [ 新增管線 ] 按鈕。

    顯示如何使用 [新增管線] 按鈕建立新組建管線的螢幕快照。

  3. 在 [ 您的程式代碼在哪裡?] 頁面上,選取 [Azure Repos Git YAML]。 如果您想要使用傳統編輯器來建立專案的建置管線,請參閱 傳統編輯器指南

  4. 選取您要為其建立管線的存放庫。

    顯示如何選取組建管線存放庫的螢幕快照。

  5. 在 [ 設定管線] 頁面上,選取 [ 入門管線]。 如果您有想要用來建立此管線的預先存在 Azure Pipelines YAML 檔案,您可以選取 現有的 Azure Pipelines YAML 檔案 ,並將存放庫中的分支和路徑提供給檔案。

    選取 [入門管線] 或 [現有的 Azure Pipelines YAML 檔案] 以開始建置管線

  6. 在 [ 檢閱管線 YAML ] 頁面上,您可以選取預設名稱 azure-pipelines.yml 來重新命名管線的組態檔。

    選取 [ 顯示小幫手 ] 以開啟 [ 工作 ] 調色盤。

    顯示如何選取 [顯示助理] 以開啟 [工作選擇區] 的螢幕快照。

  7. 若要新增工作,請將游標放在 YAML 結尾,或您想要在何處新增工作的指示。 搜尋並選取 [Azure IoT Edge]。 填寫工作的參數,如下所示。 然後選取 [新增]

    參數 描述
    動作 選取 [ 建置模組映射]。
    .template.json檔案 提供包含IoT Edge解決方案之存放庫中deployment.template.json檔案的路徑
    默認平臺 根據您的目標 IoT Edge 裝置,為您的模組選取適當的作業系統。

    如需此工作及其參數的詳細資訊,請參閱 Azure IoT Edge 工作

    使用工作選擇區以及如何將工作新增至管線的螢幕快照。

    提示

    新增每個工作之後,編輯器會自動反白顯示新增的行。 若要防止意外覆寫,請取消選取這幾行,併為下一個工作提供新的空間,再新增其他工作。

  8. 重複此程式,再新增三個具有下列參數的工作:

    • 工作: Azure IoT Edge

      參數 描述
      動作 選取 [ 推送模組映射]。
      容器登錄類型 使用預設類型: Azure Container Registry
      Azure 訂用帳戶 選取您的訂用帳戶。
      Azure Container Registry 選擇您要用於管線的登錄。
      .template.json檔案 提供包含IoT Edge解決方案之存放庫中deployment.template.json檔案的路徑
      默認平臺 根據您的目標 IoT Edge 裝置,為您的模組選取適當的作業系統。

      如需此工作及其參數的詳細資訊,請參閱 Azure IoT Edge 工作

    • 工作: 複製檔案

      參數 描述
      來源資料夾 要複製的來源資料夾。 空白是存放庫的根目錄。 如果檔案不在存放庫中,請使用變數。 範例:$(agent.builddirectory)
      目錄 新增兩行: deployment.template.json**/module.json
      目標資料夾 指定變數 $(Build.ArtifactStagingDirectory)。 請參閱 建置變數 以瞭解描述。

      如需這項工作及其參數的詳細資訊,請參閱 複製檔案工作

    • 工作: 發佈組建成品

      參數 描述
      要發佈的路徑 指定變數 $(Build.ArtifactStagingDirectory)。 請參閱 建置變數 以瞭解描述。
      成品名稱 指定預設名稱: drop
      成品發佈位置 使用預設位置: Azure Pipelines

      如需這項工作及其參數的詳細資訊,請參閱 發佈組建成品工作

  9. 從右上方的 [儲存並執行] 下拉式清單中選取 [儲存]。

  10. YAML 管線預設會啟用持續整合的觸發程式。 如果您想要編輯這些設定,請選取管線,然後選取右上方的 [ 編輯 ]。 選取右上方 [執行] 按鈕旁的 [更多動作],然後移至 [觸發程式]。 持續整合 會顯示為在管線名稱下啟用。 如果您想要查看觸發程式的詳細數據,請查看 [從這裡 覆寫 YAML 持續整合觸發程式] 方塊。

此螢幕快照顯示如何從 [更多動作] 下的 [觸發程式] 功能表檢閱管線的觸發程式設定。

繼續進行下一節,以建置發行管線。

建立持續部署的發行管線

在本節中,您會建立發行管線,其設定為在組建管線卸除成品時自動執行,而且它會在 Azure Pipelines 中顯示部署記錄。

建立新的管線,並新增新的階段:

  1. 在 [管線] 下的 [發行] 索引標籤中,選擇 [+ 新增管線]。 或者,如果您已經有發行管線,請選擇 [ + 新增 ] 按鈕,然後選取 [ + 新增發行管線]。

    使用 [+ 新增管線] 按鈕新增發行管線

  2. 當系統提示您選取範本時,選擇從空白作業開始

    從發行管線的空白作業開始

  3. 新的發行管線會使用一個階段初始化,稱為 「階段 1」。 將階段 1 重新命名為 開發 ,並將其視為開發環境的持續部署管線。 一般而言,持續部署管線具有多個階段,包括 開發預備生產。您可以使用不同的名稱,並根據 DevOps 實務建立更多名稱。 重新命名后,請關閉階段詳細數據視窗。

    您也可以選取頂端的 [新版本管線] 文字,以重新命名發行管線。

  4. 將發行連結至組建管線所發行的組建成品。 按兩下 [ 在成品中新增 ] 區域。

    單擊介面成品區域中的 [新增]

  5. 在 [ 新增成品] 頁面上,選取 [建 置] 作為 [來源類型]。 選擇您建立的專案和建置管線。 如果您想要的話,您可以將 [來源] 別名變更為更具描述性的內容。 然後選取 [新增]

    在 [新增成品] 頁面上,選取 [新增] 以建立成品

  6. 開啟成品觸發程式,然後選取切換以啟用持續部署觸發程式。 現在,每次有新的組建可供使用時,都會建立新版本。

    開啟成品觸發程式並切換以啟用持續部署觸發程式

  7. 開發階段已預先設定一個作業和零個工作。 從管線功能表中,選取 [ 工作 ] ,然後選擇開發 階段。 選取 [代理程式] 作業,並將其 [顯示名稱] 變更QA。 您可以設定代理程式作業的詳細數據,但部署工作不區分平臺,因此您可以在所選的 Agent 集區中使用任何 Agent 規格

    在 [工作] 索引標籤下檢視開發階段的工作

  8. 在 QA 作業上,選取加號 (+) 以新增兩個工作。 搜尋並新增 Azure IoT Edge 兩次。

  9. 選取第一個 Azure IoT Edge 工作,並使用下列值進行設定:

    參數 描述
    Display name 當 [動作] 欄位變更時,會自動更新顯示名稱。
    動作 選取 Generate deployment manifest
    .template.json檔案 指定路徑: $(System.DefaultWorkingDirectory)/Drop/drop/deployment.template.json。 路徑會從組建管線發佈。
    默認平臺 根據您的目標 IoT Edge 裝置,為您的模組選取適當的作業系統。
    輸出路徑 放置路徑 $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json。 此路徑是最終的IoT Edge部署指令清單檔案。

    這些設定有助於取代 檔案中的 deployment.template.json 模組映像 URL。 產生 部署指令清單 也可將變數取代為您在檔案中 deployment.template.json 定義的確切值。 在 Visual Studio/Visual Studio Code 中,您要在檔案中 .env 指定實際值。 在 Azure Pipelines 中,您會在 [發行管線變數] 索引卷標中設定值。移至 [變數] 索引卷標,然後設定名稱和值,如下所示:

    • ACR_ADDRESS:您的 Azure Container Registry 登入伺服器值。 您可以從 Azure 入口網站 中容器登錄的 [概觀] 頁面擷取登入伺服器。
    • ACR_PASSWORD:您的 Azure Container Registry 密碼。
    • ACR_USER:您的 Azure Container Registry 用戶名稱。

    如果您的專案中有其他變數,您可以在此索引標籤中指定名稱和值。產生 部署指令清單 只能辨識屬於類別的 ${VARIABLE} 變數。 請確定您在檔案中使用 *.template.json 這個類別。

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

    在 [變數] 索引標籤中設定發行管線的變數

  10. 選取第二個 Azure IoT Edge 工作,並使用下列值進行設定:

    參數 描述
    Display name 當 [動作] 欄位變更時,會自動更新顯示名稱。
    動作 選取 Deploy to IoT Edge devices
    部署檔案 放置路徑 $(System.DefaultWorkingDirectory)/Drop/drop/configs/deployment.json。 此路徑是IoT Edge部署指令清單檔案的檔案。
    Azure 訂用帳戶 選取包含您 IoT 中樞 的訂用帳戶。
    IoT 中樞名稱 選取您的IoT中樞。
    選擇單一/多個裝置 選擇是否要發行管線部署至一或多個裝置。 如果您部署至單一裝置,請輸入 IoT Edge裝置識別碼。 如果您要部署到多個裝置,請指定裝置 目標條件。 目標條件是符合 IoT 中樞 中一組 IoT Edge 裝置的篩選條件。 如果您想要使用裝置標籤作為條件,您必須使用 IoT 中樞 裝置對應項來更新對應的裝置標籤。 在 進階設定中更新IoT Edge部署標識碼IoT Edge部署優先順序 。 如需為多個裝置建立部署的詳細資訊,請參閱 瞭解IoT Edge自動部署
    裝置標識碼或目標條件 根據先前的選取專案,指定要部署到多個裝置的裝置標識碼或 目標條件
    進階 針對 IoT Edge 部署識別碼,指定 $(System.TeamProject)-$(Release.EnvironmentName)。 此變數會與您的IoT Edge部署標識碼對應項目和發行名稱。

    如果您的工作牽涉到使用位於公用雲端看不到的私人 Docker 信任登錄中的映像,您可以將SKIP_MODULE_IMAGE_VALIDATION環境變數true設定為 略過映射驗證。

    為您的開發階段新增 Azure IoT Edge 工作

  11. 選取 [ 儲存] 將變更儲存至新的發行管線。 從功能表中選取 [管線] 索引標籤,以返回管線檢視。

使用組建和發行管線驗證IoT Edge CI/CD

若要觸發建置作業,您可以將認可推送至原始程式碼存放庫,或手動觸發它。 在本節中,您會手動觸發 CI/CD 管線來測試其運作方式。 然後確認部署成功。

  1. 從左窗格功能表中,選取 [管線] ,然後開啟您在本文開頭建立的組建管線。

  2. 您可以選取 右上方的 [執行管線] 按鈕,以觸發組建管線 中的建置作業。

    使用 [執行管線] 按鈕手動觸發組建管線

  3. 檢閱執行 管線 設定。 然後,選取 [ 執行]。

    指定執行管線選項,然後選取 [執行]

  4. 選取 [代理程序作業 1 ] 以監看執行進度。 您可以選取作業來檢閱作業輸出的記錄。

    檢閱作業的記錄輸出

  5. 如果建置管線成功完成,它會觸發發行至 開發 階段。 成功的 開發 版本會建立IoT Edge部署,以以IoT Edge裝置為目標。

    發行至開發

  6. 按兩下 開發 階段以查看發行記錄。

    發行記錄

  7. 如果您的管線失敗,請從查看記錄開始。 您可以流覽至管線執行摘要,然後選取作業和工作,以檢視記錄。 如果特定工作失敗,請檢查該工作的記錄。 如需設定和使用記錄的詳細指示,請參閱 檢閱記錄以診斷管線問題

下一步

  • 瞭解單一裝置或大規模IoT Edge部署中的 IoT Edge部署
  • 逐步解說在大規模部署和監視IoT Edge模組建立、更新或刪除部署的步驟。