使用Jenkins管道在节点之间复制构建工件

使用Jenkins管道在节点之间复制构建工件,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我正在尝试将现有的Jenkins构建作业移动到单个Jenkins 2管道中,并想知道是否有可能在构建中将文件从一个节点复制到另一个节点。我的想法是: Node A (Windows) Checkout scm Execute ant build Archive artifact (or whatever required action) Node B (Unix) Checkout scm Copy build artifact from node A --> is t

我正在尝试将现有的Jenkins构建作业移动到单个Jenkins 2管道中,并想知道是否有可能在构建中将文件从一个节点复制到另一个节点。我的想法是:

Node A (Windows)
  Checkout scm
  Execute ant build
  Archive artifact (or whatever required action)
Node B (Unix)
  Checkout scm
  Copy build artifact from node A --> is this possible ?
  Execute ant build
  Then followed by tests...

我曾尝试使用复制工件步骤,但它似乎没有正确工作,所以我想知道是否有办法在管道中间复制文件,或者如果我必须继续使用当前的构建体系结构(使用,但完全独立的构建作业)。

是的,这是可以使用的/步骤。 有关这方面的教程也可以在中找到(重点介绍并行执行):


欢迎来到stackoverflow。您可以在您的帖子中包含“似乎工作不正常”的代码…;-)我使用
步骤([$class:'ArtifactArchiver',artifacts:'dist/*.zip'])
在第一个节点上归档工件,并使用
步骤([$class:'CopyArtifact',filter:'dist/*.zip',fingerprintArtifacts:true,projectName:'PCT')
但是工件似乎只有在构建结束后才可用。请随意提供一个额外的答案。仍在搜索:)可能是这样吗?我实际上想知道它是否可以用于大文件。Jenkins docs说它应该用于小于5 MB的文件。你用过它用于较大的文件吗?它会工作吗?它肯定会工作的对于更大的文件,我们使用了一段时间的常规(un)存储,将超过400MB的工件复制到多达8个代理。由于这使得多个并行构建变得很困难,因为它使Jenkins master非常无响应,我们重构了我们的管道,通过S3复制文件,并将Jenkins master排除在循环之外(或者如果你没有那么多并行构建),我真的建议你从简单开始。继续使用(un)stash实现你的管道。如果它成为一个难点,上传到一些外部数据存储。没有什么特别的,只是管道AWS步骤插件提供的
s3Upload
步骤
parallel (
    "stream 1" : { 
                     node { 
                           unstash "binary"                           
                           sh "sleep 20s" 
                           sh "echo hstream1"
                       } 
                   },
    "stream 2" : { 
                     node { 
                           unstash "binary"
                           sh "echo hello2"
                           sh "hashtag fail"                                                       
                       } 
                   }
          )