使用 Azure DevOps 持續整合和部署

秘訣

此內容是適用于 ASP.NET Core 開發人員的電子書摘要,可在.NET Docs上取得,或作為可離線讀取的免費可下載 PDF。

ASP.NET Core開發人員電子書的 DevOps 涵蓋縮圖。

注意

本節詳述與 Azure DevOps 的持續整合和部署。 您也可以透過GitHub Actions達成。 GitHub Actions是 GitHub 內建的工作流程引擎,也可用於持續整合和部署。 若要遵循使用 GitHub 建置和部署至 Azure 的指南,請完成下列將應用程式的程式碼發佈至 GitHub中斷本機 Git 部署區段的連線,然後繼續進行GitHub Actions一節

在上一章中,您已為簡單摘要讀取器應用程式建立本機 Git 存放庫。 在本章中,您將將該程式碼發佈至 GitHub 存放庫,並使用 Azure Pipelines 建構Azure DevOps Services管線。 管線會啟用應用程式的持續建置和部署。 對 GitHub 存放庫的任何認可會觸發組建和部署至 Azure Web 應用程式的預備位置。

在本節中,您將完成下列工作:

  • 將應用程式的程式碼發佈至 GitHub
  • 中斷本機 Git 部署的連線
  • 建立 Azure DevOps 組織
  • 在 Azure DevOps 組織中建立小組專案
  • 視需要設定自我裝載代理程式
  • 建立組建定義
  • 建立發行管線
  • 將變更認可至 GitHub 並自動部署至 Azure
  • 檢查 Azure Pipelines 管線

將應用程式的程式碼發佈至 GitHub

  1. 開啟瀏覽器視窗,然後流覽至 https://github.com

  2. +按一下標頭中的下拉式清單,然後選取[新增存放庫]:

    GitHub 新增存放庫選項

  3. 在 [擁有者] 下拉式清單中選取您的帳戶,然後在 [存放庫名稱] 文字方塊中輸入simple-feed-reader

  4. 按一下 [ 建立存放庫] 按鈕。

  5. 開啟本機電腦的命令殼層。 流覽至 儲存簡單摘要讀取器 Git 存放庫的目錄。

  6. 將現有的 原始來源 遠端重新命名為 上游。 執行以下命令:

    git remote rename origin upstream
    
  7. 在 GitHub 上新增指向存放庫複本的新 原始來源 遠端。 執行以下命令:

    git remote add origin https://github.com/<GitHub_username>/simple-feed-reader/
    
  8. 將本機 Git 存放庫發佈至新建立的 GitHub 存放庫。 執行以下命令:

    git push -u origin main
    
  9. 開啟瀏覽器視窗,然後流覽至 https://github.com/<GitHub_username>/simple-feed-reader/ 。 驗證您的程式碼是否出現在 GitHub 存放庫中。

中斷本機 Git 部署的連線

使用下列步驟移除本機 Git 部署。 Azure Pipelines (Azure DevOps 服務) 取代和增強該功能。

  1. 開啟Azure 入口網站,然後流覽至暫存 (mywebapp < unique_number > /預備) Web 應用程式。 在入口網站的搜尋方塊中輸入 預備 專案,即可快速找到 Web 應用程式:

    預備 Web 應用程式搜尋字詞

  2. 按一下 [部署中心]。 新的面板隨即出現。 按一下 [中斷連線 ] 移除上一章中新增的本機 Git 原始檔控制組態。 按一下 [ ] 按鈕以確認移除作業。

  3. 流覽至mywebapp < unique_number > App Service。 提醒您,入口網站的搜尋方塊可用來快速找出App Service。

  4. 按一下 [部署中心]。 新的面板隨即出現。 按一下 [中斷連線 ] 移除上一章中新增的本機 Git 原始檔控制組態。 按一下 [ ] 按鈕以確認移除作業。

建立 Azure DevOps 組織

  1. 開啟瀏覽器,然後流覽至 Azure DevOps 組織建立頁面
  2. 選取 [新增組織]
  3. 確認資訊,然後選取 [ 繼續]。
  4. 隨時登入您的組織, https://dev.azure.com/{yourorganization}

在 Azure DevOps 組織中建立小組專案

  1. 選擇組織,然後選取 [ 新增專案]。
  2. 輸入專案名稱作為 MyFirstProject ,然後選取 [可見度 ] 作為 [私人]
  3. 選取 [建立專案]。

如需詳細資訊,請參閱 建立專案

視需要設定自我裝載代理程式

