訓練
模組
在 Azure Pipelines 中裝載您的組建代理程式 - Training
透過 Space Game Web 小組的指引,設定在內部部署中執行的組建代理程式,或在雲端中執行的 Azure 虛擬機器。
Azure DevOps Services
Microsoft裝載的代理程式僅適用於裝載於雲端的 Azure DevOps Services。 您無法搭配內部部署 TFS 或 Azure DevOps Server 使用Microsoft裝載的代理程式或 Azure Pipelines 代理程式集區。 使用這些內部部署版本,您必須使用 自我裝載的代理程式。
重要
選取對應至您平臺和版本的本文版本。 版本選取器位於目錄上方。 查閱您的 Azure DevOps 平臺和版本。
如果您的管線位於 Azure Pipelines 中,您可以使用Microsoft裝載的代理程式,輕鬆地執行作業。 使用 Microsoft 託管的代理程式,就不需要自己維護和升級。 您一律會取得管線中指定的最新版本的 VM 映像。 每次執行管線時,您都會為管線中的每個作業取得全新的虛擬機器。 虛擬機器會在一個作業之後捨棄 (這表示作業對虛擬機器檔案系統所做的任何變更,例如簽出程式碼,將無法用於下一個作業)。 Microsoft裝載的代理程式可以直接在 VM 或容器上執行作業。
Azure Pipelines 提供預先定義的代理程式集區 (名為 Azure Pipelines) 搭配 Microsoft 裝載的代理程式。
對於許多小組來說,這是執行作業的最簡單方式。 您可以先試用,看看這是否適用於您的組建或部署。 如果沒有,您可以使用 擴展集代理程式 或自我裝載代理程式。
提示
您可以免費試用Microsoft裝載的代理程式。
Azure Pipelines 代理程式集區提供數個虛擬機映射可供選擇,每個映像都包含各種工具和軟體。
映像 | 傳統編輯器代理程序規格 | YAML VM 映像標籤 | 包含的軟體 |
---|---|---|---|
Windows Server 2022 與 Visual Studio 2022 | windows-2022 |
windows-latest 或 windows-2022 |
連結 |
Windows Server 2019 搭配 Visual Studio 2019 | windows-2019 | windows-2019 |
連結 |
Ubuntu 24.04 | ubuntu-24.04 | ubuntu-24.04 |
連結 |
Ubuntu 22.04 | ubuntu-22.04 |
ubuntu-latest 或 ubuntu-22.04 |
連結 |
Ubuntu 20.04 | ubuntu-20.04 | ubuntu-20.04 |
連結 |
macOS 15 Sequia 預覽 | macOS-15 | macOS-15 |
連結 |
macOS 14 Sonoma | macOS-14 |
macOS-latest 或 macOS-14 |
連結 |
macOS 13 Ventura | macOS-13 | macOS-13 |
連結 |
macOS 12 蒙特利 | macOS-12 | macOS-12 |
已取代 |
傳統組建管線的預設代理程式映射為 windows-2019,而 YAML 組建管線的預設代理程式映像為 ubuntu-latest
。 如需詳細資訊,請參閱 在管線中指定集區。
您可以選擇資料表中的 [包含的軟體] 連結,以查看每個託管代理程式的 已安裝軟體 。 使用macOS映射時,您可以從工具版本手動選取。 閱讀更多內容。
ubuntu-latest
影像使用 ubuntu-22.04
。windows-latest
影像使用 windows-2022
。macOS-latest
影像使用 macOS-11
。macOS-10.14
)vs2015-win2012r2
)macOS-10.13
)win1803
)建議客戶移轉至較新版本或 自我裝載的代理程式。
如需有關如何更新使用這些映像之管線的詳細資訊和指示,請參閱 移除 Azure Pipelines 託管集區中的舊映像。
注意
macOS 容量目前有限制。 不同於 Linux 和 Windows 映像,我們的容量會受到 Azure 所有容量的限制,而 macOS 容量則受限於我們可用的硬體數量。 雖然我們正在努力讓 2024 年春季提供額外的容量,但有些作業可能會遇到延遲執行。 如果可能,例如針對不會建立 Apple 生態系統應用程式的工作,客戶應選擇 Linux 或 Windows 映像。
注意
Azure Pipelines 裝載的集區會取代先前裝載的集區,這些集區的名稱對應至對應的映像。 您在先前裝載集區中擁有的任何作業都會自動重新導向至新 Azure Pipelines 裝載集區中的正確映像。 在某些情況下,您仍可能會看到舊的集區名稱,但裝載作業會在幕後使用 Azure Pipelines 集區執行。 如需此更新的詳細資訊,請參閱 2019 年 7 月 1 日 - Sprint 154 版本資訊中的單一裝載集區版本資訊。
重要
若要要求Microsoft裝載的代理程式上安裝其他軟體,請勿在此檔上建立意見反應要求,或開啟支援票證。 相反,請在我們管理指令碼以產生各種映像的存放庫上提出問題。
若要識別使用已取代映像的管線,請流覽至您組織中的下列位置: https://dev.azure.com/{organization}/{project}/_settings/agentqueues
,並篩選要檢查的映射名稱。 下列範例會 vs2017-win2016
檢查影像。
您也可以使用此處的腳本來查詢已取代之專案映像的作業歷程記錄,如下列範例所示。
./QueryJobHistoryForRetiredImages.ps1 -accountUrl https://dev.azure.com/{org} -pat {pat}
在 YAML 管線中,如果您未指定集區,管線預設為 Azure Pipelines 代理程式集區。 您只需要指定要使用的虛擬機映像。
jobs:
- job: Linux
pool:
vmImage: 'ubuntu-latest'
steps:
- script: echo hello from Linux
- job: macOS
pool:
vmImage: 'macOS-latest'
steps:
- script: echo hello from macOS
- job: Windows
pool:
vmImage: 'windows-latest'
steps:
- script: echo hello from Windows
注意
集區的規格可以在YAML檔案中的多個層級完成。 如果您注意到管線未在預期的映射上執行,請確定您在管線、階段和作業層級驗證集區規格。
當您使用Microsoft裝載的代理程式時,請一律使用 變數 來參考組建環境和代理程序資源。 例如,不要硬式編碼包含存放庫的驅動器號或資料夾。 託管代理程式的精確版面配置可能會變更,而不會發出警告。
在具有雙核心 CPU、7 GB RAM 和 14 GB SSD 磁碟空間的 Azure 通用虛擬機器上,佈建有執行 Windows 和 Linux 映像的 Microsoft 裝載的代理程式。 這些虛擬機器位於 Azure DevOps 組織所在的地理位置。
執行 macOS 映像的代理程式在佈建 3 核心 CPU、14 GB RAM 和 14 GB SSD 磁碟空間的 Mac 專業版上進行設定。 無論 Azure DevOps 組織位於何處,這些代理程式一律在美國執行。 如果資料主權對您很重要,而且您的組織不在美國,則您不應該使用 macOS 映像。 深入了解。
所有這些機器至少有 10 GB 的可用磁碟空間供管線執行。 當您的管線簽出原始程式碼、下載套件、拉取 Docker 映像或產生中繼檔案時,會取用此可用空間。
重要
我們無法接受增大 Microsoft 裝載的代理程式之磁碟空間,或佈建更強大的機器的要求。 如果 Microsoft 裝載的代理程式之規格不符合您的需求,則您應該考慮自我裝載代理程式或擴展集代理程式。
在某些設定中,您可能需要知道部署代理程式的 IP 位址範圍。 例如,如果需要透過防火牆授與裝載的代理程式的存取權,可以依 IP 位址限制該存取權。 因為 Azure DevOps 使用 Azure 全域網路,因此 IP 範圍會隨時間而變化。 Microsoft發佈 每周 JSON 檔案 ,列出 Azure 數據中心的IP範圍,依區域細分。 此檔案每週更新一次,並包含新計劃的 IP 範圍。 只有最新版本的檔案可供下載。 如果需要舊版,必須在每週檔案發佈時及時下載並封存。 新的 IP 範圍會在隔週生效。 我們建議您經常檢查 (每週至少一次),以確保清單為最新。 如果代理程式作業開始失敗,第一個疑難排解步驟是確定您的設定符合最新的 IP 位址清單。 託管代理程式的IP位址範圍會列在美國西部區域的每周檔案底下AzureCloud.<region>
AzureCloud.westus
。
裝載的代理程式在組織所在的 Azure 地理位置中執行。 每個地理位置包含一個或多個區域。 雖然代理程式可能會在組織所在的區域執行,但並不保證情況一定如此。 若要取得代理程式之可能的 IP 範圍完整清單,必須使用您所在地理位置所包含之所有區域的 IP 範圍。 例如,如果您的組織位於 美國 地理位置,則必須使用該地理位置中所有區域的IP範圍。
若要判斷地理位置,請流覽至 https://dev.azure.com/<your_organization>/_settings/organizationOverview
,取得您的區域,並從 Azure geography 數據表尋找相關聯的地理位置。 識別地理位置之後,請針對該地理位置中的所有區域,使用每周檔案中的IP範圍。
重要
您無法使用 ExpressRoute 或 VPN 之類的私人連線,將Microsoft裝載的代理程式連線到公司網路。 Microsoft 裝載的代理程式與伺服器之間的流量會流經公用網路。
AzureCloud.<region>
,格式如下。AzureCloud.westus
您可以從適用於 .NET 的 Azure 管理連結庫,檢閱傳遞至 Region 類別原始碼中定義之區域建構函式的區域名稱,將區域名稱從 Azure Geography 清單對應至每周檔案中使用的格式。
注意
由於 Azure 管理連結庫 for .NET 中沒有 API 可列出地理位置的區域,因此您必須手動列出它們,如下列範例所示。
注意
由於容量限制,巴西南部或西歐地區的某些組織偶爾可能會看到其託管的代理程序位於其預期的地理位置之外。 在這些情況下,除了包含地理位置中所有區域的IP範圍,如上一節所述,容量後援地理位置中的區域必須包含其他IP範圍。
如果您的組織位於巴西南部區域,您的容量後援地理位置會 美國。
如果您的組織位於 西歐 區域,則容量後援地理位置為 法國。
我們的 Mac IP 範圍不會包含在上述 Azure IP 中,因為其裝載於 GitHub 的 macOS 雲端。 您可以使用此處提供的指示,使用 GitHub 元數據 API 來擷取 IP 範圍。
在下列範例中,會從每周檔案擷取美國西部區域中組織的託管代理程式IP位址範圍。 由於美國西部區域位於 美國 地理位置中,因此會包含 美國 地理位置中所有區域的 IP 位址。 在此範例中,IP 位址會寫入主控台。
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
namespace WeeklyFileIPRanges
{
class Program
{
// Path to the locally saved weekly file
const string weeklyFilePath = @"C:\MyPath\ServiceTags_Public_20230904.json";
static void Main(string[] args)
{
// United States geography has the following regions:
// Central US, East US, East US 2, East US 3, North Central US,
// South Central US, West Central US, West US, West US 2, West US 3
// This list is accurate as of 9/8/2023
List<string> USGeographyRegions = new List<string>
{
"centralus",
"eastus",
"eastus2",
"eastus3",
"northcentralus",
"southcentralus",
"westcentralus",
"westus",
"westus2",
"westus3"
};
// Load the weekly file
JObject weeklyFile = JObject.Parse(File.ReadAllText(weeklyFilePath));
JArray values = (JArray)weeklyFile["values"];
foreach (string region in USGeographyRegions)
{
string tag = $"AzureCloud.{region}";
Console.WriteLine(tag);
var ipList =
from v in values
where tag.Equals((string)v["name"], StringComparison.OrdinalIgnoreCase)
select v["properties"]["addressPrefixes"];
foreach (var ip in ipList.Children())
{
Console.WriteLine(ip);
}
}
}
}
}
服務標籤無法列出Microsoft裝載的代理程式。 如果您嘗試將裝載的代理程式存取權授與資源,必須遵循 IP 範圍允許清單方法。
Microsoft裝載的代理程式會在安全的 Azure 平台上執行。 不過,您必須注意下列安全性考慮。
Microsoft裝載的代理程式:
cgroup
提供 6 GB 物理記憶體和 13 GB 總記憶體的 中的步驟。Microsoft裝載的代理程序不提供:
如果Microsoft裝載的代理程式不符合您的需求,您可以部署自己的 自我裝載代理程式、使用 擴展集代理程式或 受控 DevOps 集區代理程式。
您可以選擇 [軟體] 資料表中的 [包含的軟體] 連結,以查看每個託管代理程式的已安裝軟體。
注意
根據預設,Windows 代理程式會使用隨附於代理程式軟體的 Git 版本。 Microsoft建議使用隨附於代理程式的 Git 版本,但您有數個選項可覆寫此預設行為,並使用代理程式電腦已安裝在路徑中的 Git 版本。
System.PreferGitFromPath
的管線變數設定為 true
。System.PreferGitFromPath=true
行新增至檔案。 如需詳細資訊,請參閱 如何? 為每個個別代理程式設定不同的環境變數?若要查看管線所使用的 Git 版本,您可以查看管線中步驟的記錄 checkout
,如下列範例所示。
Syncing repository: PathFilter (Git)
Prepending Path environment variable with directory containing 'git.exe'.
git version
git version 2.26.2.windows.1
如需映像上所含軟體版本的詳細資訊,請參閱 所安裝專案的指導方針。
影像通常會每周更新一次。 您可以檢查 狀態徽章 ,其格式 20200113.x
為第一個部分指出影像更新日期的格式。
您可以選擇 [使用Microsoft裝載的代理程序數據表] 中的 [包含的軟體] 連結,以提出 GitHub 問題,讓我們知道。
您也可以使用包含所需軟體確切版本的自我裝載代理程式。 如需詳細資訊,請參閱 自我裝載代理程式。
我們無法增加Microsoft裝載代理程式的記憶體、處理能力或磁碟空間,但您可以使用裝載於機器上的自我裝載代理程式或擴展集代理程式,搭配您所需的規格。
Microsoft裝載的代理程式僅適用於 Azure Pipelines,不適用於 TFS 或 Azure DevOps Server。
根據預設,組織中的所有項目參與者都可以存取Microsoft裝載的代理程式。 但是,您的組織系統管理員可能會限制Microsoft裝載的代理程式的存取權,以選取使用者或專案。 要求 Azure DevOps 組織的擁有者授與您使用Microsoft裝載代理程序的許可權。 請參閱 代理程式集區安全性。
如果您的管線最近速度變慢,請參閱我們的狀態頁面以了解中斷。 我們的服務可能有問題。 或者,檢閱您在應用程式程式碼或管線中所做的任何變更。 在簽出期間,您的存放庫大小可能已增加、您可能正在上傳大型成品,或者您可能正在執行更多測試。
如果您僅設定管線並將 Microsfot 裝載代理程式與本機電腦或自我裝載代理程式進行比較,請注意我們用來執行作業的規格。 我們無法為您提供更大或功能更強大的機器。 如果無法接受此效能,您可考慮使用自我裝載式代理程式或擴展集代理程式。
所有 Azure DevOps 組織都會為開放原始碼專案提供數個免費平行作業,以及每個月一個免費平行作業,以及私人專案的有限分鐘數。 如果您需要開放原始碼專案的額外分鐘數或平行作業,請連絡 支持人員。 如果您需要私人項目的額外分鐘數或平行作業,您可以 購買更多專案。
您的自我裝載代理程式可能已安裝所有正確的相依性,而相同的相依性、工具和軟體不會安裝在Microsoft裝載的代理程式上。 首先,請遵循上表中包含的軟體連結 ,仔細檢閱安裝在 Microsoft 裝載代理程式上的軟體 清單。 然後,將這與安裝在自我裝載代理程式上的軟體進行比較。 在某些情況下,Microsoft裝載的代理程式可能會有您需要的工具(例如 Visual Studio),但可能尚未安裝所有必要的選擇性元件。 如果您發現差異,則您有兩個選項:
您可以在存放庫上建立新的問題,我們會在其中追蹤其他軟體的要求。 連絡支持人員無法協助您在Microsoft裝載的代理程式上設定新軟體。
您的本機計算機可能已安裝所有正確的相依性,而相同的相依性、工具和軟體不會安裝在Microsoft裝載的代理程式上。 首先,請遵循上表中包含的軟體連結 ,仔細檢閱安裝在 Microsoft 裝載代理程式上的軟體 清單。 然後,將這與安裝在本機計算機上的軟體進行比較。 在某些情況下,Microsoft裝載的代理程式可能會有您需要的工具(例如 Visual Studio),但可能尚未安裝所有必要的選擇性元件。 如果您發現差異,則您有兩個選項:
您可以在存放庫上建立新的問題,我們會在其中追蹤其他軟體的要求。 這是安裝新軟體的最佳選擇。 連絡支持人員將無法協助您在Microsoft裝載的代理程式上設定新的軟體。
Microsoft 裝載的代理程式僅有 10 GB 的磁碟空間可供執行您的作業。 當您簽出原始碼、下載套件、下載 Docker 映像或產生中繼檔案時,會耗用此空間。 不幸的是,我們無法增加裝載Microsoft映像上的可用空間。 您可以重新建構管線,使其可以納入此空間。 或者,您可以考慮使用 自我裝載代理 程式或 擴展集代理程式。
如果您依 DNS 名稱參照伺服器,請確定您的伺服器可透過其 DNS 名稱在因特網上公開存取。 如果您依其IP位址參照您的伺服器,請確定IP位址可在因特網上公開存取。 在這兩種情況下,請確定代理程式與公司網路之間的任何防火牆都 允許代理程式IP範圍 。
如果您收到 SAS 錯誤碼,很可能是因為由於您的 Azure 儲存體 規則,不允許來自Microsoft裝載代理程式的 IP 位址範圍。 有一些因應措施:
如果您使用 Azure Pipelines 和 TFS 隨附的 Xcode 工作 ,您可以在該工作的屬性中選取 Xcode 版本。 否則,若要手動將 Xcode 版本設定為在託管 macOS 代理程式集區上使用,請在xcodebuild
建置工作之前,視需要執行此命令行,並視需要取代 Xcode 版本號碼 13.2:
/bin/bash -c "sudo xcode-select -s /Applications/Xcode_13.2.app/Contents/Developer"
您可以在這裡找到代理程式的託管 macOSmacos-12
Xcode 版本。
若要在裝載的 macOS 代理程式集區上手動選取要使用的 Mono 版本,請在您的 Mono 建置工作之前,於組建的每個作業中執行此腳本,並指定具有所需 Mono 版本的符號連結:
SYMLINK=<symlink>
MONOPREFIX=/Library/Frameworks/Mono.framework/Versions/$SYMLINK
echo "##vso[task.setvariable variable=DYLD_FALLBACK_LIBRARY_PATH;]$MONOPREFIX/lib:/lib:/usr/lib:$DYLD_LIBRARY_FALLBACK_PATH"
echo "##vso[task.setvariable variable=PKG_CONFIG_PATH;]$MONOPREFIX/lib/pkgconfig:$MONOPREFIX/share/pkgconfig:$PKG_CONFIG_PATH"
echo "##vso[task.setvariable variable=PATH;]$MONOPREFIX/bin:$PATH"
訓練
模組
在 Azure Pipelines 中裝載您的組建代理程式 - Training
透過 Space Game Web 小組的指引,設定在內部部署中執行的組建代理程式,或在雲端中執行的 Azure 虛擬機器。