適用於 LUIS DevOps 的持續整合與持續傳遞工作流程
重要
LUIS 將於 2025 年 10 月 1 日淘汰,而自 2023 年 4 月 1 日開始,您將無法建立新的 LUIS 資源。 建議移轉 LUIS 應用程式至交談語言理解,以享有產品持續支援和多語言功能的優點。
開發 Language Understanding (LUIS) 應用程式的軟體工程師可針對原始檔控制、自動化建置、測試和發行管理套用 DevOps 實務。 此文章描述針對 LUIS 實作自動化建置的概念。
針對 LUIS 建置自動化工作流程
在您的原始程式碼管理 (SCM) 系統中,將自動化建置管線設定為在發生下列事件時執行:
- PR 工作流程已在引發提取要求 (PR) 時觸發。 此工作流程會先驗證 PR 的內容,「然後」再將更新合併到主分支。
- CI/CD 工作流程已在將更新推送至主分支時 (例如,在合併來自 PR 的變更時) 觸發。 此工作流程可確保所有對主分支的更新品質。
CI/CD 工作流程會合併兩個互補開發程序:
持續整合 (CI) 是共用存放庫中經常認可之程式碼,以及對其執行自動化建置的工程實務。 與自動化的測試方法配對,持續整合讓我們能夠驗證每個更新的 LUDown 來源仍然有效並可匯入 LUIS 應用程式中,而且它還會通過一組測試來驗證已定型的應用程式可以辨識您解決方案所需的意圖和實體。
持續傳遞 (CD) 會進一步採用持續整合概念,將應用程式自動部署到可讓您進行更深入測試的環境中。 CD 讓我們能夠儘早了解任何因我們的變更而引發且未能預見的問題,同時也可了解測試涵蓋範圍中的差距。
持續整合與持續傳遞的目標是確保「主要一律可交付」。 針對 LUIS 應用程式,這表示我們可以在需要時,從主分支 LUIS 應用程式取得任何版本,並將其交付到生產環境。
用於針對 LUIS 建置自動化工作流程的工具
提示
您可以在 LUIS DevOps 範本存放庫中,找到可用於實作 DevOps 的完整解決方案。
有不同的建置自動化技術可用來建立建置自動化工作流程。 它們全都要求您可以使用命令列介面 (CLI) 或 REST 呼叫來編寫步驟的指令碼,讓其可在建置伺服器上執行。
使用下列工具,針對 LUIS 建置自動化工作流程:
Bot Framework 工具 LUIS CLI \(英文\),可搭配 LUIS 應用程式和版本使用,在 LUIS 服務內對其進行定型、測試和發佈。
Azure CLI,可查詢 Azure 訂用帳戶、擷取 LUIS 製作與預測金鑰,以及建立用於自動化驗證的 Azure 服務主體。
NLU.DevOps \(英文\) 工具,可用來測試 LUIS 應用程式及分析測試結果。
PR 工作流程
如前所述,您將此工作流程設定為在開發人員引發 PR 時執行,以提議將變更從功能分支合併到主分支。 其目的是先驗證 PR 中的變更品質,然後再將其合併到主分支。
此工作流程應該:
- 透過在 PR 中匯入
.lu
來源,以建立暫存 LUIS 應用程式。 - 將 LUIS 應用程式版本定型並加以發佈。
- 對其執行所有單元測試。
- 如果所有測試都通過,即會通過工作流程,否則它會失敗。
- 清除並刪除暫存應用程式。
如果您的 SCM 支援,請設定分支保護規則,如此就必須先順利完成此工作流程,然後才能完成 PR。
主分支 CI/CD 工作流程
將此工作流程設定為在將 PR 中的更新合併到主分支之後執行。 其目的是透過測試更新,讓主分支的品質標準維持在高品質。 如果更新符合品質標準,此工作流程就會將新的 LUIS 應用程式版本部署到可讓您進行更深入測試的環境中。
此工作流程應該:
使用更新的原始程式碼,在您的主要 LUIS 應用程式 (您針對主分支維護的應用程式) 中建置新版本。
將 LUIS 應用程式版本定型並加以發佈。
注意
如在自動化建置工作流程中執行測試所述,您必須發佈受測的 LUIS 應用程式版本,讓 NLU.DevOps 之類的工具能加以存取。 LUIS 只針對 LUIS 應用程式支援兩個具名的發行集位置 (「預備」和「生產」),但您也可以 直接發佈版本並依版本進行查詢。 在您的自動化工作流程中使用直接版本發佈,以避免受限於使用具名的發佈位置。
執行所有單元測試。
選擇性地執行批次測試,來測量 LUIS 應用程式版本的品質和正確性,並將其與某些基準進行比較。
如果測試順利完成:
- 標記存放庫中的來源。
- 執行持續傳遞 (CD) 作業,將 LUIS 應用程式版本部署到環境中,以進行進一步測試。
持續傳遞 (CD)。
CI/CD 工作流程中的 CD 作業會在建置和自動化單元測試成功時,有條件地執行。 其作業是將 LUIS 應用程式自動部署到您可進行更多測試的環境中。
針對如何以最佳方式部署 LUIS 應用程式,並沒有一個建議的解決方案,而您必須實作適合您專案的流程。 LUIS DevOps 範本 \(英文\) 存放庫會為此實作簡單的解決方案,也就是將新的 LUIS 應用程式版本發佈到「生產」發佈位置。 這適用於簡單的設定。 但是,如果您需要同時支援許多不同的生產環境 (例如,「開發」、「預備」和「UAT」),則每個應用程式兩個具名發佈位置的限制將證明是不夠的。
部署應用程式版本的其他選項包括:
- 保留將應用程式版本發佈到直接版本端點,並視需要使用直接版本端點來實作流程,以設定下游生產環境。
- 針對每個生產環境維護不同的 LUIS 應用程式,並撰寫自動化步驟,針對目標生產環境,將
.lu
匯入 LUIS 應用程式中的新版本,以將其定型並發佈。 - 將測試過的 LUIS 應用程式版本匯出到 LUIS Docker 容器,並將 LUIS 容器部署到 Azure 容器執行個體。
版本管理
一般來說,我們建議您只對非生產環境 (例如開發和預備) 進行持續傳遞。 大多數的小組都需要手動審核和核准流程,才能部署到生產環境。 針對生產環境部署,您可以確保上述流程發生在開發小組中的重要人員可提供支援時或低流量期間。
使用 GitHub Actions 將 DevOps 套用至 LUIS 應用程式開發
移至 LUIS DevOps 範本存放庫 \(英文\),以取得針對 LUIS 實作 DevOps 和軟體工程最佳做法的完整解決方案。 您可以使用此範本存放庫來建立自己的存放庫,並內建支援 CI/CD 工作流程和實務,以針對自己的專案,使用 LUIS 啟用原始檔控制、自動化建置、測試和發行管理。
LUIS DevOps 範本存放庫 \(英文\) 會逐步解說如何:
- 複製範本存放庫 - 將範本複製到您自己的 GitHub 存放庫。
- 設定 LUIS 資源 - 在 Azure 中建立 LUIS 製作和預測資源,這些資源將供持續整合工作流程使用。
- 設定 CI/CD 工作流程 - 設定 CI/CD 工作流程的參數,並將其儲存在 GitHub 祕密中。
- 逐步解說「開發內部迴圈」 - 開發人員在開發分支中工作時,會更新範例 LUIS 應用程式、測試更新,然後引發提取要求來提議變更,並尋求審核核准。
- 執行 CI/CD 工作流程 - 執行持續整合工作流程,以建置及測試 LUIS 應用程式 (使用 GitHub Actions)。
- 執行自動化測試 - 對 LUIS 應用程式執行自動化批次測試,以評估應用程式的品質。
- 部署 LUIS 應用程式 - 執行持續傳遞 (CD) 作業來發佈 LUIS 應用程式。
- 搭配您自己的專案使用存放庫 - 說明如何搭配您自己的 LUIS 應用程式使用存放庫。
下一步
了解如何使用 NLU.DevOps 撰寫 GitHub Actions 工作流程 \(英文\)
使用LUIS DevOps 範本存放庫 \(英文\),將 DevOps 套用至您自己的專案。