Azure Pipelines 代理程式

Azure Pipelines |Azure DevOps Server 2020 |Azure DevOps Server 2019 |TFS 2018-TFS 2015

注意

在 Microsoft Team Foundation Server (TFS) 2018 和舊版本中,組建和發行管線稱為定義執行稱為組建服務連接稱為服務端點階段稱為環境,以及作業稱為階段

若要使用 Azure Pipelines 建立您的程式碼或部署軟體,您需要至少一個代理程式。 當您新增更多程式碼和人員時,最終會需要更多。

當您的管線執行時,系統會開始一或多個作業。 代理程式是具有已安裝代理程式軟體的計算基礎結構,可一次執行一個工作。

作業可以 直接在代理程式的主機電腦上 執行,或 在容器中執行。

Microsoft 裝載的代理程式 \(英文\)

如果您的管線位於 Azure Pipelines 中,則您可以使用 Microsoft 裝載的代理程式來執行工作,以方便您選擇。 使用 Microsoft 託管的代理程式,就不需要自己維護和升級。 每次執行管線時,您都會針對管線中的每個作業取得全新的虛擬機器。 虛擬機器會在一項工作之後捨棄。 Microsoft 裝載的代理程式可以 直接在 VM 上在容器中執行作業。

Azure Pipelines 提供預先定義的代理程式組件區,其名為Azure Pipelines與 Microsoft 裝載的代理程式。

對於許多團隊而言,這是執行作業最簡單的方式。 您可以先試用,看看它是否適用於您的組建或部署。 如果沒有,您可以使用自我裝載的代理程式。

提示

您可以免費試用 Microsoft 託管的代理程式。

深入瞭解 Microsoft 裝載的代理程式

自我裝載式代理程式

您自行設定和管理以執行作業的代理程式是自我裝載的 代理程式。 您可以在 Azure Pipelines 或 Azure DevOps Server 中使用自我裝載的代理程式,其先前名為 Team Foundation Server (TFS) 。 自我裝載的代理程式可讓您更充分掌控組建和部署所需的相依軟體。 此外,電腦層級的快取和設定會從執行中保存,以提升速度。

注意

雖然每一部電腦可以安裝多個代理程式,但我們強烈建議您只針對每部電腦安裝一個代理程式。 安裝兩個以上的代理程式可能會對效能和管線的結果造成負面影響。

提示

安裝自我裝載的代理程式之前,您可能會想要查看 Microsoft 裝載的代理程式組件區是否可供您使用。 在許多情況下,這是最簡單的做法。 試用一下。

您可以在 Linux、macOS 或 Windows 電腦上安裝代理程式。 您也可以在 Docker 容器上安裝代理程式。 如需安裝自我裝載代理程式的詳細資訊,請參閱:

您可以在 Linux、macOS 或 Windows 電腦上安裝代理程式。 如需安裝自我裝載代理程式的詳細資訊,請參閱:

注意

在 macOS 上,您必須清除下載封存上的特殊屬性,以防止在執行時,為 tar 檔案中的每個元件顯示閘道管理員保護 ./config.sh 。 下列命令會清除檔案的擴充屬性:

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 修正的版本。

Azure 虛擬機器擴展集代理程式

Azure 虛擬機器擴展集代理程式是一種自我裝載的代理程式,可自動調整以符合您的需求。 此彈性可讓您隨時都能減少執行專用代理程式的需求。 不同于 Microsoft 裝載的代理程式,您可以彈性地使用代理程式執行所在的機器大小和映射。

您可以指定虛擬機器擴展集、要保留待命的代理程式數目、擴展集中的虛擬機器數目上限,以及 Azure Pipelines 管理您的代理程式規模。

如需詳細資訊,請參閱 Azure 虛擬機器擴展集代理程式。

平行作業

並行作業 代表您可以在組織中同時執行的作業數目。 如果您的組織有單一的平行作業,您可以在組織中一次執行一項工作,並在第一個作業完成之前,將任何額外的並行作業排入佇列。 若要同時執行兩個作業,您需要兩個並行作業。 在 Azure Pipelines 中,您可以在 Microsoft 裝載的基礎結構或您自己的 (自我裝載的) 基礎結構上執行並行作業。

