軟體必須進行編寫、測試並部署到生產環境。為了以自動化方式進行,開發人員和 DevOps 會建立 CI/CD pipeline 或建立/發布 pipeline,以自動化大部分活動。
A pipeline allows developers, DevOps teams and others to produce and deploy reliable code. In the Microsoft realm, the way to build a pipeline is with Azure DevOps with a feature called Azure Pipelines.
Azure Pipelines 允許您自動運行建置、執行測試並將程式碼(發布)部署到各種開發和生產環境。但如果您從未聽說過 Azure DevOps 或 pipeline,或從未使用 Azure DevOps 建立過 pipeline,那麼這篇 Azure Pipelines 教程就是為您而設的。
非常感謝 Microsoft Azure 技術培訓師 Peter De Tender 在本文中的幫助。
專案概述
這是一篇關於如何建立專案或實施解決方案的專案文章。每個部分都會累積性地建立在前一部分的基礎上。
在這個專案中,您將從頭開始學習如何建立您的第一個 Azure DevOps pipeline。您將學習如何從 Git 版本控制提交中調用建置,自動執行測試並最終將套件發布到環境中。完成這個專案後,您將擁有一個範例電子商務應用程式部署為 Azure WebApp。
完成這個專案應該需要 30 分鐘。
請注意,如果您遵循此項目並立即刪除所創建的資源,您的 Azure 帳戶將不會收取費用。請不要忘記刪除它們!
目標受眾
本項目將介紹在 Azure DevOps web UI 中設置第一個 Azure Pipeline 的基礎知識。如果您是全新使用 Azure Pipelines 的新手,將從本項目中學到很多知識,但如果您已經建立過自己的 Pipeline 或是 Azure Pipelines 的專家,可能收穫就不會那麼多了。
環境要求
如果您打算逐步進行本項目,請確保至少擁有以下內容:
- 一個 Azure 帳戶
- 已經以全域管理員或類似權限登錄到 Azure Portal。
- A GitHub account
- 已經創建了一個空的 Github 存儲庫
- 使用 dotnetcore 2.2 和 Linux 平台部署的空的 Azure WebApp。
創建Azure DevOps組織
因為我們從零開始,首先要創建一個名為組織的“基礎”對象,其中包含了所有Azure DevOps功能和服務。組織是存儲所有項目的地方,您將在下一節中學習如何構建項目。
- 從Azure Portal瀏覽到所有服務,搜索DevOps並選擇Azure DevOps。您可以在下面看到期望的結果。這將打開Azure DevOps刀片,如下所示。

2. 接下來,點擊我的Azure DevOps組織並提供您的Azure憑據。您將被帶到一個頁面,在此頁面上您可以創建一個新的組織,如下所示。在此處,點擊藍色創建新組織按鈕。

3. 在下一頁上,為組織提供一個名稱。如果在使用特定名稱時遇到問題,請務必檢查Azure DevOps組織命名約定。在此屏幕上,還要指定與您最接近的Azure區域。完成後,點擊繼續。

此時,您的Azure DevOps組織已經創建完成!
創建Azure DevOps項目
下一步是创建一个项目。项目是一个容器,用于创建管道,各种工件以及与特定服务或软件相关的任何其他信息。
Azure DevOps允许您在创建组织的过程中创建项目,就像上面所演示的那样。如果您按照步骤操作,现在应该会看到一个项目创建页面,如下所示。
- 在项目创建页面中,在项目名称字段中提供项目的名称。对于这个项目,您将使用一个名为devopsdemo的Azure DevOps项目。
- 点击+ 创建项目按钮确认创建项目。
- 现在,将可见性设置为私有。这样可以确保您的项目不会暴露在互联网上。公共项目允许非项目成员和非登录用户只读访问项目的工件。

此时,您的Azure DevOps工作区(项目+组织)已创建完成。如果您一直在跟随操作,现在应该已经创建了一个名为pdtitws123的Azure DevOps组织,并在该组织中创建了一个名为devopsdemo的项目。

构建Azure DevOps构建管道
现在您已经设置了Azure DevOps组织和项目,可以在其中创建一个构建管道。管道是魔法发生的地方。您可以在其中创建构建以执行各种任务,例如编译代码、引入依赖等。
- 從儀表板中選擇管線,然後選擇建置。

2. 你將看到一條消息,告訴你尚未找到建置管線。點擊新建管線開始創建建置管線。