若要使用 Azure Pipelines 建置程式碼或部署軟體,您需要至少一個代理程式。 在 Azure Pipelines 中,您可以在 Microsoft 裝載自我裝載 的代理程式上執行平行作業。 但是,Azure Pipelines 中的最新變更會暫時停用公用專案的平行作業授與。如需詳細資訊,請參閱 設定和支付平行作業的費用。

移至[組織設定],然後移至[管線>平行作業]。 如果您在Microsoft 裝載下看到值0,表示您需要自我裝載代理程式來執行管線。

MS 裝載的代理程式

您可以依照 自我裝載代理程式中所述的詳細資料來建立。 設定成功之後,您將能夠在[組織設定>代理程式組件> 區{youragentname}下看到可用的代理程式

自我裝載的代理程式

設定 Azure Pipelines 管線

有三個不同的步驟可以完成。 完成下列三節中的步驟會導致操作 DevOps 管線。

授與 Azure DevOps GitHub 存放庫的存取權

  1. 在您的專案中,瀏覽至 [管線] 頁面。 然後選擇要建立新管線的動作:

    [設定建置] 按鈕

  2. 用來 Use the classic editor 建立管線。

    使用傳統編輯器

  3. 從 [選取來源] 區段選取[GitHub] 選項:

    選取來源 - GitHub

  4. 必須先進行授權,Azure DevOps 才能存取您的 GitHub 存放庫。 在 [連線名稱] 文字方塊中輸入< GitHub_username > GitHub 連線。 例如:

    GitHub 連線名稱

  5. 如果您的 GitHub 帳戶已啟用雙因素驗證,則需要個人存取權杖。 在此情況下,按一下 [使用 GitHub 個人存取權杖授權] 連結。 如需協助,請參閱 官方 GitHub 個人存取權杖建立指示 。 只需要許可權的 存放庫 範圍。 否則,請按一下 [使用 OAuth 授權] 按鈕。

  6. 出現提示時,請登入您的 GitHub 帳戶。 然後選取 [授權] 以授與 Azure DevOps 組織的存取權。 如果成功,就會建立新的服務端點。

  7. 按一下 [ 存放庫 ] 按鈕旁邊的省略號按鈕。 從清單中選取< GitHub_username > /simple-feed-reader存放庫。 按一下 [選取] 按鈕。

  8. 從 [手動和排程的組建的預設分支] 下拉式清單中選取預設分支 (主要) 。 按一下 [繼續] 按鈕。 範本選取頁面隨即出現。

建立組建定義

  1. 從範本選取頁面,在搜尋方塊中輸入ASP.NET Core

    ASP.NET Core範本頁面上的搜尋

  2. 範本搜尋結果隨即出現。 將滑鼠停留在ASP.NET Core範本上,然後按一下 [套用] 按鈕。

  3. 組建定義的 [ 工作 ] 索引標籤隨即出現。 如果您已在先前的步驟中建立,請選取自我裝載 的 Agent 集 區。

    選取 [自我裝載代理程式組件區]

    注意

    如果您使用 MS 裝載的代理程式,請從下拉式清單中選取 [託管 > 的 Azure Pipelines ]。

  4. 按一下 [ 觸發程式] 索引標籤

  5. 核取 [ 啟用持續整合] 方塊。 在 [ 分支篩選] 區段下,確認 [ 類型 ] 下拉式清單已設定為 [ 包含]。 將 [ 分支規格 ] 下拉式清單設定為 main

    啟用持續整合設定

    這些設定會在將任何變更推送至 GitHub 存放庫 的主要) (預設分支時觸發組建。 在認可 GitHub 的變更並自動部署至 Azure 一節中,會測試持續整合。

  6. 按一下 [ 儲存 & 佇列 ] 按鈕,然後選取 [ 儲存 ] 選項:

    [儲存] 按鈕

  7. 會出現下列強制回應對話方塊:

    儲存組建定義 - 強制回應對話方塊

    使用 的預設資料夾 \ ,然後按一下 [ 儲存] 按鈕。

建立發行管線

  1. 按一下 Team 專案的 [ 發行] 索引 標籤。 按一下 [ 新增管線] 按鈕。

    [發行] 索引標籤 - [新增定義] 按鈕

    範本選取窗格隨即出現。

  2. 從範本選取頁面,在搜尋方塊中輸入App Service部署

    發行管線範本搜尋方塊

  3. 範本搜尋結果隨即出現。 將滑鼠停留在具有位置範本的Azure App 服務部署上,然後按一下 [套用] 按鈕。 發行管線的 [ 管線 ] 索引標籤隨即出現。

    發行管線管線索引標籤

  4. 按一下 [成品] 方塊中的 [新增] 按鈕。 [ 新增成品 ] 面板隨即出現:

    發行管線 - 新增成品面板

  5. 從 [來源類型] 區段選取 [置] 圖格。 此類型允許將發行管線連結至組建定義。

  6. 從 [專案] 下拉式清單中選取[MyFirstProject]。

  7. 從 [來源 (組建定義]下拉式清單中選取 [MyFirstProject-ASP.NET Core-CI] 的組建定義名稱 MyFirstProject-)

  8. [預設版本]下拉式清單中選取 [最新]。 此選項會建置組建定義的最新執行所產生的成品。

  9. [來源別名 ] 文字方塊中的文字取代為 Drop

  10. 按一下 [新增] 按鈕。 Artifacts 區段會更新以顯示變更。

  11. 按一下閃電圖示以啟用持續部署:

    發行管線成品 - 閃電圖示

    啟用此選項後,每次有新的組建可用時,就會進行部署。

  12. [連續部署觸發程式]面板會出現在右側。 按一下切換按鈕以啟用此功能。 不需要啟用 提取要求觸發程式

  13. 按一下 [建置分支篩選] 區段中的 [新增]下拉式清單。 選擇 [ 建置定義的預設分支 ] 選項。 此篩選只會針對 GitHub 存放庫的預設分支 (主要) 的組建觸發發行。

  14. 按一下 [儲存] 按鈕。 按一下產生的 [儲存強制回應] 對話方塊中的 [確定] 按鈕。

  15. 按一下 [ 階段 1] 方塊。 右側會出現 [階段] 面板。 將 [階段名稱] 文字方塊中的[階段 1] 文字變更為[生產]。

    發行管線 - 階段名稱文字方塊

  16. 按一下[生產] 方塊中的[1 階段,2 個工作] 連結:

    發行管線 - 生產環境link.png

    環境的 [ 工作 ] 索引標籤隨即出現。

  17. 按一下 [將Azure App 服務部署至位置工作]。 其設定會出現在右側的面板中。

  18. 從 [Azure 訂用帳戶] 下拉式清單中選取與App Service相關聯的Azure 訂用帳戶。 選取之後,按一下 [ 授權] 按鈕。

  19. 從 [應用程式類型] 下拉式清單中選取[Web 應用程式]。

  20. [App Service 名稱] 下拉式清單中選取mywebapp/ < unique_number/ >

  21. 從 [資源群組] 下拉式清單中選取[AzureTutorial]。

  22. 從 [位置] 下拉式清單中選取預備

  23. 在 [工作]底下選取 [在代理程式上執行]。 在右窗格中,您會看到 代理程式作業

  24. 如果您已在先前的步驟中建立,請選取自我裝載 的 Agent 集 區。

    選取 [自我裝載代理程式]

    注意

    如果您使用 MS 裝載的代理程式,請從下拉式清單中選取 [託管 > 的 Azure Pipelines ]。

  25. 按一下 [儲存] 按鈕。

  26. 將滑鼠停留在預設發行管線名稱上方。 按一下鉛筆圖示進行編輯。 使用MyFirstProject-ASP.NET Core-CD作為名稱。

    發行管線名稱

  27. 按一下 [儲存] 按鈕。

將變更認可至 GitHub 並自動部署至 Azure

  1. 在 Visual Studio 中開啟 SimpleFeedReader.sln

  2. 在 方案總管中,開啟Pages\Index.cshtml。 將 <h2>Simple Feed Reader - V3</h2> 變更為 <h2>Simple Feed Reader - V4</h2>

  3. Ctrl+Shift+B建置應用程式。

  4. 將檔案認可至 GitHub 存放庫。 使用 Visual Studio [Team Explorer] 索引標籤中的[變更] 頁面,或使用本機電腦的命令殼層執行下列命令介面:

    git commit -a -m "upgraded to V4"
    
  5. 將預設分支中的變更推送 (主要) 至 GitHub 存放庫 的來源 遠端。 在下列命令中,將預留位置 {BRANCH} 取代為預設分支, (使用 main) :

    git push origin {BRANCH}
    

    認可會出現在 GitHub 存放庫的預設分支中, (主要) 。 您將能夠在 中看到 https://github.com/<GitHub_username>/simple-feed-reader/commits/main 認可歷程記錄。

    建置會觸發,因為組建定義的 [ 觸發 程式] 索引標籤中已啟用持續整合:

    啟用持續整合

  6. 流覽至 管線。 如果您向下切入 [作業 詳細資料],您會看到 CI 管線詳細資料並監視每個步驟。

    觸發建置管線

  7. 同樣地,請移至 [ 發行] 索引 標籤,以查看 CD 管線的詳細資料。 您一律可以進一步向下切入,以查看每個步驟的詳細資料。

    發行管線

  8. 建置成功之後,就會部署至 Azure。 流覽至瀏覽器中的應用程式。 請注意,「V4」 文字會出現在標題中:

    更新的應用程式

檢查 Azure Pipelines 管線

組建定義

建置定義是以MyFirstProject-ASP.NET Core-CI名稱建立。 完成時,建置會產生 .zip 檔案,包括要發佈的資產。 發行管線會將這些資產部署至 Azure。

組建定義的 [ 工作 ] 索引標籤會列出所使用的個別步驟。 有五個建置工作。

組建定義工作

  1. 還原 - 執行 dotnet restore 命令以還原應用程式的 NuGet 套件。 使用的預設套件摘要 nuget.org。

  2. Build - 執行 dotnet build --configuration release 命令以編譯應用程式的程式碼。 此選項 --configuration 可用來產生優化的程式碼版本,其適用于部署到生產環境。 如果需要偵錯組態,請在組建定義的 [變數] 索引標籤上修改 BuildConfiguration變數

  3. 測試 - 執行 dotnet test --configuration release --logger trx --results-directory <local_path_on_build_agent> 命令以執行應用程式的單元測試。 單元測試會在符合 **/Tests/.csproj glob 模式的任何 C# 專案中執行。 測試結果會儲存在 選項所 --results-directory 指定位置的.trx檔案中。 如果有任何測試失敗,組建就會失敗,而且不會部署。

    注意

    若要驗證單元測試是否正常運作,請修改 SimpleFeedReader.Tests\Services\NewsServiceTests.cs 以有目的地中斷其中一個測試。 例如,在 方法中將 變更 Assert.True(result.Count > 0);Assert.False(result.Count > 0);Returns_News_Stories_Given_Valid_Uri 。 認可變更,並將變更推送至 GitHub。 建置會觸發並失敗。 組建管線狀態會變更為 失敗。 再次還原變更、認可和推送。 建置成功。

  4. 發佈 - 執行 dotnet publish --configuration release --output <local_path_on_build_agent> 命令,以產生 .zip 檔案,其中包含要部署的成品。 --output選項會指定.zip檔案的發佈位置。 指定該位置的方式是傳遞名為 的 $(build.artifactstagingdirectory)預先定義變數。 該變數會展開至組建代理程式上的本機路徑,例如 c:\agent_work\1\a

  5. 發佈成品— 發佈工作所產生的.zip檔案。 工作接受 .zip 檔案位置做為參數,這是預先定義的變數 $(build.artifactstagingdirectory).zip檔案會發佈為名為drop的資料夾。

按一下組建定義的 [摘要 ] 連結,以檢視具有定義之組建的歷程記錄:

顯示組建定義歷程記錄的螢幕擷取畫面

在產生的頁面上,按一下個別組建以取得詳細資料。

顯示組建定義摘要頁面的螢幕擷取畫面

此特定組建的摘要隨即顯示。 按一下 已發佈 的連結,並注意到組建所產生的 drop 資料夾會列出:

顯示組建定義成品 - 置放資料夾的螢幕擷取畫面

組建成品

使用省略號並按一下 [ 下載成品 ] 連結,以檢查已發佈的成品。

發行管線

發行管線是以MyFirstProject-ASP.NET Core-CD名稱建立:

顯示發行管線概觀的螢幕擷取畫面

發行管線的兩個主要元件是 成品階段。 按一下 [ 成品] 區段中的方塊會顯示下列面板:

顯示發行管線成品的螢幕擷取畫面

來源 (組建定義) 值代表此發行管線所連結的組建定義。 成功執行組建定義的 .zip 檔案會提供給 生產 環境,以部署至 Azure。 按一下 [生產環境] 方塊中的[1 階段、2 個工作] 連結,以檢視發行管線工作:

顯示發行管線工作的螢幕擷取畫面

發行管線包含兩項工作:將Azure App 服務部署至位置管理Azure App 服務 - 位置交換。 按一下第一個工作會顯示下列工作組態:

顯示發行管線工作的螢幕擷取畫面

Azure 訂用帳戶、服務類型、Web 應用程式名稱、資源群組和部署位置是在部署工作中定義。 [套件或資料夾] 文字方塊會保留要擷取並部署到mywebapp < unique_number > Web 應用程式的預備位置.zip檔案路徑。

按一下位置交換工作會顯示下列工作組態:

顯示發行管線位置交換工作的螢幕擷取畫面

系統會提供訂用帳戶、資源群組、服務類型、Web 應用程式名稱和部署位置詳細資料。 核取 [ 與生產交換 ] 核取方塊。 因此,部署到 預備 位置的位會交換至生產環境。

延伸閱讀