共用方式為


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 存放庫 \(英文\)。 針對本文,我們建立了名為 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 GitYAML]。 如果您想要使用傳統編輯器來建立專案的建置管線,請參閱傳統編輯器指南

  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 重新命名為 dev,並將其視為開發環境的持續部署管線。 持續部署管線通常會有多個階段,包括 開發預備,以及生產。您可以使用不同的名稱,並根據 DevOps 實務建立更多名稱。 重新命名後,請關閉階段詳細資料視窗。

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

  4. 將版本連結到由建置管線發佈的組建成品。 在成品區域中選取 [新增]

    按一下介面成品區域中的 [新增]

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

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

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

    開啟構件觸發程序,並切換以啟用持續部署觸發程序

  7. dev 階段已預先設定一個作業及零個工作。 從 [管線] 功能表中,選取 [工作],然後選擇 dev 階段。 選取 [代理程式作業],並將其 [顯示名稱] 變更為 QA。 您可以設定代理程式作業的相關詳細資料,但因為部署工作不會挑平台,所以您可以使用所選代理程式集區中的任何代理程式規格

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

  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 Trusted Registry 中的映像,則可以將 SKIP_MODULE_IMAGE_VALIDATION 環境變數設定為 true,以略過映像驗證。

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

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

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

若要觸發組建作業,您可以推送認可至原始程式碼存放庫,或是手動觸發。 在本節中,您會手動觸發 CI/CD 管線以測試它是否有效。 接著驗證部署是否成功。

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

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

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

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

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

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

    檢閱作業的記錄輸出

  5. 如果建置管線順利完成,其會觸發針對 dev 階段的發行。 成功的 dev 發行會建立 IoT Edge 部署來鎖定 IoT Edge 裝置。

    dev (開發) 的發行

  6. 選取 [dev] 階段以查看發行記錄。

    發行記錄

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

下一步