3. 接下來,系統會提示你存儲代碼的位置。在這個項目中,代碼存儲在 GitHub 存儲庫中。選擇GitHub。這是存儲代碼和觸發建置的地方。

4. 點擊GitHub後,系統會提示你提供 GitHub 帳戶的認證,如下所示。在進行此步驟之前,請確保根據本文的先決條件部分創建了一個空的 GitHub 存儲庫!

5. 接下來,確認要求你授權 Azure 管線的步驟。這將確保 Azure DevOps 有權訪問你的 GitHub 存儲庫。

連結 GitHub 存儲庫到建置管線
在為 Azure DevOps 提供對 GitHub 帳戶的權限後,現在連結 GitHub 存儲庫到建置管線。
- 選擇你為這個項目創建的空的 GitHub 存儲庫。

2. 允許該項目從你之前選擇的存儲庫中讀取、寫入和檢查代碼。然後點擊批准並安裝確認此過程。

3. 點擊確認後,你將看到以下生成的錯誤。這個錯誤是因為所選的 GitHub 存儲庫是空的。

此時,你的 GitHub 存儲庫將與你的 Azure DevOps 建置管線連結。
每次想要将GitHub存储库链接到Azure DevOps构建管道时,您都不必创建全新的管道。
填充示例GitHub存储库代码
没有GitHub存储库中的一些代码,Azure DevOps构建管道将无法运行。此时代码并不重要。为了在存储库中放入一些代码,我们将使用现有的存储库克隆一些代码。在这个存储库中,我有所有的源代码可用于在Azure WebApps中发布一个电子商务示例应用程序。
此存储库的示例代码将包含一个名为SimplCommerce的电子商务应用程序示例。这个应用程序是一个开源的dotnetcore应用程序,比典型的“hello world”项目更加逼真。
- 转到此示例GitHub存储库,然后点击导入代码,如下所示。

2. 对于旧存储库的克隆URL,使用http://github.com/007FFFLearning/SimplDev,然后点击开始导入。

当存储库导入步骤成功完成后,请刷新Azure DevOps Pipeline窗口,然后您就可以继续操作了。
检查和查看YAML中的构建管道
在此時,您將處於流程創建過程的審查階段。您現在將看到一個以YAML表示的構建流程。這個YAML文件是根據檢測到的代碼語言(在此項目中為dotnetcore)自動構建的。
Azure DevOps的一個真正的好處之一就是流程YAML。在許多其他DevOps工具中,您必須手動構建流程文件。

手動運行Azure構建流程
在連續集成(CI)流程中,構建通常是由提交到源代碼控制中觸發的。但是,您也可以手動觸發構建流程運行。讓我們手動啟動構建流程,看看會發生什麼。
如果您一直在跟隨,此時您應該可以點擊運行來啟動構建流程。如下面的截圖所示,這將開始流程構建過程。

幾秒鐘後,您可以看到該過程將運行在macOS上,如下所示。構建流程將在每個作業和任務運行時實時返回信息。

然後,構建流程將對其他操作系統(在此示例中)重複執行相同的過程,如下所示。所採取的步驟將根據YAML文件的構建方式而有很大不同。

一旦構建完成,您將看到下面的綠色勾號。此截圖表示每個平台構建成功通過。

你現在已經建立了一個 Azure DevOps 的建置流程!
建立 Azure DevOps 釋出流程
已經建立了建置流程,這是一個很大的進展。如果你在這一點停下來,你已經很接近完整的自動化流程了。但我們還沒有結束!軟體的最終目標是要部署,這樣客戶才能使用。現在是時候自動化釋出流程了,使用一個釋出流程!
A release pipeline takes a build artifact, a result of the build process and deploys that to one or more environments. In this Project, you’re going to use a release pipeline to publish code in the GitHub repo to an Azure Web App.
- 從 Azure DevOps 中,點擊流程,然後點擊釋出。

2. 接著,選擇新增,然後選擇新增釋出流程。這將啟動新釋出流程精靈。

3. 從右側的範本清單中,選擇Azure App Service 部署。你將看到許多不同種類的範本可用於節省未來建立釋出流程的時間。

4. 為階段名稱提供描述。這個階段將包含釋出任務。對於這個專案,使用名稱部署至 webapp。

釋出流程現在應該看起來像下面的截圖。

