共用方式為


設定縮放

您可以設定擴展設定來管理受管 DevOps 集區執行個體的效能和成本。 如需定價和效能的相關信息,請參閱 管理成本和效能

代理程序狀態

您可以將集區設定為:

  • 無狀態:為每項工作提供新的代理。
  • 有狀態:允許在多個工作之間共用代理程式。

集區的預設設定是無狀態,您可以使用 每次都使用全新代理程式 設定來達成此設定。 在某些情況下,小組可能會想要重複使用代理程式,以重複使用先前管線執行期間建立的套件或檔案。 建置工作負載是小組想要保留狀態並重複使用代理程序的常見案例。 您可以透過受控 DevOps 集區達成具狀態集區,同時將其與安全性最佳做法進行平衡。 預設情況下,代理程式最多可以重複使用 7 天,但您可以將其設定為更快回收。

注意

安全代理建議使用者使用無狀態集區來防禦供應鏈攻擊。 每次都使用代理程式狀態設定 [全新代理程式]。

無狀態集區

當您配置無狀態代理程式時,會為每一個工作採購新的代理程式。 工作完成後,代理程式會被移除。

若要深入瞭解無狀態代理程式的生命週期,以及它們在 Azure Pipelines 中的使用方式,請參閱 代理程式的生命週期和配置的潛在延遲 一節。

顯示無狀態代理程式的螢幕擷取畫面。

當您每次將 代理程式狀態 設定為 全新代理程式時,會為每個工作採購新的代理程式。 工作完成後,代理程式會被捨棄。

具狀態集區

顯示一個有狀態代理的螢幕擷取畫面。

當您啟用 相同的代理程式可供多個組建使用 時(在 "kind": "stateful" 資源範本中的設定或在 { "stateful": {...} } Azure CLI 中的設定),集區中的代理程式是具狀態的。 您可以使用下列設定來配置有狀態的集區:

  • 待命代理的存留時間上限maxAgentLifetime)會設定狀態集區中的代理在關閉和捨棄之前可以執行的最長持續時間上限。 待命代理程式存留時間上限的格式dd.hh:mm:ss。 待命代理程式存留時間上限的預設值會設定為七天7.00:00:00 () 允許的最大持續時間。

  • 寬限期gracePeriodTimeSpan)設定具狀態的資源池中的代理程式在所有現行及佇列工作完成後關閉之前等待新工作的時間長度。 寬限期的格式dd.hh:mm:ss ,且預設值為無寬限期。

    重要

    如果工作在 待命代理程式的存留時間上限 間隔到期時執行,則代理程式在工作完成之前不會關閉,除非工作需要超過兩天的時間才能執行。 受控的 DevOps 集區中的個別作業最多可以執行兩天,即使它們在待命代理程式上執行,且已設定待命代理程式的<存留時間上限>為超過兩天。 如果您的工作流程需要執行需要兩天以上才能完成的單一工作,請聯絡支援人員。

無狀態池中的代理程式會在每個任務之後關閉並捨棄。 如果符合下列任何條件,可設定狀態儲存區中的代理程式會繼續執行:

  • 如果第一個工作完成時另一個工作已排入佇列,則受管理 DevOps 集區會將佇列的工作傳送至執行第一個工作的代理程式,而不是將其關閉。
  • 如果為集區設定了寬限期,代理程式會在這段期間內等待新作業,然後再關閉系統。
  • 如果 已啟用待命代理程式,且代理程式映像符合使用中布建期間的準則,代理程式會繼續執行並等候作業。

如果在具有狀態的資源池中運行的代理程式在待命代理程式的存留時間上限所指定的持續時間內一直運行,則會被關閉並捨棄,即使之前條件為真。 例如,如果 將待命代理程式的存留時間上限 設定為三天,且 待命代理程式模式 設定為 手動、整週配置(機器 24/7 可用),則代理程式會在連續三天正常運行後重新啟動。

重要

如果沒有寬限期、待命代理程式沒有作用中佈建期間,且沒有符合代理程式的佇列工作,則在工作完成後,可設定狀態集區中的代理程式仍可關閉並捨棄。 捨棄代理程式時,任何狀態都會遺失。

寬限期可讓您以最具成本效益的方式,為具有一致負載的管線執行具狀態集區。 寬限期不需要使用待命代理模式來讓代理保持在線並準備好接受工作。

待命代理程式模式

當您建立集區時,預設情況下, 待命代理程式模式 處於關閉狀態。 當 待命代理程式模式 關閉時,沒有待命代理程式可立即指派給您的管線。 您的管線可能需要等待幾分鐘到 15 分鐘,才能隨需佈建代理程式。 為了提升效能,請啟用 待命代理程式模式 ,並設定可為您的工作負載提供容量的待命代理程式排程。

當您設定待命代理程式排程時,受管理 DevOps 集區會定期將佈建的代理程式計數與您在目前佈建配置中指定的待命代理程式計數進行比較。 它會視需要啟動新代理程式,以保持待命代理程式的數量。 您可以使用 [代理程式 ] 窗格來檢視集區中代理程式的目前狀態和計數。

重要

配置中的佈建計數不能大於您在集區設定中設定的代理程式數目上限值。

您可以使用下列設定來設定待命代理程式模式:

  • 關閉:待命代理程式模式已關閉,當工作排入佇列時,代理程式會視需要以隨需模式佈建。
  • 手動:設定手動待命排程。
  • 自動:根據客服專員使用歷史記錄使用自動待命排程。 您可以針對成本和效能進行設定。

螢幕擷取畫面,顯示待命客服專員模式的選擇。

手動

手動模式最適合瞭解其持續整合和持續交付 (CI/CD) 管線使用模式的團隊。 當您使用手動選項時,您需要定義預先佈建配置。 您可以根據您對集區中最有可能被使用的代理和可能使用的代理數量的了解來定義您的方案。 您可以指定符合預估需求的代理配置數量。

您可以建立自己的佈建排程,或從其中一個預先定義的排程中進行選擇。 您可以設定要用來指定排程的時區。 預先布建 TimeZone 的預設值為 (UTC) 國際標準時間

您可以使用下列三種方式之一來設定手動待命代理程式:

每個預先佈建快速入門都有下列一般設定 (除了該快速入門特有的設定):

  • 預先佈建時區:可讓您設定預先佈建配置中時段的時區。 預先布建 TimeZone 的預設值為 (UTC) 國際標準時間
  • 待命代理程式百分比:設定每個影像所需的待命代理程式百分比。 您可以輸入 * 以確保布建所有映像都相同,也可以指定從 0 到 100 的整數來表示百分比。 如果您指定百分比,則所有影像的總計必須等於 100。 如果您有單一映像,請指定 * 或 100。 當您使用 Azure Resource Manager 範本 (ARM 範本) 時,您可以在區段中設定images設定。 如需詳細資訊,請參閱 設定映像

顯示手動待機模式的螢幕截圖。

從頭開始

如果您選擇從頭開始,您可以新增佈建期間清單作為佈建方案。 每個佈建期間都包含開始日期、結束日期、時區、開始時間、結束時間和計數。 布建期間無法彼此重疊。

屬性 說明
多日 當您選取此選項時,您可以為佈建配置設定開始和結束日
直到下一期 當您選取此選項時,佈建期間會從 「開始時間 」值開始,直到下一個佈建期間開始為止。
開始日期 布建期間開始的日期。
結束日 配置期間結束的日期。 如果選取 [多日] ,則為必要項目。
開始時間 配置期間開始的時間。
結束時間 佈建期間結束的時間。 除非選擇[直到下一個期間],否則此項為必要。
Count 要布建的待命代理程式數目。 此數字必須大於零,且不得大於集區設定中的代理程式數目上限值。

建立佈建期間之後,您可以從「 預先佈建配置 」清單中刪除或編輯該期間。

下列範例顯示如何設定手動配置,其中包含在美國東部時間週一早上 12:00 至凌晨 5:00 佈建的代理程式。

顯示手動調整方案的螢幕擷取畫面。

工作日配置

如果您選取工作日配置,則可以指定開始時間和結束時間,在這兩個時間之間,每個工作日指定數量的待命客服專員處於待命狀態。

屬性 說明
開始時間 配置期間開始的時間。
結束時間 佈建期間結束的時間。
配置計數 要布建的待命代理程式數目。 此數字必須大於零,且不得大於在集區設定中配置的代理程式數目上限值。

下列範例使用東部時間 (UTC-5) 將四個客服專員設定為在工作時間使用,在非工作時間和週末不使用客服專員。

顯示工作日方案的螢幕擷取畫面。

全週方案

如果您選擇全週配置,您可以指定希望始終可用的客服專員數量。

顯示全週計劃的屏幕截圖。

自動

如果您不知道自己的使用模式,並且想要依賴根據過去資料的自動預測 ,請選取自動。 您可以使用具有下列五個選項的滑桿,在成本和客服專員效能之間取得平衡。 受控 DevOps 集區會針對過去三週的歷史資料 (如果有的話) 執行查詢。 它將池中的排隊工作階段組織成五分鐘的時段,並將指定的百分位數分配給每個小時,以避免尖峰。

  • 最具成本效益 ():MostCostEffective第 10 個百分位數。
  • 更具成本效益 ():MoreCostEffective第 25 個百分位數。
  • 平衡( 預設)(Balanced):第 50 個百分位數。
  • 更多性能 (MorePerformance第 75 個百分位數)
  • 最佳表現 ():BestPerformance第 90 個百分位數。

顯示自動縮放設定的螢幕擷取畫面。

代理程式的生命週期和配置的潛在延遲

當您使用 無狀態 配置啟用待命代理程式時,您必須先安裝並設定 Azure Pipelines 代理程式,才能從 就緒 狀態轉換成 配置 狀態並執行管線。

當受控 DevOps 集區佈建新的代理程式時,它會嘗試下載最新的 Azure Pipelines 代理程式 ,以便在待命代理程式轉換成就緒狀態之前,先將其下載到待命代理程式上。 啟動、連線和開始作業可能需要 10 秒到一分鐘的時間,視集區的 SKU 速度、使用的映像和網路負載而定。 此外,當您在管線作業中指定特定設定時,可能會導致重新下載並執行不同的代理程式。 代理程式的迴歸和復原也可能導致重新下載代理程式。

就緒代理程式 一律有潛在的延遲,因為受控 DevOps 集區會以「暫時」方式使用此代理程式,這表示我們每個作業啟動並執行工作代理程式一次。 如果您看到備妥的代理從 Azure DevOps 接取工作的延遲,請考慮下列幾個問題:

  • 您有準備好的代理嗎? 最常見的問題是對何時應預先調配代理程式的誤解。 當滿足以下條件時,機器必須從頭開始啟動:
    • 排入佇列的工作數目大於資源池中的待機代理數量。
    • 工作會在預先佈建排程之外排入佇列。
    • 待命代理程式計數設定為空。
  • 您是否正確配置了具有多個映像的待命代理程式? 如果您未使用 ImageOverride 需求來指定管線中要使用的映像,作業會以第一個影像作為目標。 視您的縮放設定而定,您可能沒有預期的那麼多可用代理程式,因為有些代理程式已配置給其他映像。
  • 您是否在管道中使用 ImageVersionOverride 指令? 當您使用 ImageVersionOverride 需求來指定與 集區設定中配置的映像版本不同的映像版本時,每個代理都會使用指定的映像版本隨需啟動。 待命代理程式是使用 集區組態中指定的映像版本來佈建。 如果您使用 ImageVersionOverride,任何待命的代理程式都不會與該版本匹配,並且會啟動新的代理。
  • Proxy、虛擬網路或防火牆設定是否會降低集區的速度? 任何網路設定的潛在緩慢可能會導致代理程式啟動和連線到 Azure DevOps 所需的時間增加。
  • 您是否覆寫代理程式版本? 根據預設,受控 DevOps 集區會在最新的 Azure DevOps 工作代理程式版本上執行。 管線 YAML 中的設定 (例如 Agent.Version 需求) 和 Azure DevOps 組織設定可以強制管線使用舊版工作代理程式,這需要在配置計算機之後重新下載。