任务的 Devops 代理配置,而不是代理

Devops Proxy Configuration for tasks, not for agent

这是我的场景:

代理在没有代理配置的情况下运行良好,问题是它执行了 2 个任务。

获取源代码后,管道有两个 NuGet 任务:

我在第一个任务中遇到以下错误

##[debug]Agent.Version=2.177.1
##[debug]Agent.ToolsDirectory=C:\Proyectos\Agent2\_work\_tool
##[debug]isExplicit: 5.10.0
##[debug]explicit? true
##[debug]evaluating 1 versions
##[debug]matched: 5.10.0
##[debug]Querying versions list
##[debug]Agent.ProxyUrl=undefined
ERR:connect ETIMEDOUT 152.199.23.209:443
##[debug]task result: Failed
##[debug]Processed: ##vso[task.complete result=Failed;]

然后我配置这些管道变量

Agent.ProxyBypassList   $(ProxyBypassList)
Agent.ProxyPassword     $(ProxyPassword)
Agent.ProxyUrl          $(ProxyUrl)
Agent.ProxyUsername     $(ProxyUsername)

值在变量组中定义。 使用此配置,任务运行良好

##[debug]Agent.Version=2.177.1
##[debug]Agent.ToolsDirectory=C:\Proyectos\Agent2\_work\_tool
##[debug]evaluating 0 versions
##[debug]match not found
##[debug]Querying versions list
##[debug]Agent.ProxyUrl=***
##[debug]Agent.ProxyUsername=***
##[debug]Agent.ProxyPassword=***
##[debug]Agent.ProxyBypassList=***
(node:15928) Warning: Use Cipheriv for counter mode of aes-256-ctr
##[debug]evaluating 53 versions
##[debug]matched: 5.10.0
##[debug]Found the following version from the list: 5.10.0
##[debug]isExplicit: 5.10.0
##[debug]explicit? true
##[debug]Agent.Version=2.177.1
##[debug]Agent.ToolsDirectory=C:\Proyectos\Agent2\_work\_tool
##[debug]checking cache: C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64
##[debug]not found
##[debug]Downloading version: 5.10.0
...
##[debug]Processed: ##vso[task.prependpath]C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64
##[debug]set NuGetExeToolPath=C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe
##[debug]Processed: ##vso[task.setvariable variable=NuGetExeToolPath;issecret=false;]C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe

那么问题就转化到第二个任务上了。这是第二个任务生成的 YAML:

steps:
- task: NuGetCommand@2
  displayName: 'NuGet restore packages.config'
  inputs:
    restoreSolution: '**/packages.config'
    feedsToUse: config
    nugetConfigPath: 'xxxxxxxxxx\NuGet.Config'
    externalFeedCredentials: 'xxxxxxxxx Basic Authentication'

外部提要凭据是与同一服务器的另一个 DevOps 集合中的私有提要的服务连接。我也尝试过使用带有令牌的服务连接并获得相同的结果。

这是该任务日志的一部分

