管線會使用 需求 來指定代理程式需要哪些功能,讓 Azure DevOps 將管線作業傳送至代理程式。
在受控 DevOps 集區中,需求就像 ImageOverride Azure Pipelines 中的需求一樣運作。 管線工作會路由至具有符合需求的屬性的特定代理程式。 您可以使用一些需求 (例如 WorkFolder 和 Priority) 來設定代理程式上的屬性。
本文說明受控 DevOps 集區中可用的需求,以及如何使用這些需求。
工作資料夾
代理程式的預設工作資料夾通常位於 Windows 的磁碟機或 Linux 的磁碟機D上/mnt,而且您的管線可以使用Agent.WorkFolder變數來參考它。 您可以覆寫此位置,以變更代理程式啟動時所使用的磁碟機和目錄名稱,只需在管線設置中指定 WorkFolder 需求項目。
如果您有一個具狀態的集區,其中的執行代理程式符合您的需求,那麼管線作業將傳送至該代理程式 WorkFolder。 如果您未使用可設定狀態集區,或沒有執行該集 WorkFolder區的代理程式,則會啟動新的代理程式,並設定為使用指定的 WorkFolder。 如果不存在,則會建立指定的目錄。 如果的路徑名稱 WorkFolder 無效,則會使用預設代理程式工作資料夾。
透過在管線的demands區段中設定WorkFolder要求來設置代理程式的工作資料夾。 如果您使用 連結的數據磁碟 ,而且想要該磁碟上的代理程式工作資料夾,請使用 WorkFolder 並 指定數據磁碟上的資料夾作為代理程式工作目錄。
Windows 代理程式的預設工作資料夾通常位於磁碟機 D上。 您可以在管線中使用Agent.WorkFolder來參考它。
pool:
name: fabrikam-managed-pool # Name of pool
demands:
- WorkFolder -equals f:\custom-work-folder
優先順序
Priority 指定作業的優先順序。 優先順序較高的作業會先執行。 有效值為: High、 Medium和 Low。 預設值是 Medium。
在 Priority 管線的 demands 區段中設定需求。
pool:
name: fabrikam-dev-pool # Name of pool
demands:
- Priority -equals Low
作業會依照優先順序從佇列中選擇執行。 例如,您有一個集區,其代理程式數目上限設定為 , 10 而且您已將管線設定為使用此集區。 集區正在運行 10 條管線,另外 20 條正在排隊中。 如果您想要執行優先順序管線,例如推送 Hotfix,它通常會在 10 個執行中的管線和 20 個佇列的管線完成後執行。 當您將緊急管線排入佇列並將其優先順序設為 High 時,它會獲得代理程式,並在先前排入佇列的 20 個管線之前執行。
如果多個工作同時排入佇列,則優先順序較低的工作可能會先於優先順序較高的工作執行。
針對具有多個作業的單一管線案例:
- 如果您的管線具有 定義循序作業的相依性,則不論每個作業的優先順序設定為何,循序作業都會依管線所指定的順序執行。
- 如果您的管線有多個作業設定為平行執行 (這是 YAML 管線的預設值),則作業會同時排入佇列。 管線中具有較低優先順序值的作業可能會先於管線中具有較高優先順序值的作業執行。
圖像覆蓋
如果您的資源池中有多個映像檔,您可以將管線設定為使用特定的映像檔。 使用 ImageOverride 需求並提供影像的 別名。 若要使用 Azure Pipelines 映像,請使用其 預先定義的別名。 針對所有其他映像,您必須 設定自己的別名。
如果您的集區中有多個映像,而且未使用管線中的需求來指定映像,管線會使用集區中第一個列出的映像來執行。 您可以透過變更images清單中fabricProfile區段的影像順序來調整池中的影像順序(當您使用範本時)。 您也可以拖曳影像,以排序 Azure 入口網站中 影像清單中的影像 。
在下列範例中,管道被設定為在具有 ubuntu-24.04-gen2 別名的映像上執行。
pool:
name: fabrikam-dev-pool # Name of 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 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 pool
demands:
- ImageOverride -equals windows-2022
- CustomCapabilities -equals MyCustomValue
例如,如果您有一個需要很長時間才能克隆的大型儲存庫,而且您有多個管線從此儲存庫執行,則可以在管線中使用相同的 CustomCapabilities 要求。 此要求透過使用已擁有儲存庫複製的代理程式,協助第二個管線更快速地運行。