從頭開始建立你的第一個 Azure DevOps Pipeline

軟體必須進行編寫、測試並部署到生產環境。為了以自動化方式進行,開發人員和 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 DevOps組織

因為我們從零開始,首先要創建一個名為組織的“基礎”對象,其中包含了所有Azure DevOps功能和服務。組織是存儲所有項目的地方,您將在下一節中學習如何構建項目。

  1. Azure Portal瀏覽到所有服務,搜索DevOps並選擇Azure DevOps。您可以在下面看到期望的結果。這將打開Azure DevOps刀片,如下所示。
Azure DevOps dashboard

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

Create new Azure DevOps organization page

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

Azure DevOps organization creation page

此時,您的Azure DevOps組織已經創建完成!

創建Azure DevOps項目

下一步是创建一个项目。项目是一个容器,用于创建管道,各种工件以及与特定服务或软件相关的任何其他信息。

Azure DevOps允许您在创建组织的过程中创建项目,就像上面所演示的那样。如果您按照步骤操作,现在应该会看到一个项目创建页面,如下所示。

  1. 在项目创建页面中,在项目名称字段中提供项目的名称。对于这个项目,您将使用一个名为devopsdemo的Azure DevOps项目。
  2. 点击+ 创建项目按钮确认创建项目。
  3. 现在,将可见性设置为私有。这样可以确保您的项目不会暴露在互联网上。公共项目允许非项目成员和非登录用户只读访问项目的工件。
Azure DevOps project creation page

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

Azure DevOps project overview

构建Azure DevOps构建管道

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

  1. 從儀表板中選擇管線,然後選擇建置
Azure DevOps Builds menu

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

No build pipelines bound yet. Creating a new pipeline.

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

Selecting version control source

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

Providing GitHub credentials

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

Authorizing Azure Pipelines to access GitHub

連結 GitHub 存儲庫到建置管線

在為 Azure DevOps 提供對 GitHub 帳戶的權限後,現在連結 GitHub 存儲庫到建置管線。

  1. 選擇你為這個項目創建的空的 GitHub 存儲庫。
Empty source GitHub repo

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

Confirm Azure DevOps Github integration

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

Error when GitHub repo is empty

此時,你的 GitHub 存儲庫將與你的 Azure DevOps 建置管線連結。

每次想要将GitHub存储库链接到Azure DevOps构建管道时,您都不必创建全新的管道。

填充示例GitHub存储库代码

没有GitHub存储库中的一些代码,Azure DevOps构建管道将无法运行。此时代码并不重要。为了在存储库中放入一些代码,我们将使用现有的存储库克隆一些代码。在这个存储库中,我有所有的源代码可用于在Azure WebApps中发布一个电子商务示例应用程序。

此存储库的示例代码将包含一个名为SimplCommerce的电子商务应用程序示例。这个应用程序是一个开源的dotnetcore应用程序,比典型的“hello world”项目更加逼真。

  1. 转到此示例GitHub存储库,然后点击导入代码,如下所示。
Empty myfirstrepo GitHub repo

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

Proving the repo clone URL

当存储库导入步骤成功完成后,请刷新Azure DevOps Pipeline窗口,然后您就可以继续操作了。

检查和查看YAML中的构建管道

在此時,您將處於流程創建過程的審查階段。您現在將看到一個以YAML表示的構建流程。這個YAML文件是根據檢測到的代碼語言(在此項目中為dotnetcore)自動構建的。

Azure DevOps的一個真正的好處之一就是流程YAML。在許多其他DevOps工具中,您必須手動構建流程文件。

Reviewing pipeline YAML

手動運行Azure構建流程

在連續集成(CI)流程中,構建通常是由提交到源代碼控制中觸發的。但是,您也可以手動觸發構建流程運行。讓我們手動啟動構建流程,看看會發生什麼。

如果您一直在跟隨,此時您應該可以點擊運行來啟動構建流程。如下面的截圖所示,這將開始流程構建過程。

Pipeline starting

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

Running on the macOS build agent

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