Versión de NuGet detectada: 5.10.0.7240 / 5.10.0+dca1d060f38e1e02f6bfca41e25f081f19fd534b.dca1d060f38e1e02f6bfca41e25f081f19fd534b
##[debug]Quirks for 5.10.0.7240:
##[debug]    NoTfsOnPremAuthConfig
##[debug]    V2CredentialProvider
##[debug]NuGet.ForceEnableCredentialProvider=undefined
##[debug]Credential provider V1 is disabled in favor of V2 plugin.
##[debug]NuGet_ForceEnableCredentialProviderV2=undefined
##[debug]NuGetTasks.IsHostedTestEnvironment=undefined
##[debug]System.ServerType=OnPremises
##[debug]V2 credential provider is enabled.
##[debug]NuGet.ForceEnableCredentialConfig=undefined
##[debug]NuGetTasks.IsHostedTestEnvironment=undefined
##[debug]System.ServerType=OnPremises
##[debug]Credential config is disabled due to on-prem quirks.
##[debug]Setting up auth
##[debug]Discovered URL prefixes: http://xxxxxxxxx:8080/tfs/xxxxxxxx/
##[debug]NuGetTasks.ExtraUrlPrefixesForTesting=undefined
##[debug]Getting credentials for local feeds
SYSTEMVSSCONNECTION exists true
##[debug]SYSTEMVSSCONNECTION exists true
##[debug]Got auth token
##[debug]externalEndpoints=bf184c95-f3f5-4dcf-be45-9aa22eba92e9
##[debug]bf184c95-f3f5-4dcf-be45-9aa22eba92e9=http://xxxxxxx:8080/tfs/xxxxxxxx/_packaging/xxxxxxxx/nuget/v3/index.json
bf184c95-f3f5-4dcf-be45-9aa22eba92e9 exists true
##[debug]bf184c95-f3f5-4dcf-be45-9aa22eba92e9 exists true
##[debug]bf184c95-f3f5-4dcf-be45-9aa22eba92e9 auth scheme = UsernamePassword
##[debug]adding password auth entry for feed http://xxxxxxxxxxx:8080/tfs/xxxxxxxxxxx/_packaging/xxxxxxxxx/nuget/v3/index.json
##[debug]Setting up sources
##[debug]selectOrConfig=config
##[debug]nugetConfigPath=C:\Proyectos\Agent2\_work\s\xxxxxxxx\NuGet.Config
##[debug]check path : C:\Proyectos\Agent2\_work\s\xxxxxxxx\NuGet.Config
##[debug]nugetConfigPath=C:\Proyectos\Agent2\_work\s\xxxxxxxx\NuGet.Config
##[debug]Absolute path for pathSegments: C:\Proyectos\Agent2\_work\s\xxxxxxxx\NuGet.Config = C:\Proyectos\Agent2\_work\s\xxxxxxxx\NuGet.Config
##[debug]build.sourcesDirectory=C:\Proyectos\Agent2\_work\s
##[debug]Absolute path for pathSegments: C:\Proyectos\Agent2\_work\s = C:\Proyectos\Agent2\_work\s
##[debug]nugetConfigPathpath supplied :true
##[debug]Agent.BuildDirectory=C:\Proyectos\Agent2\_work
##[debug]build.buildId=210
##[debug]No temp nuget.config auth
##[debug]ConfigFile: C:\Proyectos\Agent2\_work\s\xxxxxxxx\NuGet.Config
##[debug]Absolute path for pathSegments: C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe = C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe
##[debug]which 'C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe'
##[debug]found: 'C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe'
##[debug]which 'C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe'
##[debug]found: 'C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe'
##[debug]C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe arg: restore
##[debug]C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe arg: C:\Proyectos\Agent2\_work\s\xxxxxxxx\xxxxxxxx\packages.config
##[debug]C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe arg: -Verbosity
##[debug]C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe arg: Detailed
##[debug]C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe arg: -NonInteractive
##[debug]C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe arg: -ConfigFile
##[debug]C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe arg: C:\Proyectos\Agent2\_work\s\xxxxxxxx\NuGet.Config
##[debug]Agent.TempDirectory=C:\Proyectos\Agent2\_work\_temp
##[debug]NUGET_PLUGINS_CACHE_PATH set to C:\Proyectos\Agent2\_work\_temp\NuGetPluginsCache
##[debug]V2 credential provider set
##[debug]credProviderPath = C:\Proyectos\Agent2\_work\_tasks\NuGetCommand_333b11bd-d341-40d9-afcf-b32d5ce6f23b.153.2\CredentialProviderV2\plugins\netfx\CredentialProvider.Microsoft\CredentialProvider.Microsoft.exe
##[debug]Detected external credentials for:
##[debug]http://xxxxxxxx:8080/tfs/xxxxxxxx/_packaging/xxxxxxxx/nuget/v3/index.json
##[debug]agent.proxyurl=***
##[debug]agent.proxyusername=***
##[debug]agent.proxypassword=***
##[debug]Adding environment variable for NuGet proxy: http://***:***@yyyyyyyyyyy:8080/
##[debug]Agent.ProxyBypassList=***
##[debug]Getting sources from NuGet.config in this location: C:\Proyectos\Agent2\_work\s\xxxxxxxx\NuGet.Config
##[debug]Adding environment variable for NuGet proxy bypass: xxxxxxxx
##[debug]exec tool: C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe
##[debug]arguments:
##[debug]   restore
##[debug]   C:\Proyectos\Agent2\_work\s\xxxxxxxx\xxxxxxxx\packages.config
##[debug]   -Verbosity
##[debug]   Detailed
##[debug]   -NonInteractive
##[debug]   -ConfigFile
##[debug]   C:\Proyectos\Agent2\_work\s\xxxxxxxx\NuGet.Config
[command]C:\Proyectos\Agent2\_work\_tool\NuGet.10.0\x64\nuget.exe restore C:\Proyectos\Agent2\_work\s\xxxxxxxx\xxxxxxxx\packages.config -Verbosity Detailed -NonInteractive -ConfigFile C:\Proyectos\Agent2\_work\s\xxxxxxxx\NuGet.Config
##[debug]Re-evaluate condition on job cancellation for step: 'NuGet restore packages.config'.
##[error]The operation was canceled.

任务挂起,我必须取消它。

你能帮我找出我遗漏或做错了什么吗?

我找到了让它正常工作的正确过程。

  • 安装代理。
  • 创建一个名为 .proxybypass 的文件,包括用于在代理目录中绕过代理的 URL:
    • 我使用命令echo *urltobypass* > .proxybypass
  • 使用代理参数配置配置代理:
    • .\config.cmd --proxyurl *YourProxyUrl* --proxyusername *YourProxyUser* --proxypassword *YourProxyPassword*

通过这些配置代理的步骤,任务可以正常执行。

Run a self-hosted agent behind a web proxy