持續整合和持續部署至 Azure IoT Edge 裝置
適用於: IoT Edge 1.5 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 中樞 ,用於測試個別測試和生產部署階段。 您可以遵循快速入門文章,在 Linux 或 Windows 上建立 IoT Edge 裝置
如需使用 Azure Repos 的詳細資訊,請參閱 與 Visual Studio 和 Azure Repos 共用您的程式代碼。
建立建置管線以進行持續整合
在本節中,您會建立新的組建管線。 當您簽入範例 IoT Edge 解決方案的任何變更並發佈組建記錄時,您可以設定管線以自動執行。
登入您的 Azure DevOps 組織 (
https://dev.azure.com/{your organization}
) 並開啟包含 IoT Edge 解決方案存放庫的專案。從專案的左窗格功能表中,選取 [ 管線]。 選取 頁面中央的 [建立管線 ]。 或者,如果您已經有組建管線,請選取右上方的 [ 新增管線 ] 按鈕。
在 [ 您的程式代碼在哪裡?] 頁面上,選取 [Azure Repos Git
YAML
]。 如果您想要使用傳統編輯器來建立專案的建置管線,請參閱 傳統編輯器指南。選取您要為其建立管線的存放庫。
在 [ 設定管線] 頁面上,選取 [ 入門管線]。 如果您有想要用來建立此管線的預先存在 Azure Pipelines YAML 檔案,您可以選取 現有的 Azure Pipelines YAML 檔案 ,並將存放庫中的分支和路徑提供給檔案。
在 [ 檢閱管線 YAML ] 頁面上,您可以選取預設名稱
azure-pipelines.yml
來重新命名管線的組態檔。選取 [ 顯示小幫手 ] 以開啟 [ 工作 ] 調色盤。
若要新增工作,請將游標放在 YAML 結尾,或您想要在何處新增工作的指示。 搜尋並選取 [Azure IoT Edge]。 填寫工作的參數,如下所示。 然後選取 [新增]。
參數 描述 動作 選取 [ 建置模組映射]。 .template.json檔案 提供包含IoT Edge解決方案之存放庫中deployment.template.json檔案的路徑。 默認平臺 根據您的目標 IoT Edge 裝置,為您的模組選取適當的作業系統。 如需此工作及其參數的詳細資訊,請參閱 Azure IoT Edge 工作。
提示
新增每個工作之後,編輯器會自動反白顯示新增的行。 若要防止意外覆寫,請取消選取這幾行,併為下一個工作提供新的空間,再新增其他工作。
重複此程式,再新增三個具有下列參數的工作:
工作: 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
如需這項工作及其參數的詳細資訊,請參閱 發佈組建成品工作。
從右上方的 [儲存並執行] 下拉式清單中選取 [儲存]。
YAML 管線預設會啟用持續整合的觸發程式。 如果您想要編輯這些設定,請選取管線,然後選取右上方的 [ 編輯 ]。 選取右上方 [執行] 按鈕旁的 [更多動作],然後移至 [觸發程式]。 持續整合 會顯示為在管線名稱下啟用。 如果您想要查看觸發程式的詳細數據,請查看 [從這裡 覆寫 YAML 持續整合觸發程式] 方塊。
繼續進行下一節,以建置發行管線。
建立持續部署的發行管線
在本節中,您會建立發行管線,其設定為在組建管線卸除成品時自動執行,而且它會在 Azure Pipelines 中顯示部署記錄。
建立新的管線,並新增新的階段:
在 [管線] 下的 [發行] 索引標籤中,選擇 [+ 新增管線]。 或者,如果您已經有發行管線,請選擇 [ + 新增 ] 按鈕,然後選取 [ + 新增發行管線]。
當系統提示您選取範本時,選擇從空白作業開始。
新的發行管線會使用一個階段初始化,稱為 「階段 1」。 將階段 1 重新命名為 開發 ,並將其視為開發環境的持續部署管線。 一般而言,持續部署管線具有多個階段,包括 開發、 預備和 生產。您可以使用不同的名稱,並根據 DevOps 實務建立更多名稱。 重新命名后,請關閉階段詳細數據視窗。
您也可以選取頂端的 [新版本管線] 文字,以重新命名發行管線。
將發行連結至組建管線所發行的組建成品。 按兩下 [ 在成品中新增 ] 區域。
在 [ 新增成品] 頁面上,選取 [建 置] 作為 [來源類型]。 選擇您建立的專案和建置管線。 如果您想要的話,您可以將 [來源] 別名變更為更具描述性的內容。 然後選取 [新增]。
開啟成品觸發程式,然後選取切換以啟用持續部署觸發程式。 現在,每次有新的組建可供使用時,都會建立新版本。
開發階段已預先設定一個作業和零個工作。 從管線功能表中,選取 [ 工作 ] ,然後選擇開發 階段。 選取 [代理程式] 作業,並將其 [顯示名稱] 變更為QA。 您可以設定代理程式作業的詳細數據,但部署工作不區分平臺,因此您可以在所選的 Agent 集區中使用任何 Agent 規格。
在 QA 作業上,選取加號 (+) 以新增兩個工作。 搜尋並新增 Azure IoT Edge 兩次。
選取第一個 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}" } }
選取第二個 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
設定為 略過映射驗證。選取 [ 儲存] 將變更儲存至新的發行管線。 從功能表中選取 [管線] 索引標籤,以返回管線檢視。
使用組建和發行管線驗證IoT Edge CI/CD
若要觸發建置作業,您可以將認可推送至原始程式碼存放庫,或手動觸發它。 在本節中,您會手動觸發 CI/CD 管線來測試其運作方式。 然後確認部署成功。
從左窗格功能表中,選取 [管線] ,然後開啟您在本文開頭建立的組建管線。
您可以選取 右上方的 [執行管線] 按鈕,以觸發組建管線 中的建置作業。
檢閱執行 管線 設定。 然後,選取 [ 執行]。
選取 [代理程序作業 1 ] 以監看執行進度。 您可以選取作業來檢閱作業輸出的記錄。
如果建置管線成功完成,它會觸發發行至 開發 階段。 成功的 開發 版本會建立IoT Edge部署,以以IoT Edge裝置為目標。
按兩下 開發 階段以查看發行記錄。
如果您的管線失敗,請從查看記錄開始。 您可以流覽至管線執行摘要,然後選取作業和工作,以檢視記錄。 如果特定工作失敗,請檢查該工作的記錄。 如需設定和使用記錄的詳細指示,請參閱 檢閱記錄以診斷管線問題。
下一步
- 瞭解單一裝置或大規模IoT Edge部署中的 IoT Edge部署
- 逐步解說在大規模部署和監視IoT Edge模組中建立、更新或刪除部署的步驟。