Microsoft 預設會在每個組織中提供免費的服務層級,其中至少包含一個並行作業。 視您需要執行的並行管線數目而定,您可能需要更多的平行作業,同時使用多個 Microsoft 裝載或自我裝載的代理程式。 如需平行作業和不同服務層級的詳細資訊,請參閱Azure Pipelines 中的並行作業

您可能需要更多的並行作業同時使用多個代理程式:

重要

從 Azure DevOps Server 2019 開始,您不需要支付發行中自我裝載並行作業的費用。 您僅受限於您擁有的代理程式數目。

功能

每個自我裝載的代理程式都有一組功能,可指出其功能。 這些功能是由代理程式軟體自動探索的名稱/值組,在這種情況下,它們稱為 系統功能或您定義的功能,在這種情況下,它們稱為 使用者功能

代理程式軟體會自動判斷各種系統功能,例如電腦名稱稱、作業系統類型,以及安裝在電腦上的特定軟體版本。 此外,電腦中定義的環境變數會自動出現在系統功能清單中。

注意

將環境變數儲存為功能表示當代理程式執行時,預存功能值會用來設定環境變數。 此外,任何工作都不會挑選在執行代理程式時所做的任何環境變數變更。 如果您有變更的敏感性環境變數,而且不想要將它們儲存為功能,您可以藉由設定環境變數來忽略這些變數,並以 VSO_AGENT_IGNORE 逗號分隔的變數清單來忽略這些變數。 例如,這 PATH 是您在安裝軟體時可能想要忽略的重要變數。

當您撰寫管線時,可以指定代理程式的特定 需求 。 系統只會將作業傳送給具有符合管線中所指定之 需求 的代理程式。 因此,代理程式功能可讓您將作業導向至特定的代理程式。

注意

需求和功能是專為與自我裝載的代理程式搭配使用而設計,可讓工作與符合作業需求的代理程式相符。 使用 Microsoft 裝載的代理程式時,您可以選取符合作業需求的代理程式映射,因此雖然可以將功能新增至 Microsoft 裝載的代理程式,但您不需要使用 Microsoft 裝載的代理程式功能。

設定代理程式功能

