LUIS DevOps 的持續整合和持續傳遞工作流程

重要

LUIS 將於 2025 年 10 月 1 日淘汰,從 2023 年 4 月 1 日起,您將無法建立新的 LUIS 資源。 建議您 將 LUIS 應用程式 移轉至 對話式語言理解 ,以受益於持續的產品支援和多語系功能。

開發 Language Understanding (LUIS) 應用程式的軟體工程師可以套用有關原始檔控制、自動化組建測試和發行管理方面的 DevOps 做法。 本文說明實作 LUIS 自動化組建的概念。

建置 LUIS 的自動化工作流程

CI workflows

在您的原始碼管理 (SCM) 系統中,設定自動化建置管線以在下列事件中執行:

  1. 引發提取要求時觸發的PR工作流程。 此工作流程會先驗證PR 的內容,再將更新合併至主要分支。
  2. CI/CD 工作流程 會在將更新推送至主要分支時觸發,例如合併PR中的變更。 此工作流程可確保主要分支的所有更新品質。

CI/CD 工作流程結合了兩個互補的開發程式:

  • 持續整合 (CI) 是經常在共用存放庫中認可程序代碼,並在其上執行自動化建置的工程實務。 與自動化 測試 方法配對,持續整合可讓我們確認每個更新的 LUDown 來源仍然有效,而且可以匯入 LUIS 應用程式,但也通過一組測試,確認已定型的應用程式可以辨識解決方案所需的意圖和實體。

  • 持續傳遞 (CD) 會進一步採用持續整合概念,將應用程式自動部署到您可以執行更深入測試的環境。 CD 可讓我們儘早瞭解我們變更所產生的任何未預期問題,並瞭解測試涵蓋範圍中的差距。

持續整合和持續傳遞的目標是確保「主要永遠可寄送」。 對於 LUIS 應用程式,這表示我們可以視需要從主要分支 LUIS 應用程式取得任何版本,並將其寄送至生產環境。

用於建置 LUIS 自動化工作流程的工具

提示

您可以在 LUIS DevOps 範本存放庫中找到實作 DevOps 的完整解決方案。

有不同的組建自動化技術可用來建立組建自動化工作流程。 它們全都需要您可以使用命令行介面 (CLI) 或 REST 呼叫來編寫步驟的腳本,以便它們可以在組建伺服器上執行。

使用下列工具來建置 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 DevOps 範本存放庫會逐步解說如何:

  • 複製範本存放庫 - 將範本複製到您自己的 GitHub 存放庫。
  • 設定 LUIS 資源 - 在 Azure 中建立 LUIS 撰寫和預測資源,供持續整合工作流程使用。
  • 設定 CI/CD 工作流程 - 設定 CI/CD 工作流程的參數,並將其儲存在 GitHub 秘密
  • 逐步解 說「開發內部迴圈」 - 開發人員在開發分支中工作時,對範例 LUIS 應用程式進行更新、測試更新,然後提出提取要求來提出變更,並尋求檢閱核准。
  • 執行 CI/CD 工作流程 - 執行持續整合工作流程,以使用 GitHub Actions 建置及測試 LUIS 應用程式
  • 執行自動化測試 - 執行 LUIS 應用程式的 自動化批次測試,以評估應用程式的品質。
  • 部署 LUIS 應用程式 - 執行 持續傳遞 (CD) 作業 以發布 LUIS 應用程式。
  • 搭配您自己的專案 使用存放庫 - 說明如何將存放庫與您自己的 LUIS 應用程式搭配使用。

下一步