您可以将文件从一个VSTS构建代理复制到另一个VSTS构建代理吗?

时间:2019-10-30 03:03:04

标签: azure-devops azure-pipelines azure-pipelines-release-pipeline azure-pipelines-build-task

是否可以将文件从一个构建代理复制到另一个构建代理,并将其作为管道任务的一部分启动?

一个构建代理是Linux,但是我需要继续在Windows代理上工作。

2 个答案:

答案 0 :(得分:1)

按照汉娜的解决方案,附上更详细的工作解决方案:

Agent-1 Agent-2 是来自不同代理池的两台不同计算机。

Agent-1 执行2个步骤:

  1. CopyFiles-将文件“ livne.txt”(可以是任何模式)从默认工作目录写入工件的登台目录
  2. PublishPipelineArtifact-发布一个名为“ PROJECT_NAME”的工件,其中包含复制到默认工作目录中的所有文件。

Agent-2 完成一项主要任务:

  1. DownloadPipelineArtifact-将文件“ livne.txt”(可以是任何模式)从“ PROJECT_NAME”工件下载到当前代理的工作目录中。
  2. 一个简单的bash脚本,以确保工作目录中确实存在“ livne.txt”。
upsert {  
  query {
    # get the uids of all Country nodes
     countries as var (func: has(<dgraph.type>)) @filter(eq(<dgraph.type>, "Country")) {
        uid
    }
  }
  mutation {
    delete {
      uid(countries) * * .
    }
  }
}

答案 1 :(得分:0)

我认为,执行此操作的最佳方法通常是将文件作为管道工件发布,然后将这些工件再次下载到第二个代理上。在一台机器使用测试代理的测试结果来生成报告之前,我已经在项目中做到了这一点。

您可能会想象您的管道看起来像这样:

- job: Build
  displayName: Build on Linux
  steps:
    ...
    - task: PublishPipelineArtifact@1
      displayName: Publish Built binaries from Linux
      inputs:
        path: $(Build.SourcesDirectory)/bin/
        artifact: Binaries


- job: Additional
 displayName: Do something with the binaries on windows
 steps: 
   - task: DownloadPipelineArtifact@2
     inputs:
       artifact: Binaries
       targetPath: $(Pipeline.Workspace)/Binaries
   ...

我希望这会有所帮助! :)