需求提供一種方式,讓管線指定代理程式中必須存在的功能,Azure DevOps 才能將作業從管線傳送至代理程式。 在受控 DevOps 集區中,ImageOverride 的需求就像在 Azure Pipelines 中的需求一樣運作,管線作業會被引導至具有與需求相匹配屬性的特定代理程式。不過,像 WorkFolder 和 Priority 這樣的需求則可用於設定代理程式上的屬性。 本文說明受控 DevOps 集區中可用的需求,以及如何使用這些需求。
工作資料夾
代理程式的預設工作資料夾通常是在 Windows 或 /mnt for Linux 的 D:\ 磁碟驅動器上,而且可以使用預先定義的變數在管線Agent.WorkFolder
中參考。 您可以透過在管線中指定 WorkFolder
需求來覆寫此位置,以變更啟動代理程式時使用的磁碟驅動器和目錄名稱。 如果您有一個有狀態的集區,並且該集區中有符合您需求的執行中代理程式,您的管線將會傳送至該代理程式。 如果您未使用有狀態的資源池,或者沒有運行匹配該 WorkFolder
的代理程式,則會啟動新的代理程式並設定為使用指定的 WorkFolder
。 如果不存在,則會建立指定的目錄。 如果的路徑名稱 WorkFolder
無效,則會使用預設代理程式工作資料夾。
在管線區段的 WorkFolder
中設定 demands
需求,以設定您的代理程式工作資料夾。 如果您使用 連結的數據磁碟 ,而且想要該磁碟上的代理程式工作資料夾,請使用 WorkFolder
並 指定數據磁碟上的資料夾作為代理程式工作目錄。
Windows 代理程式的預設工作資料夾通常位於 D:\ 磁碟驅動器,可以在管線中使用 Agent.WorkFolder
來進行引用。
pool:
name: fabrikam-managed-pool # Name of Managed DevOps Pool
demands:
- WorkFolder -equals f:\custom-work-folder
優先順序
Priority
指定作業的優先順序。 優先順序較高的作業會先執行。 有效值為:High
、、Medium
Low
。 預設值是 Medium
。
在 Priority
管線的 demands
區段中設定需求。
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- Priority -equals Low
作業會依照優先順序從佇列中選擇執行。 例如,您有一個集區,其代理程式設定上限為 10,且管線設定為使用此集區。 資源池已經在執行10個管線,另外還有20個管線正在排隊。 如果您有優先管線要執行,例如推送緊急修正,它通常會在 10 個執行中的管線和 20 個佇列中的管線完成之後才運行。 如果您在佇列 Hotfix 管線時將優先順序設定為高,它會取得代理程式,並在 20 個先前排入佇列的管線之前執行。
如果多個作業同時排入佇列,則優先順序較低的作業可能會先執行優先順序較高的作業。
針對具有多個作業的單一管線案例:
- 如果您的管線具有 定義循序作業的相依性,則不論每個作業的優先順序設定為何,循序作業都會依管線所指定的順序執行。
- 如果您的管線有多個作業設定為以平行方式執行(YAML 管線的預設值),作業會同時排入佇列,且管線中優先順序較低的作業可能會在優先順序較高的管線中作業之前執行。
圖像覆蓋
如果您的集區中有多個映像,您可以使用 ImageOverride
需求指令來設定管線,以使用特定映像,並提供 要使用的映像別名。 如果您使用 Azure Pipelines 映像,您可以使用其 預先定義的別名。 針對所有其他映像,您必須 設定自己的別名。
重要
如果您的集區中有多個映像,且未在管線中使用需求來指定映射,管線會使用集區中第一個列出的映像來執行。 您可以藉由變更 [images
] 區段中 [fabricProfile
] 列表中的影像順序來調整集區中的影像順序(如果使用 範本),或者在 Azure 入口網站中使用拖放方式,來排列影像列表 中的 影像。
在下列範例中,流水線會設定為使用已設定ubuntu-24.04-gen2
別名的映像來執行。
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- ImageOverride -equals ubuntu-24.04-gen2
重要
在ImageOverride
需求中,請勿在別名名稱外加上引號,即使名稱中有空格。
圖像版本覆蓋
如果您想要使用特定版本的映像,而不是映像組態所指定的版本,您可以使用 ImageVersionOverride
需求。 例如,您可以使用它來驗證新的映像版本,再將它升級為 映像的最新 版本。
重要
當您使用 ImageVersionOverride
來指定不同於集區 設定中設定的映像版本時,會使用指定的映像版本視需要啟動每個代理程式。
待命代理程式 是使用集區組 態中指定的映像版本來布建,因此如果您使用 ImageVersionOverride
,則任何待命代理程式都不符合該版本,而且會啟動新的代理程式。
在 ImageVersionOverride
管線的 demands
區段中設定需求。 下列範例指定 ImageVersionOverride
的 20250427.1.0
。
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- ImageVersionOverride -equals 20250427.1.0
小提示
如果您認為管線因映像更新而失敗,請遵循 疑難解答 - 檢查是否有映像更新中的程序。
自訂能力
如果您有具狀態集區,而且想要在特定執行中的代理程式實例上執行作業,您可以使用 CustomCapabilities
要求。
重要
需求 CustomCapabilities
僅適用於有狀態集區中的代理程式。 當您使用無狀態集區時,您會取得每一個任務的全新代理映像。
當您在管線中指定 CustomCapabilities
需求時,如果任何具有相同需求的管線先前執行,且執行管線的具狀態代理程式仍在在線,該代理程式將用來執行管線。 如果沒有任何在線代理符合 CustomCapabilities
需求,則會從集區中布建一個代理,並標記 CustomCapabilities
需求,用來執行管道。 具有相同 CustomCapabilities
需求的後續作業,只要該代理程式在在線,就會使用該標記的代理程序實例來執行其作業。
在下列範例中,管線是使用 windows-2022
具狀態集區中的 Azure Pipelines 映射來執行。 如果在線代理程式已準備好接受作業,並且已使用 CustomCapabilities
屬性標記 (由先前在代理程式上執行的管線所設定),該代理程式將用來執行此管線。 如果沒有任何在線代理程式符合此需求,則會使用下一個可用的代理程式來執行作業,而且代理程式會以 CustomCapabilities
屬性標記。 未來使用此需求的管線執行將會在此代理程式上進行,前提是該代理程式已上線且準備好接受作業。
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- ImageOverride -equals windows-2022
- CustomCapabilities -equals MyCustomValue
例如,您有一個大型存放庫需要很長的時間才能克隆,並且您有多條基於這個存放庫的流水線。 在管線中重複使用相同的 CustomCapabilities
需求,可協助第二個管線更快速地執行,方法是使用已經克隆存放庫的代理程式。