Running on the Linux build agent

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

Successful pipeline run

你現在已經建立了一個 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.

  1. 從 Azure DevOps 中,點擊流程,然後點擊釋出
Releases menu item

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

New release pipeline menu option

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

Select the Azure App Service deployment template

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

Specify the stage name

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

Created stage

5. 在階段欄位中,選擇1 個工作,1 個任務。這個欄位是你最終會提供用於實際部署的 Azure Web App 環境設定的地方。

6. Azure App Service 部署範本的一部分是一些你需要在這個畫面中定義的參數。

  1. 舞台名稱- 在這個例子中,Deploy-to-webapps2
  2. Azure 訂閱- 選擇您的訂閱並使用 授權 確認(需要憑證)
  3. 應用程式類型- Linux 上的 Web App
  4. 應用程式名稱- 您先前建立的 Web App
Setting template parameters

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

Going back to the pipeline

將藝術品添加到 Azure DevOps 發布管線

在發佈管線中,有許多不同的項目需要部署。這些項目稱為 藝術品。簡單來說,藝術品 是您應用程式的可部署組件。Azure Pipelines 可以部署由各種不同的 藝術品來源生成的藝術品。

在本節中,讓我們談談如何將藝術品添加到發布管線中。

  1. 管線 畫面上,點擊 新增藝術品
  2. 來源類型 已設置為 建置,這是您希望的,因為您將部署先前建立的建置管線的輸出。在 來源(建置管線) 下拉式選單中選擇先前建立的建置管線。
  3. 完成後,點擊 新增 以保存配置。
Adding an artifact

4. 最後,在螢幕右上角點擊 儲存 按鈕以保存釋出流程。

創建 Azure DevOps 釋出

一旦創建了釋出流程,您就可以開始創建 釋出。釋出是釋出流程的一次執行。將釋出流程視為模板,並將釋出流程的特定實例視為釋出。一旦有了釋出,就可以部署該釋出。

創建釋出的步驟如下:

  1. 如下圖所示,在視窗右上角點擊 建立釋出 按鈕。
New release pipeline overview

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

Create a new release item

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

Click on Release-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 釋出頁面上:

  1. 選擇Deploy_to_webapp階段並確認部署。這樣做後,狀態將如下所示變為進行中。此時,發行版將從之前執行的建置流程中獲取原始碼並將其推送到Azure WebApp實例中。

    此步驟將在後端上啟動一個運行的作業,由一個代理程式複製原始碼並執行實際的發行週期。

Stage in progress

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

Job log showing stage in progress

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

Successful stage

如果一切順利,發行版應該已經完成,您現在應該有一個已發佈到Azure Web App的網路應用程式!

檢查已部署的Azure WebApp

現在整個過程已完成,請務必檢查您的努力成果。

  1. 登入Azure門戶,導航到您在發行流程中選擇的Azure WebApp,並複製URL如下所示。
Finding the Azure App Service URL in the Azure portal

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

The front page of the deployed application

您現在已經完成了所有操作!您現在已經從GitHub存儲庫部署了一個Azure Web App,並且可以完全自動化!

清理工作

如果您在整個項目中都按照進度進行了操作,現在您應該擁有一個新的Azure DevOps組織、項目、構建管道和發布管道。如果您已經測試完成,請確保刪除創建的原始組織,以免面臨任何Azure資源的費用風險。

操作步驟如下:

  1. 返回到您的Azure DevOps工作區。
  2. 點擊左下角的組織設置
  3. 在概覽屏幕上,點擊頁面底部的刪除按鈕,位於刪除組織下方。
  4. 輸入組織名稱,然後點擊刪除。這將刪除您剛剛執行的所有工作。

你的收穫

如果您按照本項目的說明進行操作,您已經在Azure DevOps中從頭創建了完整的CI/CD管道。您現在應該對這個過程有一個很好的了解。

Azure Pipelines可以比本項目中的操作更深入,但是您現在應該對整個過程有了一些基礎知識。

Source:
https://adamtheautomator.com/azure-pipelines/