選擇 Microsoft 裝載或自我裝載的組建代理程式

已完成

在此單元中,您將了解您在選擇組建代理程式時應考量的一些因素。 您將了解使用 Microsoft 託管的代理程式有哪些優點和限制,以及設定您自己的私人組建代理程式時牽涉到哪些層面。

什麼是組建代理程式和代理程式集區?

組建代理程式是一個執行組建工作的系統。 您可以將其視為執行建置程序的專用伺服器。

假設您有一個 Azure Pipelines 專案每天接收組建要求多次,或者您可能有多重專案可以使用相同類型的組建代理程式。 您可以將組建代理程式組織為代理程式集區,以利確保有備妥的伺服器可處理每個組建要求。

觸發組建時,Azure Pipelines 會從集區中選取可用的組建代理程式。 如果所有代理程式都在忙碌中,程序會等候其中一個代理程式變成可用狀態。

當您使用 Microsoft 裝載的代理程式時,您會從集區指定要使用的 VM 映像。 以下是您現有的組建組態使用 Ubuntu 20.04 組建代理程式的範例:

pool:
  vmImage: 'ubuntu-20.04'
  demands:
  - npm

當您使用 Microsoft 裝載的代理程式時,您會使用 vmImage 來指定您需要的系統類型。 Microsoft 提供許多類型的 VM 映像,包括執行 Windows、macOS 與各種 Linux 發行版本的 VM 映像。

demands 區段會指定您的組建電腦所需具備的軟體或功能。

當您使用本身集區中的組建代理程式 (也稱為私人集區) 時,您必須指定集區的名稱。 以下是範例:

pool:
  name: 'MyAgentPool'
  demands:
  - npm

如果您不需要 demands 區段,您可以依照下列方式縮短語法:

pool: 'MyAgentPool'

您將建立組建代理程式,並在此課程模組的後續步驟將其新增至集區。

我可以使用何種代理程式?

當您在選擇組建代理程式時,必須考量兩個因素:

  • 您要作為組建基礎的作業系統
  • 您可以使用 Microsoft 裝載的代理程式,或您需要提供自己的代理程式

Azure Pipelines 支援下列作業系統:

您應選擇的組建代理程式,主要取決於您使用哪些工具來組建程式碼。 例如,如果您使用 Xcode 來建置應用程式時,則可以選擇 macOS 代理程式。 如果您需要 Visual Studio,則可能會選擇 Windows 代理程式。

您現有的組建組態會使用 Microsoft 裝載的代理程式。 裝載的代理程式會在 Microsoft 為您提供的基礎結構上執行。

私人代理程式會使用您所提供的基礎結構。 您的代理程式可以是在雲端或您資料中心內執行的系統。 只要代理程式符合您的需求,而且可以連線到 Azure Pipelines,則任一種系統都能夠運作。 在此課程模組中,您會使用我們所提供在 Azure 上執行的 VM。

何時應該使用我自己的組建代理程式?

就大多數組建工作而言,Microsoft 裝載的代理程式就能包辦您所需要的一切。 這是最簡單的開始方式。

Microsoft 會為您處理所有安全性與其他作業系統更新的相關事項。 您只需要定義要執行的組建組態即可。

裝載的代理程式也包含用來建置許多常見應用程式類型的軟體。 您可以在組建程序期間新增您所需的任何其他軟體。

Microsoft 裝載的代理程式有一些限制,包括:

  • 組建持續時間:組建工作最多可執行六個小時。
  • 磁碟空間:裝載的代理程式可為您的來源與組建輸出提供固定空間的儲存體。 但此儲存體可能不足以完成工作。
  • CPU、記憶體及網路:裝載的代理程式會在 Microsoft Azure 的一般用途 VM 上執行。 Standard_DS2_v2 描述您可以預期的 CPU、記憶體與網路特性。
  • 互動功能:您無法登入裝載的代理程式。
  • 檔案共用:您無法將組建成品置放於通用命名慣例 (UNC) 檔案共用。

雖然裝載的代理程式相當容易設定,但除了先前提到的限制外,使用自己的組建代理程式還有其他優點。

例如,當您使用裝載的代理程式時,您會與其他 Azure DevOps 使用者共用基礎結構。 雖然您的組建通常只需要幾秒鐘即可啟動,但視 Microsoft 系統負載而定,有時可能耗時更久。

此外,在使用裝載的代理程式時,每個組建都會有全新系統。 當您自備組建代理程式時,您可以決定是要每次都執行全新組建,還是執行「累加組建」。 使用累加組建時,您會以現有的組建工具與已編譯的程式碼為基礎加以建置。 累加組建的完成所需時間可能較短,因為系統已安裝許多建置工具與相依元件。

其缺點是,建置基礎結構是您自己的,因此您必須自行確保組建代理程式包含最新的軟體和安全性修補程式。

如何設定私人組建代理程式?

私人組建代理程式包含建置應用程式所需的軟體。 其也包含可讓系統連線至 Azure Pipelines 並接收組建工作的代理程式軟體。

當您設定私人代理程式時,您會提供組建執行所在的基礎結構。 這可讓您以靈活的方式啟動及維護您的代理程式。

例如,您可以:

  • 手動設定組建代理程式:啟動系統、登入,並以互動方式安裝您的建置工具與代理程式軟體。

  • 流程自動化:啟動系統,然後執行指令碼或工具以安裝您的建置工具與代理程式軟體。 您可以在系統再次上線後或在佈建程序期間設定代理程式。

    例如,在 Azure 上執行組建代理程式時,您可以使用 Azure Resource Manager 範本 (ARM 範本) 或 Bicep 來啟動系統,並將其設定為組建代理程式統合步驟。 HashiCorp 的 Terraform 是另一種可將程序自動化的方式。 Terraform 適用於許多類型的基礎結構,包括 Azure。

  • 建立映像:您可以為已設定的環境建立映像 (或快照)。 然後,您可以使用映像在集區中視需要建立多個相同的系統。

手動設定是很適當的開始方式,因為這樣可讓您了解相關流程。 當您只需要一個組建代理程式時,這也是能最快進行設定的方式。

如果您需要多個組建代理程式,或者您需要定期啟動和清除組建基礎結構,自動化將有所幫助。 當您需要多個代理程式時,您可以從手動流程轉換為自動化流程。

映像是自動化形式的一種。 因為所有軟體都已預先設定,所以映像有助於節省時間。 其缺點是,您可能需要定期重建映像,以納入最新的 OS 修補程式與組建工具。 HashiCorp 的 Packer 是建立映像的常用工具。

針對您的 Space Game 案例,您決定使用私人組建代理程式。

檢定您的知識

1.

假設您正在建置電子遊戲。 建置流程需要 2 小時,而且會使用 18 GB 到 20 GB 的磁碟空間來編譯遊戲資產。 您可以使用何種組建代理程式?

2.

假設您要組建在 macOS、Linux 與 Windows 上執行的應用程式。 您要如何為每個目標平台組建應用程式?

3.

自我裝載組建代理程式: