Azure Pipelines 代理程式
Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018
注意
在 Microsoft Team Foundation Server (TFS) 2018 和舊版中,組建和發行管線稱為定義、執行稱為組建、服務連線稱為服務端點、階段稱為環境,而作業稱為階段。
如需使用 Azure Pipelines 來建立程式碼或部署軟體,則您需要至少一個代理程式。 隨著您新增更多的程式碼和人員,最終會需要更多的代理程式。
當管線執行時,系統會開始一或多個作業。 代理程式正在計算基礎結構,其中包含一次執行一項作業的已安裝代理程式軟體。
Azure Pipelines 提供數種不同類型的代理程式。
代理程式類型 | 描述 | 可用性 |
---|---|---|
Microsoft 裝載的代理程式 \(英文\) | 由 Microsoft 裝載和管理的代理程式 | Azure DevOps Services |
自我裝載式代理程式 | 您設定和管理的代理程式,裝載于 VM 上 | Azure DevOps Services、Azure DevOps Server、TFS |
Azure 虛擬機器擴展集代理程式 | 使用 Azure 虛擬機器擴展集的自我裝載代理程式形式,可自動調整以符合需求 | Azure DevOps Services |
作業可以直接 在代理程式的主機電腦上 或在 容器中執行。
Microsoft 裝載的代理程式
如果您的管線位於 Azure Pipelines 中,則您有一個方便的選項,可使用 Microsoft 裝載的代理程式來執行作業。 使用 Microsoft 託管的代理程式,就不需要自己維護和升級。 每次執行管線時,您都會取得管線中每個作業的全新虛擬機器。 虛擬機器會在一個作業 (之後捨棄,這表示作業對虛擬機器檔案系統所做的任何變更,例如簽出程式碼,將無法供下一個作業) 使用。 Microsoft 裝載的代理程式可以直接 在 VM 或 容器中執行作業。
Azure Pipelines 會使用 Microsoft 裝載的代理程式,提供名為 Azure Pipelines 的預先定義代理程式組件區。
對於許多小組而言,這是執行作業的最簡單方式。 您可以先試用,看看這是否適用於您的組建或部署。 如果不適用,您可以使用自我裝載式的代理程式。
秘訣
您可以免費試用 Microsoft 裝載的代理程式。
自我裝載式代理程式
您自行設定和管理以執行作業的代理程式是 自我裝載的代理程式。 您可以在 Azure Pipelines 或 Azure DevOps Server (之前稱為 Team Foundation Server,TFS) 中使用自我裝載式代理程式。 自我裝載式代理程式可協助您擁有更全面的掌控,以安裝組建和部署所需的相依軟體。 此外,機器層級快取和組態會從執行持續保存,這可提升速度。
注意
雖然每部機器可以安裝多個代理程式,但我們強烈建議只為每個機器安裝一個代理程式。 安裝兩個或多個代理程式可能會對效能和管線的結果造成負面影響。
秘訣
安裝自我裝載代理程式之前,您可能會想要查看 Microsoft 裝載的代理程式組件區是否適合您使用。 在許多情況下,這是最簡單的方式。 請試試看。
您可以在 Linux、macOS 或 Windows 電腦上安裝代理程式。 您也可以在 Docker 容器上安裝代理程式。 如需安裝自我裝載式代理程式的詳細資訊,請參閱:
注意
在 macOS 上,您必須清除下載封存上的特殊屬性,以防止在執行 tar 檔案時 ./config.sh
針對 tar 檔案中的每個元件顯示 Gatekeeper 保護。 下列命令會清除檔案上的擴充屬性:
xattr -c vsts-agent-osx-x64-V.v.v.tar.gz ## replace V.v.v with the version in the filename downloaded.
# then unpack the gzip tar file normally:
tar xvfz vsts-agent-osx-x64-V.v.v.tar.gz
在機器上安裝代理程式之後,您可以視作業需要,在該機器上安裝其他軟體。
注意
代理程式廣泛回溯相容。 只要 Azure DevOps 不要求較高版本的代理程式,任何版本的代理程式都應該與任何 Azure DevOps 版本相容。
我們僅支援最新版的代理程式,因為這是保證具有所有最新修補程式和 Bug 修正的唯一版本。
節點執行器版本
代理程式隨附數個版本的 NodeJS 程式庫,以支援使用不同 Node 處理常式的目標工作。
所有官方 Azure DevOps 工作都會使用 Node 10 作為通用處理程式,不過,客戶仍可能會使用使用過期節點 6 程式庫的自訂工作。 為了支援目前達到生命週期結束的 Node 回溯相容性,我們提供下列自助式方法來手動安裝指定的節點執行器。
手動安裝 Node 6 執行器。 如需手動安裝 Node 6 執行器的詳細資訊,請參閱 Node 6 支援 以取得詳細資訊。
在管線中使用 NodeTaskRunnerInstaller@0 工作,該工作需要過期的 Node 6 程式庫。
安裝包含 Node 6 的代理程式套件。
Azure Pipelines 提供兩個版本的代理程式套件。
- vsts-agent-* 套件支援 Node 6。
- pipelines-agent-* 套件不支援 Node 6。 此版本的套件未來會成為預設代理程式套件。
如果您知道您未使用任何 Node 6 相依工作,而且您不想在代理程式電腦上安裝 Node 6,您可以從 的 [替代代理程式下載 ] 區段 https://github.com/microsoft/azure-pipelines-agent/releases 安裝代理程式。
Azure 虛擬機器擴展集代理程式
Azure 虛擬機器擴展集代理程式是一種自我裝載代理程式形式,可自動調整以符合您的需求。 這種彈性可降低您不斷執行專用代理程式的需求。 與裝載於 Microsoft 的代理程式不同,您可彈性選擇執行代理程式的機器大小和映像。
您可以指定虛擬機器擴展集、一些要保持待命的代理程式、擴展集中的虛擬機器數目上限,而 Azure Pipelines 會為您管理代理程式的調整。
如需詳細資訊,請參閱 Azure 虛擬機器擴展集代理程式。
平行作業
平行作業 代表您可以在組織中同時執行的作業數目。 如果您的組織有單一平行作業,您可以在組織中一次執行單一作業,並將任何其他並行作業排入佇列,直到第一個作業完成為止。 若要同時執行兩個作業,您需要兩個平行作業。 在 Azure Pipelines 中,您可以在 Microsoft 裝載的基礎結構上,或在您自己的 (自我裝載) 基礎結構上執行平行作業。
Microsoft 預設會在每個組織中提供免費服務層,其中包含至少一個平行作業。 視您需要執行的並行管線數目而定,您可能需要更多平行作業,才能同時使用多個 Microsoft 裝載或自我裝載的代理程式。 如需平行作業和不同免費層服務的詳細資訊,請參閱 Azure Pipelines 中的平行作業。
您可能需要更多平行作業,才能同時使用多個代理程式:
重要
從 Azure DevOps Server 2019 開始,您不需要在版本中支付自我裝載並行作業的費用。 您只受限於您擁有的代理程式數目。
功能
每個自我裝載代理程式都有一組功能,可指出它可以執行的動作。 功能是代理程式軟體自動探索的名稱/值組,在此情況下稱為 系統功能,或您定義的名稱/值組,在此情況下稱為 使用者功能。
代理程式軟體會自動判斷各種系統功能,例如電腦名稱稱、作業系統類型,以及電腦上安裝的特定軟體版本。 此外,機器中定義的環境變數會自動出現在系統功能清單中。
注意
將環境變數儲存為功能表示當代理程式執行時,會使用預存功能值來設定環境變數。 此外,任何工作都不會挑選及使用代理程式執行時所做的環境變數變更。 如果您有變更的敏感性環境變數,而且不想將它們儲存為功能,您可以藉由設定 VSO_AGENT_IGNORE
環境變數來忽略它們,並以逗號分隔的變數清單加以忽略。 例如,如果您要安裝軟體, PATH
您可能會想要忽略的重要變數。
當您撰寫管線時,您可以指定代理程式的特定 需求 。 系統只會將作業傳送給具有符合管線中所指定 需求的 代理程式。 因此,代理程式功能可讓您將作業導向特定代理程式。
注意
需求和功能是設計來搭配自我裝載代理程式使用,讓作業可以與符合作業需求的代理程式相符。 使用 Microsoft 裝載的代理程式時,您會為符合作業需求的代理程式選取映射,因此雖然可以將功能新增至 Microsoft 裝載的代理程式,但不需要搭配 Microsoft 裝載的代理程式使用功能。
設定需求
若要將需求新增至 YAML 組建管線,請將該 demands:
行新增至 pool
區段。
pool:
name: Default
demands: SpecialSoftware # exists check for SpecialSoftware
您可以檢查功能是否存在,或與功能的值進行比較。 如需詳細資訊,請參閱 YAML 架構 - 需求。
Azure DevOps Server 2019 和更新版本中支援 YAML 管線。
設定代理程式功能
您可以流覽至 [ 代理 程式集區] 並選取所需代理程式的 [ 功能 ] 索引標籤,以檢視代理程式的詳細資料,包括其版本和系統功能,以及管理其使用者功能。
在網頁瀏覽器中,流覽至 Agent 集區:
登入您的組織 (
https://dev.azure.com/{yourorganization}
)。選擇 [Azure DevOps]、 [組織設定]。
選擇 [代理程式組件區]。
登入您的專案集合 (
http://your-server/DefaultCollection
) 。選擇 [Azure DevOps]、 [集合設定]。
選擇 [代理程式組件區]。
選擇 [Azure DevOps]、 [集合設定]。
選擇 [代理程式組件區]。
流覽至您的專案,然後選擇 [設定] (齒輪圖示) >[代理程式佇列]。
選擇 [管理集區]。
流覽至功能索引標籤:
從 [ 代理程式組件區] 索引標籤中,選取所需的代理程式組件區。
選取 [代理程式 ],然後選擇所需的代理程式。
選擇 [ 功能] 索引標籤。
注意
Microsoft 裝載的代理程式不會顯示系統功能。 如需 Microsoft 裝載代理程式上安裝的軟體清單,請參閱 使用 Microsoft 裝載的代理程式。
從 [ 代理程式組件區] 索引標籤中,選取所需的集區。
選取 [代理程式 ],然後選擇所需的代理程式。
選擇 [ 功能] 索引標籤。
從 [ 代理程式組件區] 索引標籤中,選取所需的集區。
選取 [代理程式 ],然後選擇所需的代理程式。
選擇 [ 功能] 索引標籤。
選取所需的代理程式,然後選擇 [ 功能 ] 索引標籤。
若要向代理程式註冊新功能,請選擇 [新增新功能]。
秘訣
在自我裝載代理程式上安裝新軟體之後,您必須重新開機代理程式,才能顯示新功能。 如需詳細資訊,請參閱重新開機 Windows 代理程式、重新開機 Linux 代理程式和重新開機 Mac 代理程式。
溝通
與 Azure Pipelines 通訊
與Azure DevOps Server通訊
與 TFS 通訊
代理程式會與 Azure Pipelines 或 Azure DevOps Server 通訊,以判斷需要執行的作業,並回報記錄與作業狀態。 此類通訊會一律由代理程式起始。 根據您設定代理程式的方式,從代理程式往 Azure Pipelines 或 Azure DevOps Server 的所有訊息都會經由 HTTPS 或 HTTPS 傳送。 此提取模型可讓代理程式在不同的拓撲中進行設定,如下所示。
以下為代理程式與 Azure Pipelines 或 Azure DevOps Server 之間的常見通訊模式。
使用者透過將代理程式新增至代理程式組件區,向 Azure Pipelines 註冊代理程式或Azure DevOps Server。 您必須是 代理程式組件區管理員 ,才能在該代理程式組件區中註冊代理程式。 代理程式集區系統管理員的身分識別只有在進行註冊時才需使用,且不會保留在代理程式上,也不會用於代理程式與 Azure Pipelines 或 Azure DevOps Server 的任何進一步通訊。 註冊完成後,代理程式會下載接 聽程式 OAuth 權杖 ,並使用它來接聽作業佇列。
代理程式會使用 HTTP 長時間輪詢進行接聽,以得知 Azure Pipelines/Azure DevOps Server 的作業佇列中是否針對代理程式張貼了新的作業要求。 當作業可用時,代理程式會下載作業以及 作業特定的 OAuth 權杖。 此權杖是由 Azure Pipelines/Azure DevOps Server針對管線中指定的範圍身分識別產生。 該權杖僅具短暫效力,而在該作業內,代理程式會將其用來在 Azure Pipelines 或 Azure DevOps Server 上存取資源 (例如原始程式碼) 或修改資源 (例如上傳測試結果)。
作業完成後,代理程式會捨棄作業專用的 OAuth 權杖,然後回頭確認是否有使用接聽程式 OAuth 權杖的新作業要求。
訊息承載會在代理程式之間進行交換,並使用非對稱加密來保護 Azure Pipelines/Azure DevOps Server。 每個代理程式都有公開-私密金鑰組,且公開金鑰會在註冊期間與伺服器交換。 在將作業承載傳送至代理程式之前,伺服器會先使用公開金鑰進行加密。 代理程式會使用其私密金鑰為作業內容解密。 當儲存於管線或變數群組中的祕密與代理程式交換時,會透過這種方式保護祕密。
注意
代理程式提供 UTF-8 用戶端編碼輸出的支援。 不過,如果您的系統具有與 UTF-8 不同的編碼方式,您可能會遇到記錄輸出的一些問題。 例如,記錄可能包含系統編碼無法辨識的字元,因此它們可能會顯示為大寫或遺漏的符號。
進行通訊以部署至目標伺服器
當您使用代理程式將成品部署至伺服器組時,代理程式必須具備對這些伺服器的「直視」連線。 Microsoft 托管的代理池默认与 Azure 中运行的 Azure 网站和服务器建立连接。
注意
如果您的 Azure 資源是在 Azure 虛擬網路中執行,您可以取得部署 Microsoft 裝載代理程式的代理程式 IP 範圍,以便設定 Azure VNet 的防火牆規則,以允許代理程式存取。
若您的內部部署環境無法連線至裝載於 Microsoft 的代理程式集區 (通常是中繼防火牆所致),您將需要在內部部署電腦上手動設定自我裝載式代理程式。 代理程式必須與目標內部部署環境建立連線並存取網際網路,才可連線至 Azure Pipelines 或 Team Foundation Server,如下圖所示。
驗證
若要註冊代理程式,您必須是代理程式組件區中 系統管理員角色 的成員。 代理程式集區系統管理員的身分識別只有在進行註冊時才需使用,且不會保留在代理程式上,也不會用於代理程式與 Azure Pipelines 或 Azure DevOps Server 的任何後續通訊。 此外,您必須是伺服器上的本機系統管理員才能設定代理程式。
您的代理程式可以透過下列方式向 Azure Pipelines 進行驗證:
您的代理程式可以使用下列其中一種方法來驗證Azure DevOps Server或 TFS:
個人存取權杖 (PAT) :
產生 並使用 PAT 將代理程式與 Azure Pipelines 或 TFS 2017 和更新版本連線。 PAT 是唯一可搭配 Azure Pipelines 使用的配置。 PAT 必須有代理程式組件區 (讀取、管理部署群組代理程式的) 範圍 (、PAT 必須具有部署群組 (讀取、管理) 範圍) ,而單一 PAT 則可用於註冊多個代理程式,而 PAT 只會在註冊代理程式時使用,而不是用於後續通訊。 For more information, see the Authenticate with a personal access token (PAT) section in the Windows, Linux, or macOS self-hosted agents articles.
如要搭配使用 PAT 和 Azure DevOps Server,您的伺服器必須設定為 HTTPS。 請參閱 網站設定和安全性。
Integrated
使用登入使用者的認證,透過 NTLM 或 Kerberos 等Windows 驗證配置,將 Windows 代理程式連線到 TFS。
若要使用這個驗證方法,您必須先設定 TFS 伺服器。
登入您執行 TFS 的電腦。
啟動 [網際網路資訊服務 (IIS) 管理員]。 選取您的 TFS 網站,並確定已使用 NTLM 或 Kerberos 等有效提供者啟用 Windows 驗證。
交涉
透過 NTLM 或 Kerberos 等Windows 驗證配置,以登入使用者以外的使用者身分連線到 TFS。
若要使用這個驗證方法,您必須先設定 TFS 伺服器。
登入您執行 TFS 的機器。
啟動 [網際網路資訊服務 (IIS) 管理員]。 選取您的 TFS 網站,並確定已使用交涉提供者啟用 Windows 驗證,並使用其他方法,例如 NTLM 或 Kerberos。
替代
使用基本驗證連線到 TFS。 若要使用此方法,您必須先 在 TFS 上設定 HTTPS。
若要使用這個驗證方法,您必須設定 TFS 伺服器,如下所示:
登入您執行 TFS 的電腦。
互動與服務的比較
您可以服務或互動式流程的形式執行自我裝載式代理程式。 設定完代理程式後,建議您先在互動模式中試用,確定可正常運作。 接著,若要用於生產,建議您在下列其中一個模式中執行代理程式,如此一來,代理程式便可維持穩定運作。 這些模式也可確保在電腦重新啟動時自動啟動代理程式。
即服務。 您可以利用作業系統的服務管理員來管理代理程式的生命週期。 此外,以服務形式執行代理程式時,您可獲得更好的自動升級體驗。
啟用自動登入的互動式程式。 在某些情况下,可能需要以交互方式运行代理以供生产使用,例如运行 UI 测试。 將代理程式設定為以此模式來執行時,也會停用螢幕保護裝置。 某些網域原則可能會禁止您啟用自動登入或停用螢幕保護裝置。 在此類情況下,您可能需要尋求網域原則的豁免,或是在不適用網域原則的工作群組電腦上執行代理程式。
注意
當您啟用自動登入或停用螢幕保護裝置程式時,有安全性風險,因為您可以讓其他使用者前往電腦並使用自動登入的帳戶。 若您將代理程式設定為以此方式執行,請務必確保電腦實際上受到保護;例如,位於安全設施中。 如果您使用遠端桌面來存取代理程式執行的電腦,只要關閉遠端桌面,就會鎖定電腦,而且在此代理程式上執行的任何 UI 測試可能會失敗。 若要避免這種情況,請使用 tscon 命令來中斷遠端桌面連線。 例如:
%windir%\System32\tscon.exe 1 /dest:console
代理程式帳戶
無論您是以服務方式執行代理程式,還是以互動方式執行代理程式,都可以選擇您用來執行代理程式的電腦帳戶。 (請注意,這與您向 Azure Pipelines 或 Azure DevOps Server.) 註冊代理程式時所使用的認證不同。) 代理程式帳戶的選擇完全取決於在組建和部署作業中執行的工作需求。
例如,若要執行使用Windows 驗證存取外部服務的工作,您必須使用具有該服務存取權的帳戶來執行代理程式。 不過,如果您正在執行需要瀏覽器的 Selenium 或自動程式化 UI 測試等 UI 測試,則會在代理程式帳戶的內容中啟動瀏覽器。
在 Windows 上,您應該考慮使用服務帳戶,例如網路服務或本機服務。 這些帳戶具有限制的許可權,且其密碼不會過期,這表示代理程式需要一段時間的管理較少。
代理程式版本與升級
我們會每隔幾周在 Azure Pipelines 中更新代理程式軟體。
我們會以 格式 {major}.{minor}
指出代理程式版本。
例如,如果代理程式版本是 2.1
,則主要版本為 2,次要版本為 1。
Microsoft 裝載的代理程式一律會保持最新狀態。 如果較新版本的代理程式在 次要 版本中只有不同,通常會自動更新自我裝載代理程式, (在 Agent 集 區中設定此設定,請選取您的代理程式 [ 設定 ] - Azure Pipelines 會啟用預設值) 。 當管線中使用的平臺功能或其中一項工作需要較新版本的代理程式時,就會要求升級。
如果您以互動方式執行自我裝載代理程式,或 有較新的 主要代理程式版本可用,則您可能必須手動升級代理程式。 您可以從組織的 [ 代理程式組件 區] 索引標籤輕鬆地執行這項操作。 在管線可以鎖定相容的代理程式之前,您的管線不會執行。
更新自我裝載代理程式
流覽至 [專案設定]、 [代理程式組件區]。
選取您的代理程式組件區,然後選擇 [更新所有代理程式]。
您也可以從[...]功能表選擇 [更新代理程式],個別更新代理程式。
選取 [更新 ] 以確認更新。
更新要求會針對集區中的每個代理程式排入佇列,並在任何目前正在執行的工作完成時執行。 升級通常需要一些時間 - 足以下載最新版本的代理程式軟體, (大約 200 MB) 、解壓縮它,並使用新版本重新開機代理程式。 您可以在 [ 代理 程式] 索引標籤上監視代理程式的狀態。
我們會使用 Azure DevOps Server 和 TFS 中的每個更新來更新代理程式軟體。
我們會以 格式 {major}.{minor}
指出代理程式版本。
例如,如果代理程式版本是 2.1
,則主要版本為 2,次要版本為 1。
當您的 Azure DevOps Server 或 TFS 伺服器有較新版本的代理程式,而較新的代理程式在次要版本中只有不同時,通常會自動升級。 當管線中使用的平臺功能或其中一項工作需要較新版本的代理程式時,就會要求升級。 從 Azure DevOps Server 2019 開始,您不需要等待新的伺服器版本。 您可以將 新版本的代理程式上傳至應用層,該版本將會提供升級。
如果您以互動方式執行代理程式,或有較新的代理程式 主要 版本可用,則您可能必須手動升級代理程式。 您可以從專案集合下的 [代理程式組件 區] 索引標籤輕鬆執行這項操作。 在管線可以鎖定相容的代理程式之前,您的管線不會執行。
您可以流覽至 [代理 程式集區] 並選取所需代理程式的 [ 功能 ] 索引標籤,如設定 代理程式功能中所述,檢視代理程式的版本。
若要以程式設計方式觸發代理程式更新,您可以使用代理程式更新 API,如 如何以程式設計方式觸發特定代理程式組件區的代理程式更新一節中所述。
注意
若為沒有網際網路存取的伺服器,請手動將代理程式 zip 檔案複製到下列資料夾,以作為本機檔案使用。 如果 不存在,請建立 Agents 資料夾。
- Windows:
%ProgramData%\Microsoft\Azure DevOps\Agents
- Linux:
usr/share/Microsoft/Azure DevOps/Agents
- macOS:
usr/share/Microsoft/Azure DevOps/Agents
如果 不存在,請建立 Agents 資料夾。
常見問題集
如何?確定我有最新的 v2 代理程式版本?
流覽至 [代理程式組件區] 索引標籤:
登入您的組織 (
https://dev.azure.com/{yourorganization}
)。選擇 [Azure DevOps]、 [組織設定]。
選擇 [代理程式組件區]。
登入您的專案集合 (
http://your-server/DefaultCollection
) 。選擇 [Azure DevOps]、 [集合設定]。
選擇 [代理程式組件區]。
選擇 [Azure DevOps]、 [集合設定]。
選擇 [代理程式組件區]。
流覽至您的專案,然後選擇 [設定] (齒輪圖示) >[代理程式佇列]。
選擇 [管理集區]。
按一下包含代理程式的集區。
請確定代理程式已啟用。
流覽至功能索引標籤:
從 [ 代理程式組件區] 索引標籤中,選取所需的代理程式組件區。
選取 [代理程式 ],然後選擇所需的代理程式。
選擇 [ 功能] 索引標籤。
注意
Microsoft 裝載的代理程式不會顯示系統功能。 如需 Microsoft 裝載代理程式上安裝的軟體清單,請參閱 使用 Microsoft 裝載的代理程式。
從 [ 代理程式組件區] 索引標籤中,選取所需的集區。
選取 [代理程式 ],然後選擇所需的代理程式。
選擇 [ 功能] 索引標籤。
從 [ 代理程式組件區] 索引標籤中,選取所需的集區。
選取 [代理程式 ],然後選擇所需的代理程式。
選擇 [ 功能] 索引標籤。
選取所需的代理程式,然後選擇 [ 功能 ] 索引標籤。
尋找
Agent.Version
功能。 您可以針對最新的已發佈代理程式版本檢查此值。 請參閱 Azure Pipelines 代理程式 ,並檢查頁面中所列的最高版本號碼。每一個代理程式在執行需要較新版本代理程式的工作時,會自動自行更新。 如果您想要手動更新某些代理程式,請以滑鼠右鍵按一下集區,然後選取 [ 更新所有代理程式]。
我可以更新屬於Azure DevOps Server集區一部分的 v2 代理程式嗎?
是的 從 Azure DevOps Server 2019 開始,您可以將伺服器設定為在本機磁片上尋找代理程式套件檔案。 此組態將會覆寫伺服器發行時隨附的預設版本。 當伺服器無法存取網際網路時,也適用于此案例。
從可存取網際網路的電腦,從 Azure Pipelines Agent GitHub Releases 頁面下載最新版的代理程式套件檔案 (.zip 或 .tar.gz 表單) 。
使用 (您選擇的方法,將下載的套件檔案傳送至每個Azure DevOps Server應用層,例如 USB 磁片磁碟機、網路傳輸等) 。 將代理程式檔案放在 資料夾底下
%ProgramData%\Microsoft\Azure DevOps\Agents
。 如果 不存在,請建立 Agents 資料夾。全都準備就緒了! 您的Azure DevOps Server現在會在代理程式更新時使用本機檔案。 每一個代理程式在執行需要較新版本代理程式的工作時,會自動自行更新。 但是如果您想要手動更新某些代理程式,請以滑鼠右鍵按一下集區,然後選擇 [ 更新所有代理程式]。
自我裝載代理程式具有 Microsoft 所裝載代理程式的任何效能優勢嗎?
在許多情況下,是。 具體來說:
若您使用自我裝載代理程式,您可以執行累加建置。 例如,如果您定義未清除存放庫且未執行全新組建的管線,您的組建通常會更快執行。 當您使用 Microsoft 裝載的代理程式時,不會獲得這些優點,因為代理程式會在建置或發行管線完成之後終結。
Microsoft 裝載的代理程式可能需要較長時間才能啟動您的組建。 雖然您的作業通常需要幾秒鐘的時間才能指派給 Microsoft 裝載的代理程式,但有時可能需要幾分鐘的時間,才能根據系統上的負載來配置代理程式。
可以在同一部電腦上安裝多個自我裝載代理程式嗎?
是。 此方法適用于執行不會耗用許多共用資源的作業的代理程式。 例如,您可以嘗試執行大部分協調部署之版本的代理程式,而且不會在代理程式本身執行太多工作。
您可能會發現在其他情況下,您無法在同一部電腦上執行多個代理程式來提升效率。 例如,執行耗用大量磁片和 I/O 資源的組建的代理程式可能不值得。
如果平行建置作業使用相同的單一工具部署,例如 npm 套件,您也可能遇到問題。 例如,某個組建可能在另一個組建正要使用相依性時加以更新,這可能會造成不可靠的結果與錯誤。
當管線作業取消時,代理程式的行為為何?
對於 Microsoft 裝載的代理程式,代理程式會損毀並返回 Azure Pipelines 集區。
針對自我裝載的代理程式:
當管線取消時,代理程式會將一連串命令傳送至執行目前步驟的進程。 第一個命令會傳送,逾時為 7.5 秒。 如果進程尚未終止,則會傳送第二個命令,逾時為 2.5 秒。 如果進程尚未終止,代理程式會發出命令來終止進程。 如果進程不接受這兩個初始終止要求,則會將其終止。 從初始要求終止大約需要 10 秒的時間。
發出給進程以取消管線的命令會根據代理程式作業系統而有所不同。
- macOS 和 Linux - 傳送的命令為 SIGINT,後面接著 SIGTERM,後面接著 SIGKILL。
- Windows - 傳送至進程的命令為 Ctrl+C,後面接著 Ctrl+Break,後面接著 Process.Kill。
如何以程式設計方式觸發特定代理程式組件區的代理程式更新?
您可以使用下一個 API 來觸發集區的代理程式更新:
POST https://dev.azure.com/{organization}/_apis/distributedtask/pools/{poolId}/messages?agentId={agentId}&api-version=6.0
URI 參數
名稱 | 位於 | 必要 | 類型 | Description |
---|---|---|---|---|
agentId |
查詢 | False | 字串 | 要更新的代理程式。 如果未指定 -將會針對所有代理程式觸發更新。 |
organization |
path | True | 字串 | Azure DevOps 組織的名稱。 |
poolId |
path | True | 整數 int32 | 要使用的代理程式組件區 |
api-version |
查詢 | False | 字串 | 要使用的 API 版本。 這應該設定為 '6.0' 以使用此版本的 API。 |
若要觸發代理程式更新 - 要求本文應該是空的。
注意
Azure Pipelines 代理程式在GitHub上開放原始碼。
深入了解
如需代理程式的詳細資訊,請參閱 使用 Azure DevOps 建置應用程式的 下列課程模組學習路徑。