【问题标题】:Can you copy files from one VSTS build agent to another?您可以将文件从一个 VSTS 构建代理复制到另一个吗?
【发布时间】:2019-10-30 03:03:04
【问题描述】:

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

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

【问题讨论】:

  • 您尝试过 Hanna 的解决方案吗?运气好吗?
  • 如果我们必须为发布管道做同样的事情怎么办?发布工件在发布中不起作用 - 猜测它仅配置用于构建。收到错误“##[error]Build Id is not valid:”

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


【解决方案1】:

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

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

Agent-1 执行 2 个步骤:

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

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

  1. DownloadPipelineArtifact - 将文件“livne.txt”(可以是任何模式)从“PROJECT_NAME”工件下载到当前代理的工作目录中。
  2. 简单的 bash 脚本确保工作目录中确实存在“livne.txt”。
pool:
  name: Agent-1
- task: CopyFiles@2
  displayName: 'Copy txt file'
  inputs:
    SourceFolder: '$(system.DefaultWorkingDirectory)'
    Contents: livne.txt
    TargetFolder: '$(build.ArtifactStagingDirectory)'

- task: PublishPipelineArtifact@1
  displayName: 'Publish Pipeline Artifact'
  inputs:
    targetPath: '$(build.ArtifactStagingDirectory)'
    artifact: 'PROJECT_NAME'

dependsOn: Job_1
pool:
  name: Self Hosted Ubuntu for Docker Multiplatform

steps:
- task: DownloadPipelineArtifact@2
  displayName: 'Download Pipeline Artifact'
  inputs:
    artifactName: 'PROJECT_NAME'
    itemPattern: livne.txt
    targetPath: '$(build.ArtifactStagingDirectory)'

- bash: |
   ls $(build.ArtifactStagingDirectory)
   cat $(build.ArtifactStagingDirectory)/livne.txt
  displayName: 'Bash Script'


【讨论】:

    【解决方案2】:

    我认为最好的方法通常是将文件发布为管道的人工制品,然后在第二个代理上再次下载这些人工制品。我之前在项目中使用过来自测试代理的测试结果来构建报告的项目。

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

    - 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
       ...
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-09
      • 1970-01-01
      • 1970-01-01
      • 2015-02-02
      • 1970-01-01
      • 1970-01-01
      • 2016-07-10
      相关资源
      最近更新 更多