分享方式:


自我裝載 Windows 代理程式

Azure DevOps Services

若要建置及部署 Windows、Azure 和其他 Visual Studio 解決方案,您至少需要一個 Windows 代理程式。 Windows 代理程式也可以建置 Java 和 Android 應用程式。

本文提供使用 3.x 代理程式軟體搭配 Azure DevOps Services 和最新版 Azure DevOps Server 的指引。 如需支援 3.x 代理程式的 Azure DevOps Server 版本清單,請參閱 Azure DevOps Server 是否支援 3.x 代理程式

注意

本文說明如何設定 自我裝載代理程式。 如果您使用 Azure DevOps Services 和 Microsoft裝載的代理程式 符合您的需求,您可以略過設定自我裝載的 Windows 代理程式。

瞭解代理程式

如果您已經知道代理程序是什麼及其運作方式,請放心直接跳到下列各節。 但是,如果您想要更多有關其運作方式及其運作方式的背景,請參閱 Azure Pipelines 代理程式

檢查先決條件

請確定您的電腦具有下列必要條件:

  • 操作系統版本
    • 用戶端OS
      • Windows 7 SP1 ESU
      • Windows 8.1
      • Windows 10
      • Windows 11
    • 伺服器OS
      • Windows Server 2012 或更新版本
  • 代理程式軟體會安裝自己的 .NET 版本,因此沒有 .NET 必要條件。
  • PowerShell 3.0 或更高版本
  • Subversion - 如果您要從 Subversion 存放庫建置,則必須在電腦上安裝 Subversion 用戶端。
  • 建議 - Visual Studio 建置工具 (2015 或更高版本)

您第一次應該手動執行代理程式設定。 在您瞭解代理程式的運作方式,或想要自動設定許多代理程序之後,請考慮使用 自動設定。

硬體規格

代理程式的硬體規格會隨著您的需求、小組大小等而有所不同。無法提出將適用於每個人的一般建議。 作為參考點,Azure DevOps 小組會使用利用 託管代理程式的管線來建置託管的代理程序代碼。 另一方面,大部分的 Azure DevOps 程式代碼是由執行四個自我裝載代理程式的 24 核心伺服器類別機器所建置。

準備許可權

自我裝載式代理程式的資訊安全

設定代理程式的使用者需要集區管理員權限,但是執行代理程式的使用者則不需要。

代理程式所控制的資料夾應限制為盡可能少的使用者,因為它們包含可以解密或外洩的秘密。

Azure Pipelines 代理程式是一種軟體產品,其設計目的是執行從外部來源下載的程式碼。 它本質上可能是遠端程式代碼執行 (RCE) 攻擊的目標。

因此,請務必考慮管線代理程式每個個別使用方式的威脅模型來執行工作,並決定可以授與執行代理程式之使用者的最低許可權,以及代理程序執行所在的計算機、具有管線定義寫入許可權的使用者、yaml 儲存位置的 git 存放庫、 或控制新管線集區存取權的使用者群組。

最佳做法是讓執行代理程式的身分識別與具有將代理程式連線到集區之許可權的身分識別不同。 產生認證 (和其他代理程式相關檔案) 的使用者與需要讀取認證的使用者不同。 因此,請務必仔細考慮授與代理程式計算機本身的存取權,以及包含敏感性檔案的代理程序資料夾,例如記錄和成品。

僅針對 DevOps 系統管理員和執行代理程式程序的使用者身分識別授與存取權很合理。 系統管理員可能需要調查文件系統,以瞭解建置失敗,或取得記錄檔,才能回報 Azure DevOps 失敗。

決定您將使用的使用者

在單次步驟中,您必須註冊代理程式。 有權 管理代理程式佇列 的人員必須完成這些步驟。 代理程式不會在日常作業中使用此人的認證,但必須完成註冊。 深入瞭解 代理程式如何通訊

確認使用者具有許可權

請確定您將使用的用戶帳戶具有註冊代理程序的許可權。