您可以流覽至 代理 程式集區,然後選取所需代理程式的 [ 功能 ] 索引標籤,以查看代理程式的詳細資料,包括其版本和系統功能,以及管理其使用者功能。

  1. 在您的網頁瀏覽器中,流覽至 [代理程式組件區]:

    1. 選擇 [ Azure DevOps]、[組織設定]。

      Choose Organization settings.

    2. 選擇 代理程式集區。

      Choose Agent pools tab.

    1. 選擇 [ Azure DevOps]、[集合設定]。

      Choose Collection settings.

    2. 選擇 代理程式集區。

      Choose Agent pools.

    1. 選擇 [ Azure DevOps]、[集合設定]。

      Collection settings, 2019.

    2. 選擇 代理程式集區。

      Choose Agent pools, 2019.

    1. 流覽至您的專案, 然後選擇) 代理程式佇列的設定 (齒輪圖示。

      Choose Settings, Agent Queues, 2018.

    2. 選擇 [ 管理集區]。

      Choose Manage pools, 2018.

    1. 流覽至您的專案, 然後選擇) 代理程式佇列的設定 (齒輪圖示。

      Choose settings, Agent Queues, 2017.

    2. 選擇 [ 管理集區]。

      Choose Manage pools, 2017.

    1. 流覽至您的專案,然後選擇 [ 管理專案 (齒輪] 圖示) 。

      Manage project, 2015.

    2. 選擇 [ 控制台]。

      Choose Control panel, 2015.

    3. 選取 [ 代理程式集區]。

      Select Agent pools, 2015.

  2. 流覽至 [功能] 索引標籤:

    1. 從 [ 代理程式 集區] 索引標籤中選取所需的代理程式組件區。

      From Agent pools, select the desired agent pool.

    2. 選取 代理 程式,然後選擇所需的代理程式。

      Select Agents and choose the agent.

    3. 選擇 [ 功能 ] 索引標籤。

      Choose the Capabilities tab.

      注意

      Microsoft 裝載的代理程式不會顯示系統功能。 如需在 Microsoft 裝載的代理程式上安裝的軟體清單,請參閱 使用 microsoft 託管的代理程式

    1. 從 [ 代理程式 集區] 索引標籤中,選取所需的集區。

      Select the desired pool.

    2. 選取 代理 程式,然後選擇所需的代理程式。

      Select Agents and choose the desired agent.

    3. 選擇 [ 功能 ] 索引標籤。

      Agent capabilities tab.

    1. 從 [ 代理程式 集區] 索引標籤中,選取所需的集區。

      Select the desired tab, 2019.

    2. 選取 代理 程式,然後選擇所需的代理程式。

      Choose the desired agent, 2019.

    3. 選擇 [ 功能 ] 索引標籤。

      Choose the Capabilities tab, 2019.

    選取所需的代理程式,然後選擇 [ 功能 ] 索引標籤。

    Agent capabilities tab, 2018.

    選取所需的代理程式,然後選擇 [ 功能 ] 索引標籤。

    Agent capabilities tab, 2017.

    從 [ 代理程式 集區] 索引標籤中選取所需的代理程式,然後選擇 [ 功能 ] 索引標籤

    Choose the Agent capabilities tab, 2015.

  3. 若要向代理程式註冊新的功能,請選擇 [新增 功能]。

提示

在自我裝載的代理程式上安裝新軟體之後,您必須重新開機代理程式,才能顯示新的功能。 如需詳細資訊,請參閱重新開機 Windows 代理程式重新開機 Linux 代理程式,然後重新開機 Mac 代理程式

溝通

與 Azure Pipelines 通訊

與 TFS 通訊

代理程式會與 Azure Pipelines 或 Azure DevOps Server 進行通訊,以判斷需要執行的作業,以及報告記錄和作業狀態。 代理程式一律會起始此通訊。 從代理程式到 Azure Pipelines 或 Azure DevOps Server 的所有訊息會透過 HTTP 或 HTTPS 進行,視您設定代理程式的方式而定。 此提取模型可讓您在不同拓撲中設定代理程式,如下所示。

Agent topologies in on-premises installations.

Agent topologies in Azure DevOps Services.

以下是代理程式與 Azure Pipelines 或 Azure DevOps Server 之間的常見通訊模式。

  1. 使用者將代理程式新增至代理程式組件區,以 Azure Pipelines 或 Azure DevOps Server 註冊代理程式。 您必須是代理程式 集區管理員 ,才能在該代理程式組件區中註冊代理程式。 只有在註冊時才需要代理程式組件區管理員的身分識別,且不會保存在代理程式上,也不會用於代理程式與 Azure Pipelines 或 Azure DevOps Server 之間的任何進一步通訊。 註冊完成後,代理程式會下載接聽程式 OAuth 權杖 ,並使用它來接聽作業佇列。

  2. 代理程式會使用 HTTP 長時間輪詢,以查看是否已在 Azure Pipelines/Azure DevOps Server 的工作佇列中公佈新的作業要求。 當作業可供使用時,代理程式會下載作業以及工作專屬的 OAuth 權杖。 此權杖是由管線中指定之範圍身分識別的 Azure Pipelines/Azure DevOps Server 所產生。 該權杖存留期很短,而且由代理程式用來存取資源 (例如,原始程式碼) 或修改資源 (例如,將測試結果上傳) 在該作業內 Azure Pipelines 或 Azure DevOps Server 上。

  3. 作業完成後,代理程式會捨棄工作專屬的 OAuth 權杖,並返回以使用接聽程式 OAuth 權杖來檢查是否有新的作業要求。

代理程式和 Azure Pipelines/Azure DevOps Server 之間交換之訊息的承載會使用非對稱式加密來保護。 每個代理程式都有公開/私密金鑰組,而公開金鑰會在註冊期間與伺服器交換。 伺服器會使用公開金鑰來加密作業的內容,再將其傳送至代理程式。 代理程式會使用其私密金鑰來解密作業內容。 這是在管線或變數群組中儲存的密碼在與代理程式交換時的安全方式。

以下是代理程式和 TFS 之間的常見通訊模式。

  • 代理程式組件區管理員會將代理程式加入代理程式組件區,而服務帳戶的認證 (用於 Windows) 或針對 Linux 和) macOS 的已儲存使用者名稱和密碼 (用於起始與 TFS 的通訊。 代理程式會使用這些認證來接聽作業佇列。

  • 代理程式在與伺服器通訊時,不會使用非對稱金鑰加密。 不過,您可以 使用 HTTPS 來保護 代理程式與 TFS 之間的通訊。

部署至目標伺服器的通訊

當您使用代理程式將構件部署到一組伺服器時,它必須有這些伺服器的「連線能力」。 根據預設,Microsoft 裝載的代理程式組件區可以連線到 Azure 中執行的 Azure 網站和伺服器。

注意

如果您的 Azure 資源是在 Azure 虛擬網路中執行,您可以取得 代理程式 IP 範圍 ,其中部署了 Microsoft 裝載的代理程式,因此您可以設定 Azure VNet 的防火牆規則,以允許代理程式存取。

如果您的內部部署環境無法連線到 Microsoft 裝載的代理程式組件區 (這通常是因為中繼防火牆) ,您將需要在內部部署 (電腦上手動設定自我裝載的代理程式) 。 代理程式必須能夠連線到目標內部部署環境,以及存取網際網路以連接 Azure Pipelines 或 Team Foundation Server,如下列圖解所示。

Agent connectivity for on-premises environments

驗證

若要註冊代理程式,您必須是代理程式組件區中 系統管理員角色 的成員。 只有在註冊時才需要代理程式組件區管理員的身分識別,且不會保存在代理程式上,而且不會用於代理程式與 Azure Pipelines 或 Azure DevOps Server 之間的任何後續通訊。 此外,您必須是伺服器上的本機系統管理員,才能設定代理程式。

您的代理程式可以使用下列方法向 Azure Pipelines 進行驗證:

您的代理程式可以使用下列其中一種方法,驗證 Azure DevOps Server 或 TFS:

個人存取權杖 (PAT) :

產生並使用 PAT 將代理程式與 Azure Pipelines 或 TFS 2017 和更新版本連線。 PAT 是適用于 Azure Pipelines 的唯一配置。 PAT 必須有 代理程式組件區 (讀取、管理) 範圍 (適用于 部署群組 代理程式、pat 必須有 部署群組 (讀取、管理) 範圍) ,而單一 pat 可以用來註冊多個代理程式,則 pat 只會在註冊代理程式時使用,而不會用於後續的 通訊。 如需詳細資訊,請參閱WindowsLinuxmacOS自我裝載的代理程式文章中的使用個人存取權杖進行驗證 (PAT) 一節。

若要搭配 Azure DevOps Server 使用 PAT,您的伺服器必須使用 HTTPS 進行設定。 請參閱 網站設定和安全性

Integrated

使用已登入使用者的認證,透過 NTLM 或 Kerberos 之類的 Windows 驗證配置,連線 Windows 代理程式至 TFS。

若要使用這種驗證方法,您必須先設定您的 TFS 伺服器。

  1. 登入您正在執行 TFS 的電腦。

  2. 啟動 [網際網路資訊服務 (IIS) 管理員]。 選取您的 TFS 網站,並確定已使用有效的提供者(例如 NTLM 或 Kerberos)啟用 Windows 驗證。

IIS TFS windows authentication

IIS TFS windows authentication with ntlm provider

交涉

透過 NTLM 或 Kerberos 等 Windows 驗證配置,以使用者以外的使用者的身份連線至 TFS。

若要使用這種驗證方法,您必須先設定您的 TFS 伺服器。

  1. 登入您正在執行 TFS 的電腦。

  2. 啟動 [網際網路資訊服務 (IIS) 管理員]。 選取您的 TFS 網站,並確定已使用 Negotiate 提供者和其他方法(例如 NTLM 或 Kerberos)啟用 Windows 驗證。

IIS TFS windows authentication

IIS TFS windows authentication with negotiate and ntlm provider

替代

使用基本驗證連線至 TFS。 若要使用這個方法,您必須先 在 TFS 上設定 HTTPS

若要使用這種驗證方法,您必須設定 TFS 伺服器,如下所示:

  1. 登入您正在執行 TFS 的電腦。

  2. 設定基本驗證。 請參閱使用 基本驗證針對 Team Foundation Server 2015。

互動式與服務

您可以將自我裝載的代理程式做為服務或互動式進程執行。 設定代理程式之後,建議您先以互動模式嘗試,以確定它可以正常運作。 然後,若要在生產環境中使用,建議您在下列其中一個模式下執行代理程式,使其可靠地保持在執行狀態。 這些模式也可確保代理程式會在電腦重新開機時自動啟動。

  1. 作為服務。 您可以利用作業系統的 service manager 來管理代理程式的生命週期。 此外,當代理程式以服務的形式執行時,自動升級代理程式的體驗也比較好。

  2. 啟用自動登入的互動式進程。 在某些情況下,您可能需要以互動方式執行代理程式以供生產環境使用,例如執行 UI 測試。 當代理程式設定為在此模式下執行時,也會停用螢幕保護裝置。 某些網域原則可能會讓您無法啟用自動登入或停用螢幕保護裝置。 在這種情況下,您可能需要從網域原則中尋找豁免,或在網域原則不適用的工作組電腦上執行代理程式。

    注意

    當您啟用自動登入或停用螢幕保護裝置時,會有安全性風險,因為您可以讓其他使用者向上流覽電腦,並使用自動登入的帳戶。 如果您將代理程式設定成以這種方式執行,您必須確定電腦受到實際保護;例如,位於安全的設備中。 如果您使用遠端桌面來存取代理程式以自動登入執行的電腦,只要關閉遠端桌面就會導致電腦遭到鎖定,而在此代理程式上執行的任何 UI 測試可能會失敗。 若要避免這種情況,請使用 tscon 命令中斷與遠端桌面的連線。 例如:

    %windir%\System32\tscon.exe 1 /dest:console

代理程式帳戶

無論您是以服務方式或以互動方式執行代理程式,都可以選擇要用來執行代理程式的電腦帳戶。 (請注意,這與您向 Azure Pipelines 或 Azure DevOps Server 註冊代理程式時所使用的認證不同。 ) 代理程式帳戶的選擇只取決於您的組建和部署作業中執行的工作需求。

例如,若要執行使用 Windows 驗證存取外部服務的工作,您必須使用可存取該服務的帳戶來執行代理程式。 但是,如果您正在執行需要瀏覽器的 Selenium 或自動程式碼 UI 測試等 UI 測試,則會在代理程式帳戶的內容中啟動瀏覽器。

在 Windows 上,您應該考慮使用服務帳戶,例如 Network service 或 Local service。 這些帳戶具有限制的許可權,而且其密碼不會過期,這表示代理程式在一段時間內需要較少的管理。

代理程式版本和升級

我們會在 Azure Pipelines 中每隔幾周更新代理程式軟體。 我們以格式表示代理程式版本 {major}.{minor} 。 比方說,如果代理程式版本是 2.1 ,則主要版本是2,而次要版本是1。

Microsoft 裝載的代理程式一律保持最新狀態。 如果較新版本的代理程式只在次要版本中不同,則可以自動更新自我裝載的代理程式, (在代理程式集區中設定這項設定、選取您的代理程式設定-Azure Pipelines 會啟用預設) 。 當平臺功能或管線中使用的其中一個工作需要較新版的代理程式時,便會要求升級。

如果您以互動方式執行自我裝載代理程式,或有較新的可用代理程式 主要 版本,您可能必須手動升級代理程式。 您可以從組織下的 [ 代理程式 集區] 索引標籤輕鬆地完成此作業。 您的管線在可將目標設定為相容代理程式之前,將不會執行。

更新自我裝載的代理程式

  1. 流覽至Project 設定]、[代理程式集區]。

    Project settings, Agent pools

  2. 選取您的代理程式組件區,然後選擇 [ 更新所有代理程式]。

    Update all agents

    您也可以從 [ ... ] 功能表選擇 [更新代理程式],個別更新代理程式。

    Update agent

  3. 選取 [ 更新 ] 以確認更新。

    Update all agents confirmation

  4. 更新要求會排入集區中每個代理程式的佇列中,這會在任何目前執行中的作業完成時執行。 升級通常只需要幾分鐘的時間,就足以下載最新版的代理程式軟體 (大約 200 MB) 、將它解壓縮,然後以新的版本重新開機代理程式。 您可以在 [ 代理 程式] 索引標籤上監視代理程式的狀態。

