来自代理A的azure devops管道CopyFiles @ 2任务副本的文件,但是DownloadBuildArtifacts @ 0将文件下载到代理B

问题描述

我对来自托管代理的复制文件有有线行为,然后将它们下载回同一代理 看起来它从代理程序A复制文件,但是同一管道将它们下载回代理程序B 与是在另一台机器上执行另一个无关的构建工作

从ios_docker_142_linux_slave_1上传

enter image description here

下载回不同的代理ios_docker_141_linux_slave_3,为什么?

enter image description here

 - task: copyFiles@2
    inputs:
      CleanTargetFolder: 'true'
      SourceFolder: '$(Agent.HomeDirectory)/../${{parameters.Folderpath}}'
      Contents: '**'
      TargetFolder: '$(build.artifactstagingdirectory)'

解决方法

如果使用并行作业,这是预期的行为。根据您的屏幕截图,有多个作业是自托管的connect,mac_agent,copy_back_files_to_self。.

一个代理一次完成一项工作。如果代理程序正在运行作业,它将处于繁忙状态,而其他作业将寻找空闲的代理程序来运行。并行作业用于一次在多个代理中运行多个作业。

要实现所需的功能,您需要在YAML文件中指定详细代理。池名称需要添加到name字段中,然后可以添加demands。您可以尝试以下YAML代码:

stages:

- stage: Deploy

  pool: 

   name: AgentPoolName(e.g. alm-aws-pool)

   demands:

    - agent.name -equals Agentname (e.g. deploy-05-agent1)

  jobs:

  - job: BuildJob

    steps:

    - script: echo Building!