5. 在階段欄位中,選擇1 個工作,1 個任務。這個欄位是你最終會提供用於實際部署的 Azure Web App 環境設定的地方。
6. Azure App Service 部署範本的一部分是一些你需要在這個畫面中定義的參數。
- 舞台名稱- 在這個例子中,Deploy-to-webapps2。
- Azure 訂閱- 選擇您的訂閱並使用 授權 確認(需要憑證)
- 應用程式類型- Linux 上的 Web App
- 應用程式名稱- 您先前建立的 Web App

7. 完成後,按一下 Azure Pipeline 項目的頂部選單中的 管線 按鈕,如下所示。這將使您返回主畫面,並允許您完成下一步,即指定 藝術品。

將藝術品添加到 Azure DevOps 發布管線
在發佈管線中,有許多不同的項目需要部署。這些項目稱為 藝術品。簡單來說,藝術品 是您應用程式的可部署組件。Azure Pipelines 可以部署由各種不同的 藝術品來源生成的藝術品。
在本節中,讓我們談談如何將藝術品添加到發布管線中。
- 在 管線 畫面上,點擊 新增藝術品。
- 來源類型 已設置為 建置,這是您希望的,因為您將部署先前建立的建置管線的輸出。在 來源(建置管線) 下拉式選單中選擇先前建立的建置管線。
- 完成後,點擊 新增 以保存配置。

4. 最後,在螢幕右上角點擊 儲存 按鈕以保存釋出流程。
創建 Azure DevOps 釋出
一旦創建了釋出流程,您就可以開始創建 釋出。釋出是釋出流程的一次執行。將釋出流程視為模板,並將釋出流程的特定實例視為釋出。一旦有了釋出,就可以部署該釋出。
創建釋出的步驟如下:
- 如下圖所示,在視窗右上角點擊 建立釋出 按鈕。

2. 在 建立新釋出 畫面上,您不需要進行任何特殊操作,接受默認值並點擊 建立。目前只有一個階段,並且只有一個版本的建置資源可供部署。

3. 幾秒後,您將收到一個通知(綠色條)表示釋出已創建,如下圖所示。現在點擊 釋出-1,將重定向到釋出流程的詳細資訊。

您已經成功創建了一個釋出,現在可以進行部署!
手動部署釋出
A release is a set of instructions to perform on how to deploy a build. You’ve done all of that. Now it’s time to actually run those instructions and deploy code to an environment.
在之前創建的 釋出-1 釋出頁面上:
- 選擇Deploy_to_webapp階段並確認部署。這樣做後,狀態將如下所示變為進行中。此時,發行版將從之前執行的建置流程中獲取原始碼並將其推送到Azure WebApp實例中。
此步驟將在後端上啟動一個運行的作業,由一個代理程式複製原始碼並執行實際的發行週期。

2. 點擊進行中的階段。您將在控制台輸出區域中看到任何日誌資訊。

完成後,階段應如下所示顯示成功。

如果一切順利,發行版應該已經完成,您現在應該有一個已發佈到Azure Web App的網路應用程式!
檢查已部署的Azure WebApp
現在整個過程已完成,請務必檢查您的努力成果。
- 登入Azure門戶,導航到您在發行流程中選擇的Azure WebApp,並複製URL如下所示。

2. 現在將該URL粘貼到瀏覽器中,提供Azure Web App的URL。您的瀏覽器應該會加載電子商務示例應用程序,類似於以下首頁

您現在已經完成了所有操作!您現在已經從GitHub存儲庫部署了一個Azure Web App,並且可以完全自動化!
清理工作
如果您在整個項目中都按照進度進行了操作,現在您應該擁有一個新的Azure DevOps組織、項目、構建管道和發布管道。如果您已經測試完成,請確保刪除創建的原始組織,以免面臨任何Azure資源的費用風險。
操作步驟如下:
- 返回到您的Azure DevOps工作區。
- 點擊左下角的組織設置。
- 在概覽屏幕上,點擊頁面底部的刪除按鈕,位於刪除組織下方。
- 輸入組織名稱,然後點擊刪除。這將刪除您剛剛執行的所有工作。
你的收穫
如果您按照本項目的說明進行操作,您已經在Azure DevOps中從頭創建了完整的CI/CD管道。您現在應該對這個過程有一個很好的了解。
Azure Pipelines可以比本項目中的操作更深入,但是您現在應該對整個過程有了一些基礎知識。