我們會更新 Azure DevOps Server 和 TFS 中的每個更新的代理程式軟體。 我們以格式表示代理程式版本 {major}.{minor} 。 比方說,如果代理程式版本是 2.1 ,則主要版本是2,而次要版本是1。

當您的 Azure DevOps Server 或 TFS 伺服器有較新版本的代理程式,而且較新的代理程式在次要版本中只有不同時,通常可以自動升級。 當平臺功能或管線中使用的其中一個工作需要較新版的代理程式時,便會要求升級。 從 Azure DevOps Server 2019 開始,您不需要等待新的伺服器版本。 您可以將 新版的代理程式上傳至您的應用層,並將該版本提供為升級。

如果您以互動方式執行代理程式,或有較新的可用代理程式 主要 版本,您可能必須手動升級代理程式。 您可以從專案集合底下的 [ 代理程式 集區] 索引標籤輕鬆地完成此作業。 您的管線在可將目標設定為相容代理程式之前,將不會執行。

您可以流覽至 [ 代理 程式集區],然後選取所需代理程式的 [ 功能 ] 索引標籤,以查看代理程式的版本,如 設定代理程式功能中所述。

若要以程式設計方式觸發代理程式更新,您可以使用代理程式更新 API,如 如何以程式設計方式觸發特定代理程式組件區的代理程式更新?。

