azure devops 管道 CopyFiles@2 任务从代理 A 复制文件,但 DownloadBuildArtifacts@0 将文件下载到代理 B

azure devops pipeline CopyFiles@2 task copy's files from agent A but DownloadBuildArtifacts@0 downloads the files to agent B

我有从托管代理复制文件的有线行为,然后将它们下载回同一个代理 看起来它从代理 A 复制文件,但相同的管道将它们下载回代理 B with 在另一台机器上执行另一个不相关的构建作业

上传自ios_docker_142_linux_slave_1

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

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

如果您使用并行作业,这是预期的行为。根据你的截图,有多个作业 self-hosted 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!