使用者是 Azure DevOps 組織擁有者或 TFS 或 Azure DevOps Server 系統管理員嗎? 在此停止,您有許可權。

否則:

  1. 開啟瀏覽器並流覽至 Azure Pipelines 組織或 Azure DevOps Server 或 TFS 伺服器的 [代理程式集 區] 索引標籤:

    1. 登入您的組織 (https://dev.azure.com/{yourorganization})。

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

      選擇 [組織設定]。

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

      選擇 [代理程式集區] 索引標籤。

    1. 登入您的專案集合 (http://your-server/DefaultCollection)。

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

      選擇 [集合設定]。

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

      選擇 [代理程式集區]。

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

      集合設定,2019。

    2. 選擇 [ 代理程式集區]。

      選擇 [代理程式集區],2019。

  2. 選取頁面右側的集區,然後按兩下 [ 安全性]。

  3. 如果未顯示您要使用的用戶帳戶,請取得系統管理員來新增它。 系統管理員可以是代理程式集區管理員、 Azure DevOps 組織擁有者,或是 TFS 或 Azure DevOps Server 系統管理員

    如果是部署群組代理程序,系統管理員可以是部署群組管理員、Azure DevOps 組織擁有者TFS 或 Azure DevOps Server 系統管理員

    您可以在 Azure Pipelines 的 [部署群組] 頁面[安全性] 索引卷標中,將使用者新增至部署群組管理員角色。

注意

如果您看到如下的訊息: 很抱歉,我們無法新增身分識別。請嘗試不同的身分識別。您可能已針對組織擁有者或 TFS 或 Azure DevOps Server 系統管理員遵循上述步驟。 您不需要執行任何動作;您已有管理代理程式集區的許可權。

下載並設定代理程式

Azure Pipelines

  1. 使用您已備妥許可權的帳戶登入計算機,如上所述。

  2. 在您的網頁瀏覽器中,登入 Azure Pipelines,然後流覽至 [代理程式集 區] 索引標籤:

    1. 登入您的組織 (https://dev.azure.com/{yourorganization})。

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

      選擇 [組織設定]。

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

      選擇 [代理程式集區] 索引標籤。

    1. 登入您的專案集合 (http://your-server/DefaultCollection)。

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

      選擇 [集合設定]。

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

      選擇 [代理程式集區]。

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

      集合設定,2019。

    2. 選擇 [ 代理程式集區]。

      選擇 [代理程式集區],2019。

  3. 選取 [ 預設 集區],選取 [代理程式] 索引 卷標,然後選擇 [ 新增代理程式]。

  4. 在 [ 取得代理程式 ] 對話框中,選擇 [Windows]。

  5. 在左窗格中,選取電腦上已安裝 Windows 作業系統版本的處理器結構。 x64 代理程式版本適用於 64 位元 Windows,而 x86 版本則適用於 32 位元 Windows。 如果您不確定已安裝哪個 Windows 版本, 請遵循這些指示來找出

  6. 在右窗格中,按兩下 [ 下載] 按鈕。

  7. 請依照頁面上的指示下載代理程式。

  8. 將代理程式解壓縮到您選擇的目錄中。 請確定目錄的路徑不包含空格,因為工具和腳本不一定會正確逸出空格。 建議的資料夾為 C:\agents。 在下載資料夾中擷取或其他使用者資料夾可能會導致許可權問題。

重要

強烈建議您從提升許可權的 PowerShell 視窗設定代理程式。 如果您想要設定為服務,則需要此專案。

您不得使用 Windows PowerShell ISE 來設定代理程式。

重要

基於安全性考慮,我們強烈建議您確定代理程式資料夾 (C:\agents) 只能由系統管理員編輯。

注意

請避免針對代理程式組態使用mintty型殼層,例如 git-bash。 Mintty 與原生輸入/輸出 Windows API 完全不相容(以下是 一些相關信息),我們無法保證安裝腳本在此案例中可正常運作。

安裝代理程式

  1. 啟動提升權限的 [PowerShell] 視窗,並將您解除封裝代理程式的位置設定為 。

    cd C:\agents 
    
    
  2. 執行 config.cmd。 這會詢問您一系列設定代理程序的問題。

    .\config.cmd
    
    

伺服器 URL

當安裝程式要求您的伺服器 URL 時,請回答 https://dev.azure.com/{your-organization}Azure DevOps Services。

當安裝程式要求您的伺服器 URL 時,請回答 https://{my-server}/{my-collection}Azure DevOps Server。

代理程式設定驗證類型

當您註冊代理程式時,請選擇下列驗證類型,安裝程式會提示您輸入每個驗證類型所需的特定額外資訊。 如需詳細資訊,請參閱 自我裝載代理程式驗證選項

  • 個人存取令牌
  • 替代 使用基本身份驗證連線到 Azure DevOps Server 或 TFS。 當您選取 [替代 ] 時,系統會提示您輸入認證。

Windows 代理程式在 Azure DevOps Server 和 TFS 上有下列兩個額外的驗證選項。

  • 透過NTLM或 Kerberos 等 Windows 驗證 配置,交涉以以登入使用者以外的使用者身分連線至 TFS。 選取 [交涉] 之後,系統會提示您輸入認證。
  • 整合式 (預設值) 使用登入使用者的認證,透過NTLM或 Kerberos 等 Windows 驗證配置,將 Windows 代理程式連線到 TFS。 選擇此方法之後,系統不會提示您輸入認證。

重要

您的伺服器必須 設定為支持驗證方法 ,才能使用替代、交涉或整合式驗證。

用於註冊代理程式的驗證方法只會在代理程式註冊期間使用。 若要深入瞭解代理程式在註冊后如何與 Azure Pipelines 通訊,請參閱 與 Azure Pipelines 或 TFS 通訊。

選擇互動式或服務模式

如需在互動式模式或即服務中執行代理程式的指引,請參閱 Agents:Interactive vs. service

如果您選擇以服務身分執行 (我們建議),您執行的使用者名稱應該為 20 個字元或更少。

執行代理程式

以互動方式執行

如果您將代理程式設定為以互動方式執行,請執行下列命令來啟動代理程式。

.\run.cmd

若要重新啟動代理程式,請按 Ctrl+C 停止代理程式,然後執行 run.cmd 以重新啟動代理程式。

注意

如果您是從 PowerShell Core 執行代理程式來執行 Windows PowerShell 工作,管線可能會失敗,並出現錯誤,例如 Error in TypeData "System.Security.AccessControl.ObjectSecurity": The member is already present。 這是因為 Windows PowerShell 會從其父進程繼承 PSModulePath 環境變數,其中包括 PowerShell Core 模組位置。

因應措施是,您可以將代理程式的旋鈕 AZP_AGENT_CLEANUP_PSMODULES_IN_POWERSHELL 設定為 true 在管線中。 這可讓代理程式在執行工作之前重設 PSModulePath

variables:
 AZP_AGENT_CLEANUP_PSMODULES_IN_POWERSHELL: "true"

如果此因應措施無法解決您的問題,或如果您需要使用自定義模組位置,您可以在 PowerShell Core 視窗中視需要設定 $Env:PSModulePath 變數,再執行代理程式。

執行一次

您也可以選擇讓代理程式只接受一項作業,然後結束。 若要在此組態中執行,請使用下列命令。

.\run.cmd --once

此模式中的代理程式只會接受一項作業,然後正常地向下旋轉(適用於在 Docker 中執行的服務,例如 Azure 容器執行個體)。

以服務身分執行

如果您將代理程式設定為以服務身分執行,它會自動啟動。 您可以從服務嵌入式管理單元檢視及控制代理程式執行狀態。 執行 services.msc 並尋找下列其中一項:

  • 「Azure Pipelines 代理程式(您的代理程序名稱)」
  • “VSTS 代理程式(代理程序的名稱)”
  • “vstsagent。(組織名稱)。(代理程序的名稱)”

注意

若要在以服務方式執行之代理程式的訪問控制時,能夠透過旗標或提示,將代理程式服務 SID 類型設定為 [SERVICE_SID_TYPE_UNRESTRICTED] 以在互動式設定流程期間更有彈性。 根據預設,代理程式服務會設定為 SERVICE_SID_TYPE_NONE

如需 SID 類型的詳細資訊,請參閱此

若要重新啟動代理程式,請以滑鼠右鍵按兩下專案,然後選擇 [ 重新啟動]。

注意

如果您需要變更代理程式的登入帳戶,請勿從服務嵌入式管理單元進行。 請改為參閱下列資訊以重新設定代理程式。

若要使用您的代理程式,請使用代理程式的集區執行 作業 。 如果您未選擇不同的集區,您的代理程式將會位於預設集區中

取代代理程式

若要取代代理程式,請遵循 下載並再次設定代理程式 步驟。

當您使用與已經存在之代理程式相同的名稱來設定代理程式時,系統會詢問您是否要取代現有的代理程式。 如果您回答 Y,請確定您移除要取代的代理程式(如下所示)。 否則,在幾分鐘的衝突之後,其中一個代理程式將會關閉。

拿掉並重新設定代理程式

若要移除代理程式:

.\config remove

拿掉代理程序之後,您可以 再次進行設定。

自動設定

您可以從腳本設定代理程式,而不需要人為介入。 您必須通過 --unattended 和所有問題的解答。

若要設定代理程式,它必須知道貴組織的 URL,或已獲授權設定代理程式的某人的集合和認證。 所有其他回應都是選擇性的。 您可以使用環境變數來指定任何命令行參數:將其名稱放在大寫和前面 VSTS_AGENT_INPUT_。 例如, VSTS_AGENT_INPUT_PASSWORD 而不是指定 --password

必要選項

  • --unattended - 代理程式設定不會提示資訊,而且必須在命令行上提供所有設定
  • --url <url> - 伺服器的 URL。 例如: https://dev.azure.com/myorganization 或 http://my-azure-devops-server:8080/tfs
  • --auth <type> - 驗證類型。 有效值為:
    • pat (個人存取令牌)
    • SP (服務主體)(需要 代理程式 3.227.1 版或更新版本)
    • negotiate (Kerberos 或 NTLM)
    • alt (基本身份驗證)
    • integrated (Windows 預設認證)

驗證選項

  • 如果您選擇 --auth pat
    • --token <token> - 指定您的個人存取令牌
    • 您也可以傳遞 OAuth 2.0 令牌做為 --token 參數。
  • 如果您選擇 --auth negotiate--auth alt
    • --userName <userName>- 以 或 格式指定 Windows 用戶名稱domain\userNameuserName@domain.com
    • --password <password> - 指定密碼
  • 如果您選擇 --auth SP
    • --clientID <clientID> - 指定具有註冊代理程式存取權的服務主體用戶端識別碼
    • --tenantId <tenantID> - 指定服務主體在 中註冊的租用戶標識碼
    • --clientSecret <clientSecret> - 指定服務主體的客戶端密碼
    • 如需詳細資訊,請參閱 使用服務主體 註冊代理程式

集區和代理程式名稱

  • --pool <pool> - 要加入之代理程式的集區名稱
  • --agent <agent> - 代理程式名稱
  • --replace - 取代集區中的代理程式。 如果另一個代理程式以相同名稱接聽,它會開始失敗併發生衝突

代理程式設定

  • --work <workDirectory> - 工作目錄,其中儲存作業數據。 預設為在 _work 代理程式目錄的根目錄下。 工作目錄是由指定的代理程式所擁有,不應在多個代理程式之間共用。
  • --acceptTeeEula - 接受 Team Explorer 隨處終端使用者許可協定(僅限 macOS 和 Linux)
  • --disableloguploads - 不要將主控台記錄輸出串流或傳送至伺服器。 相反地,您可以在作業完成之後,從代理程式主機的文件系統擷取它們。

僅限 Windows 啟動

  • --runAsService - 將代理程式設定為以 Windows 服務執行(需要系統管理員權限)
  • --runAsAutoLogon - 設定自動登入並在啟動時執行代理程式 (需要系統管理員權限)
  • --windowsLogonAccount <account> - 與 或 搭配 --runAsService 使用,以 或 --runAsAutoLogon 格式 domain\userName 指定 Windows 用戶名稱。 userName@domain.com
  • --windowsLogonPassword <password>- 搭配 --runAsService--runAsAutoLogon 用來指定 Windows 登入密碼(群組受管理的服務帳戶和 Windows 內建帳戶不需要,例如 'NT AUTHORITY\NETWORK SERVICE')
  • --enableservicesidtypeunrestricted - 用來 --runAsService 將服務 SID 類型的代理程式設定為 SERVICE_SID_TYPE_UNRESTRICTED (需要系統管理員權限)
  • --overwriteAutoLogon - 用來 --runAsAutoLogon 覆寫電腦上現有的自動登入
  • --noRestart - 用來 --runAsAutoLogon 在代理程式設定完成之後停止主機重新啟動

使用 runAsAutoLogon 選項設定代理程式進行疑難解答

使用 選項設定代理程式 runAsAutoLogon 時,每次重新啟動機器之後都會執行代理程式。 如果代理程式在重新啟動機器之後未執行,請執行後續步驟。

如果電腦上已設定代理程式

重新設定代理程式之前,必須先移除舊的代理程式組態,因此請嘗試從代理程式資料夾執行此命令:

.\config.cmd remove --auth 'PAT' --token '<token>'

在執行 命令之後,檢查代理程式是否已從代理程式集區中移除:

<Azure DevOps organization> / <Project> / Settings / Agent pools / <Agent Pool> / Agents

如果執行 命令未移除代理程式集區,請手動從代理程式集區中移除代理程式。

然後,從代理程式資料夾執行此命令,嘗試重新設定代理程式:

.\config.cmd --unattended --agent '<agent-name>' --pool '<agent-pool-name>' --url '<azure-dev-ops-organization-url>' --auth 'PAT' --token '<token>' --runAsAutoLogon --windowsLogonAccount '<domain\user-name>' --windowsLogonPassword '<windows-password>'

指定代理程式名稱(任何特定的唯一名稱),並在重新設定之後檢查此代理程式是否出現在代理程式集區中。

將代理程式封存解壓縮會更好(可以在這裡下載),並從新的解壓縮代理程式資料夾執行此命令。

檢查是否已記錄並正確儲存 Windows 登錄機碼

whoami /user執行 命令以取得 <sid>。 開啟 Registry Editor 並遵循路徑:

Computer\HKEY_USERS\<sid>\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

檢查是否有 VSTSAgent 金鑰。 如果存在,請刪除此金鑰,然後從代理程式資料夾執行 .\config.cmd 命令來關閉Registry Editor並設定代理程式。 在回答問題 Enter Restart the machine at a later time?之前,請再次開啟 Registry Editor 並檢查密鑰是否已 VSTSAgent 出現。 按 Enter 以回答問題,並檢查密鑰是否 VSTSAgent 在重新啟動計算機後仍留在其位置。

檢查 Windows 登錄機碼在您的電腦上是否正常運作

建立 autorun.cmd 包含下列這一行的檔案: echo "Hello from AutoRun!"。 在新的索引鍵/值組與索引鍵AutoRun和值上方的路徑中開啟Registry Editor並建立

C:\windows\system32\cmd.exe /D /S /C start "AutoRun" "D:\path\to\autorun.cmd"

重新啟動電腦。 如果您沒有看到含有訊息的 Hello from AutoRun! 控制台視窗,則 Windows 登錄機碼有問題。

僅限部署群組

  • --deploymentGroup - 將代理程式設定為部署群組代理程式
  • --deploymentGroupName <name> - 用來 --deploymentGroup 指定要加入之代理程式的部署群組
  • --projectName <name> - 用來 --deploymentGroup 設定項目名稱
  • --addDeploymentGroupTags - 用來 --deploymentGroup 指出應該新增部署群組標籤
  • --deploymentGroupTags <tags> - 用於 --addDeploymentGroupTags 指定部署群組代理程式的逗號分隔標籤清單 , 例如 “web, db”

僅限環境

  • --addvirtualmachineresourcetags - 用來指出應該新增環境資源標籤
  • --virtualmachineresourcetags <tags> - 用於 --addvirtualmachineresourcetags 指定環境資源代理程式的逗號分隔卷標清單 - 例如 “web, db”

.\config --help 一律會列出最新的必要和選擇性回應。

診斷

如果您在自我裝載代理程式時遇到問題,您可以嘗試執行診斷。 設定代理程式之後:

.\run --diagnostics

這會透過診斷套件執行,以協助您針對問題進行疑難解答。 從代理程式 2.165.0 版開始提供診斷功能。

自我裝載代理程式的網路診斷

Agent.Diagnostic 的值設定為 true,以收集可用來對自我裝載式代理程式的網路問題進行疑難排解的其他記錄。 如需詳細資訊,請參閱 自我裝載代理程式的網路診斷

其他選項的說明

若要瞭解其他選項:

.\config --help

說明提供驗證替代方案和自動設定的相關信息。

功能

代理程式的功能會在集區中編錄和公告,以便只指派其可處理的組建和發行。 請參閱 建置和發行代理程式功能

在許多情況下,部署代理程序之後,您必須安裝軟體或公用程式。 一般而言,您應該在代理程式上安裝任何您在開發計算機上所使用的軟體和工具。

例如,如果您的組建包含 npm 工作,則除非集區中有已安裝 npm 的組建代理程式,否則不會執行組建。

重要

功能包括所有環境變數,以及代理程式執行時所設定的值。 如果代理程式執行時有任何一個值變更,則必須重新啟動代理程式以挑選新的值。 在代理程式上安裝新軟體之後,您必須重新啟動代理程式,讓新功能顯示在集區中,讓組建能夠執行。

如果您想要將環境變數排除為功能,您可以藉由設定以逗號分隔的變數清單來指定它們 VSO_AGENT_IGNORE

常見問題集

我的代理程式會執行哪個版本的 Git?

根據預設,Windows 代理程式會使用隨附於代理程式軟體的 Git 版本。 Microsoft建議使用隨附於代理程式的 Git 版本,但您有數個選項可覆寫此預設行為,並使用代理程式電腦已安裝在路徑中的 Git 版本。

  • 在管線中將名為 System.PreferGitFromPath 的管線變數設定為 true
  • 在自我裝載代理程式上,您可以在代理程式根目錄中建立名為 .env 的檔案,並將一 System.PreferGitFromPath=true 行新增至檔案。 如需詳細資訊,請參閱 如何? 為每個個別代理程式設定不同的環境變數?

若要查看管線所使用的 Git 版本,您可以查看管線中步驟的記錄 checkout ,如下列範例所示。

Syncing repository: PathFilter (Git)
Prepending Path environment variable with directory containing 'git.exe'.
git version
git version 2.26.2.windows.1

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

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

    1. 登入您的組織 (https://dev.azure.com/{yourorganization})。

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

      選擇 [組織設定]。

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

      選擇 [代理程式集區] 索引標籤。

    1. 登入您的專案集合 (http://your-server/DefaultCollection)。

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

      選擇 [集合設定]。

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

      選擇 [代理程式集區]。

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

      集合設定,2019。

    2. 選擇 [ 代理程式集區]。

      選擇 [代理程式集區],2019。

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

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

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

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

      從 [代理程式集區] 中,選取所需的代理程式集區。

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

      選取 [代理程式],然後選擇代理程式。

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

      選擇 [功能] 索引標籤。

      注意

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

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

      選取所需的集區。

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

      選取 [代理程式],然後選擇所需的代理程式。

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

      [代理程式功能] 索引標籤。

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

      選取所需的索引標籤 2019。

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

      選擇所需的代理程式 2019。

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

      選擇 [功能] 索引標籤,2019。

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

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

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

是。 從 Azure DevOps Server 2019 開始,您可以設定伺服器來尋找本機磁碟上的代理程式套件檔案。 此組態將會覆寫伺服器發行時隨附的預設版本。 當伺服器無法存取因特網時,也會套用此案例。

  1. 從可存取因特網的計算機,從 Azure Pipelines Agent GitHub Releases 頁面下載最新版的代理程式套件檔案(.zip或.tar.gz窗體)。

  2. 使用您選擇的方法,將下載的套件檔案傳輸至每個 Azure DevOps Server 應用層(例如 USB 磁碟驅動器、網路傳輸等等)。 將代理程式檔案放在下列資料夾下:

  • Windows:%ProgramData%\Microsoft\Azure DevOps\Agents
  • Linux:usr/share/Microsoft/Azure DevOps/Agents
  • macOS:usr/share/Microsoft/Azure DevOps/Agents

如果不存在,請 建立 Agents 資料夾。

  1. 一切準備就緒! 您的 Azure DevOps Server 現在會在更新代理程式時使用本機檔案。 當每個代理程式執行需要較新版本代理程式的工作時,就會自動更新它本身。 但如果您想要手動更新某些代理程式,請以滑鼠右鍵按兩下集區,然後選擇 [ 更新所有代理程式]。

我正在執行防火牆,而我的程式碼是 Azure Repos。 代理程式需要與哪些 URL 通訊?

如果您在防火牆後方的安全網路中執行代理程式,請確定代理程式可以起始與下列 URL 和 IP 位址的通訊。

網域 URL 描述
https://{organization_name}.pkgs.visualstudio.com 使用網域的組織使用 {organization_name}.visualstudio.com Azure DevOps 封裝 API
https://{organization_name}.visualstudio.com 針對使用網域的組織{organization_name}.visualstudio.com
https://{organization_name}.vsblob.visualstudio.com 使用網域的組織使用 {organization_name}.visualstudio.com Azure DevOps 遙測
https://{organization_name}.vsrm.visualstudio.com 使用 {organization_name}.visualstudio.com 網域的組織發行管理服務
https://{organization_name}.vssps.visualstudio.com 使用網域的組織使用 {organization_name}.visualstudio.com Azure DevOps Platform Services
https://{organization_name}.vstmr.visualstudio.com 使用網域的組織使用 {organization_name}.visualstudio.com Azure DevOps Test Management Services
https://*.blob.core.windows.net Azure Artifacts
https://*.dev.azure.com 針對使用網域的組織dev.azure.com
https://*.vsassets.io 透過 CDN 的 Azure 成品
https://*.vsblob.visualstudio.com 使用網域的組織使用 dev.azure.com Azure DevOps 遙測
https://*.vssps.visualstudio.com 使用網域的組織使用 dev.azure.com Azure DevOps Platform Services
https://*.vstmr.visualstudio.com 使用網域的組織使用 dev.azure.com Azure DevOps Test Management Services
https://app.vssps.visualstudio.com 針對使用網域的組織{organization_name}.visualstudio.com
https://dev.azure.com 針對使用網域的組織dev.azure.com
https://login.microsoftonline.com 檢視 Microsoft Entra 登入記錄
https://management.core.windows.net Azure 管理 API
https://vstsagentpackage.azureedge.net 代理程式套件

若要確保您的組織可搭配任何現有的防火牆或IP限制運作,請確定 dev.azure.com 並開啟並 *dev.azure.com 更新允許列出的IP,以根據您的IP版本包含下列IP位址。 如果您目前允許列出 13.107.6.18313.107.9.183 IP位址,請保留它們,因為您不需要移除它們。

IPv4 範圍

  • 13.107.6.0/24
  • 13.107.9.0/24
  • 13.107.42.0/24
  • 13.107.43.0/24

IPv6 範圍

  • 2620:1ec:4::/48
  • 2620:1ec:a92::/48
  • 2620:1ec:21::/48
  • 2620:1ec:22::/48

注意

如需允許位址的詳細資訊,請參閱 允許的位址清單和網路連線

如何? 使用自我簽署憑證執行代理程式嗎?

注意

使用自我簽署憑證執行代理程式僅適用於 Azure DevOps Server。

使用自我簽署憑證執行代理程式

如何? 在 Web Proxy 後方執行代理程式嗎?

在 Web Proxy 後方執行代理程式

如何? 重新啟動代理程式

如果您是以互動方式執行代理程式,請參閱以互動方式執行中的重新啟動指示。 如果您是以服務身分執行代理程式,請依照執行身分服務中的步驟重新啟動代理程式。

如何? 為每個個別代理程式設定不同的環境變數?

在代理程式的根目錄下建立檔案 .env ,並將您想要設定的環境變數放入下列格式的檔案,然後重新啟動代理程式。

MyEnv0=MyEnvValue0
MyEnv1=MyEnvValue1
MyEnv2=MyEnvValue2
MyEnv3=MyEnvValue3
MyEnv4=MyEnvValue4

如何? 設定代理程式略過 Web Proxy 並連線到 Azure Pipelines?

如果您想要讓代理程式略過 Proxy 並直接連線到 Azure Pipelines,則您應該設定 Web Proxy 以讓代理程式存取下列 URL。

針對使用網域的組織 *.visualstudio.com

https://login.microsoftonline.com
https://app.vssps.visualstudio.com 
https://{organization_name}.visualstudio.com
https://{organization_name}.vsrm.visualstudio.com
https://{organization_name}.vstmr.visualstudio.com
https://{organization_name}.pkgs.visualstudio.com
https://{organization_name}.vssps.visualstudio.com

針對使用網域的組織 dev.azure.com

https://dev.azure.com
https://*.dev.azure.com
https://login.microsoftonline.com
https://management.core.windows.net
https://vstsagentpackage.azureedge.net
https://vssps.dev.azure.com

若要確保您的組織可搭配任何現有的防火牆或IP限制運作,請確定 dev.azure.com 並開啟並 *dev.azure.com 更新允許列出的IP,以根據您的IP版本包含下列IP位址。 如果您目前允許列出 13.107.6.18313.107.9.183 IP位址,請保留它們,因為您不需要移除它們。

IPv4 範圍

  • 13.107.6.0/24
  • 13.107.9.0/24
  • 13.107.42.0/24
  • 13.107.43.0/24

IPv6 範圍

  • 2620:1ec:4::/48
  • 2620:1ec:a92::/48
  • 2620:1ec:21::/48
  • 2620:1ec:22::/48

注意

此程式可讓代理程式略過 Web Proxy。 您的組建管線和腳本仍然必須針對您在組建中執行的每個工作和工具,處理略過您的 Web Proxy。

例如,如果您使用 NuGet 工作,您必須設定 Web Proxy 以支援略過裝載您使用之 NuGet 摘要的伺服器 URL。

我在上述各節中使用 TFS 和 URL 不適用於我。 我可以在哪裡取得協助?

網站設定和安全性

我使用內部部署 TFS,但看不到其中一些功能。 為什麼呢?

部分功能僅適用於 Azure Pipelines ,但尚未提供內部部署。 如果您已 升級至最新版的 TFS,某些功能可在內部部署使用。

什麼是為代理程式服務啟用SERVICE_SID_TYPE_UNRESTRICTED?

在 Windows Server 上設定代理程式軟體時,您可以從下列提示指定服務安全性識別碼。

Enter enable SERVICE_SID_TYPE_UNRESTRICTED for agent service (Y/N) (press enter for N)

舊版的代理程式軟體會將服務安全性標識元類型設定為 SERVICE_SID_TYPE_NONE,這是目前代理程式版本的預設值。 若要將安全性服務識別元類型設定為 SERVICE_SID_TYPE_UNRESTRICTED,請按 Y

如需詳細資訊,請參閱SERVICE_SID_INFO結構和安全性標識符