要求
需求提供一種方式,讓管線指定代理程式中必須存在的功能,Azure DevOps 才能將作業從管線傳送至代理程式。 在受控 DevOps 集區中,ImageOverride 的需求就像 Azure Pipelines 中的需求一樣運作,其中管線作業會路由傳送至具有符合需求屬性的特定代理程式,但某些需求,例如 WorkFolder 和 Priority,可用來設定代理程式上的屬性。 本文說明受控 DevOps 集區中可用的需求,以及如何使用這些需求。
WorkFolder
代理程式的預設工作資料夾通常是在 Windows 或 /mnt for Linux 的 D:\ 磁碟驅動器上,而且可以使用預先定義的變數在管線Agent.WorkFolder
中參考。 您可以藉由在管線中指定 WorkFolder
需求來覆寫此位置,以變更啟動代理程式時所使用的磁碟驅動器和目錄名稱。 如果您有具有符合您需求的執行中代理程式的 WorkFolder
具狀態集區,您的管線將會傳送至該代理程式。 如果您未使用具狀態集區,或沒有使用該 執行的 WorkFolder
代理程式,則會啟動新的代理程式並設定為使用指定的 WorkFolder
。 如果不存在,則會建立指定的目錄。 如果的路徑名稱 WorkFolder
無效,則會使用預設代理程式工作資料夾。
在 WorkFolder
管線區段中設定需求 demands
,以設定代理程式工作資料夾。 如果您使用 連結的數據磁碟 ,而且想要該磁碟上的代理程式工作資料夾,請使用 WorkFolder
並 指定數據磁碟上的資料夾作為代理程式工作目錄。
pool:
name: fabrikam-managed-pool # Name of Managed DevOps Pool
demands:
- WorkFolder -equals c:\custom-work-folder # Windows agent example
# Use a folder like /user/local/custom-work-folder for Linux
# or /mnt/storage/sdc/custom-work-folder if you're using a data disk.
優先順序
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
如果您的集區中有多個映像,您可以使用需求設定管線來使用特定映射 ImageOverride
,並提供 要使用的映像別名 。 如果您使用 Azure Pipelines 映射,您可以使用其 預先定義的別名。 針對所有其他映像,您必須 設定自己的別名。
在下列範例中,管線會設定為使用已設定 ubuntu-20.04-gen2
別名的映射來執行。
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- ImageOverride -equals ubuntu-20.04-gen2
重要
請勿將別名名稱的引號放在需求中 ImageOverride
,即使名稱中有空格也一樣。
ImageVersionOverride
如果您使用 共用映像庫 或 Azure Marketplace 映射,而且想要使用特定版本的映像,而不是映像組態所指定的版本,您可以使用ImageVersionOverride
需求。 例如,您可以使用它來驗證新的映像版本,再將它升級為 映像的最新 版本。 下列範例指定 ImageVersionOverride
的 2.0.0
。
在 ImageVersionOverride
管線的 demands
區段中設定需求。
pool:
name: fabrikam-dev-pool # Name of Managed DevOps Pool
demands:
- ImageVersionOverride -equals 2.0.0
CustomCapabilities
如果您有具狀態集區,而且想要在特定執行中的代理程序實例上執行作業,您可以使用 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
需求,可協助第二個管線更快速地執行,方法是使用已複製的存放庫代理程式。