注意

針對沒有網際網路存取的伺服器,請手動將代理程式 zip 檔案複製到,以 C:\ProgramData\Microsoft\Azure DevOps\Agents\ 做為本機檔案使用。

常見問題集

如何? 確定我有最新的 v2 代理程式版本?

  1. 流覽至 [ 代理程式 集區] 索引標籤:

    1. 選擇 [ Azure DevOps]、[組織設定]。

      Choose Organization settings.

    2. 選擇 代理程式集區。

      Choose Agent pools tab.

    1. 選擇 [ Azure DevOps]、[集合設定]。

      Choose Collection settings.

    2. 選擇 代理程式集區。

      Choose Agent pools.

    1. 選擇 [ Azure DevOps]、[集合設定]。

      Collection settings, 2019.

    2. 選擇 代理程式集區。

      Choose Agent pools, 2019.

    1. 流覽至您的專案, 然後選擇) 代理程式佇列的設定 (齒輪圖示。

      Choose Settings, Agent Queues, 2018.

    2. 選擇 [ 管理集區]。

      Choose Manage pools, 2018.

    1. 流覽至您的專案, 然後選擇) 代理程式佇列的設定 (齒輪圖示。

      Choose settings, Agent Queues, 2017.

    2. 選擇 [ 管理集區]。

      Choose Manage pools, 2017.

    1. 流覽至您的專案,然後選擇 [ 管理專案 (齒輪] 圖示) 。

      Manage project, 2015.

    2. 選擇 [ 控制台]。

      Choose Control panel, 2015.

    3. 選取 [ 代理程式集區]。

      Select Agent pools, 2015.

  2. 按一下包含代理程式的集區。

  3. 請確定已啟用代理程式。

  4. 流覽至 [功能] 索引標籤:

    1. 從 [ 代理程式 集區] 索引標籤中選取所需的代理程式組件區。

      From Agent pools, select the desired agent pool.

    2. 選取 代理 程式,然後選擇所需的代理程式。

      Select Agents and choose the agent.

    3. 選擇 [ 功能 ] 索引標籤。

      Choose the Capabilities tab.

      注意

      Microsoft 裝載的代理程式不會顯示系統功能。 如需在 Microsoft 裝載的代理程式上安裝的軟體清單,請參閱 使用 microsoft 託管的代理程式

    1. 從 [ 代理程式 集區] 索引標籤中,選取所需的集區。

      Select the desired pool.

    2. 選取 代理 程式,然後選擇所需的代理程式。

      Select Agents and choose the desired agent.

    3. 選擇 [ 功能 ] 索引標籤。

      Agent capabilities tab.

    1. 從 [ 代理程式 集區] 索引標籤中,選取所需的集區。

      Select the desired tab, 2019.

    2. 選取 代理 程式,然後選擇所需的代理程式。

      Choose the desired agent, 2019.

    3. 選擇 [ 功能 ] 索引標籤。

      Choose the Capabilities tab, 2019.

    選取所需的代理程式,然後選擇 [ 功能 ] 索引標籤。

    Agent capabilities tab, 2018.

    選取所需的代理程式,然後選擇 [ 功能 ] 索引標籤。

    Agent capabilities tab, 2017.

    從 [ 代理程式 集區] 索引標籤中選取所需的代理程式,然後選擇 [ 功能 ] 索引標籤

    Choose the Agent capabilities tab, 2015.

  5. 尋找 Agent.Version 功能。 您可以針對最新發行的代理程式版本來檢查此值。 請參閱Azure Pipelines 代理程式,並檢查頁面中列出的最高版本號碼。

  6. 當每個代理程式執行需要較新版本的代理程式的工作時,會自動自行更新。 如果您想要手動更新某些代理程式,請在集區上按一下滑鼠右鍵,然後選取 [ 更新所有代理程式]。

我可以更新屬於 Azure DevOps Server 集區一部分的 v2 代理程式嗎?

是。 從 Azure DevOps Server 2019 開始,您可以設定伺服器來尋找本機磁片上的代理程式封裝檔案。 這項設定會覆寫發行時伺服器隨附的預設版本。 當伺服器無法存取網際網路時,也適用此案例。

  1. 從具有網際網路存取權的電腦,在 .zip 或 gz 表單中下載最新版的代理程式套件檔案 (從Azure Pipelines 代理程式 GitHub 發行] 頁面中) 。

  2. 使用您選擇的方法 ((例如 USB 磁片磁碟機、網路) 傳輸等),將下載的套件檔案傳送至每個 Azure DevOps Server 應用層。 將代理程式檔案放在 %ProgramData%\Microsoft\Azure DevOps\Agents 資料夾底下。

  3. 您已全部設定完畢! 當代理程式更新時,您的 Azure DevOps Server 現在會使用本機檔案。 當每個代理程式執行需要較新版本的代理程式的工作時,會自動自行更新。 但是,如果您想要手動更新某些代理程式,請在集區上按一下滑鼠右鍵,然後選擇 [ 更新所有代理程式]。

自我裝載的代理程式在 Microsoft 裝載的代理程式上是否有任何效能優勢?

在許多情況下,是。 具體來說:

  • 如果您使用自我裝載的代理程式,您可以執行累加組建。 例如,如果您定義的管線不會清除存放庫,也不會執行乾淨組建,則組建的執行速度通常會更快。 當您使用 Microsoft 裝載的代理程式時,您不會因為代理程式在組建或發行管線完成後損毀而無法獲得這些權益。

  • Microsoft 裝載的代理程式可能需要較長的時間來啟動您的組建。 雖然您的作業通常只需要幾秒鐘的時間才會指派給 Microsoft 裝載的代理程式,但有時可能需要幾分鐘的時間,才能根據系統的負載配置代理程式。

我可以在同一部電腦上安裝多個自我裝載的代理程式嗎?

是。 這種方法適用于執行不耗用許多共用資源之作業的代理程式。 例如,您可以針對執行大部分協調部署的發行的代理程式嘗試它,而不會對代理程式本身執行太多工作。

在其他情況下,您可能會發現,在同一部電腦上執行多個代理程式不會獲得更高的效率。 例如,執行組建的代理程式可能會耗用大量的磁片和 i/o 資源。

如果平行組建作業使用相同的 singleton 工具部署,例如 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 參數

Name 位於 必要 類型 Description
agentId 查詢 False 字串 要更新的代理程式。 如果未指定-將會針對所有代理程式觸發更新。
organization path True 字串 Azure DevOps 組織的名稱。
poolId path True 整數 int32 要使用的代理程式組件區
api-version 查詢 False 字串 要使用的 API 版本。 這應該設定為 ' 6.0 ',才能使用這個版本的 api。

若要觸發代理程式更新-要求主體應為空白。

注意

GitHub上 Azure Pipelines 代理程式是開放原始碼。

深入了解

如需代理程式的詳細資訊,請參閱使用 Azure DevOps 學習路徑的組建應用程式中的下列模組。