我正在搜索,但找不到适当的信息,说明如何解决将工件复制到并行执行多次的作业中的问题。
我定义了脚本管道,它分阶段执行预定义的作业,有些是并行运行的,如下所示:
我正在使用CopyArtifact插件复制所创建的工件,但似乎:
例如核心阶段的coreBuildJob:
`copyArtifacts(projectName: <job to copy from>, flatten: true, target: '../' + <job_for_execution>)`
这确实帮助我解决了通过这些作业复制所需工件的问题,但在本例中,我最后遇到了另一个问题:
当我希望用不同的参数多次执行这个脚本化的管道作业时。
问题是,当第二次执行管道,并且在其中一个阶段中运行的作业第二次运行时,它会在本地机器上创建以下路径:
`/jenkins/workspace/test_jobs/<job_for_execution>@2`
这意味着我的脚本中的内容是不正确的,因为它将文件复制到:
`/jenkins/workspace/test_jobs/<job_for_execution>`
它不会将工件复制到正确的位置,并且无法从执行的作业中访问它们。
我想让copyArtifacts部件在“build作业”命令中执行(就像您可以在Jenkins中定义的那样,将BUILD_ID作为变量来复制类似的工件),但是我找不到任何细节来实现与脚本相同的行为。
如何解决这个问题呢?
发布于 2020-11-23 13:50:54
你可以使用藏物/解藏物。
运行构建之后,您可以存储:
stash name:'data', includes: './*'
其中数据是名称(标识符),可以是目录、子目录或单个文件。
然后,在您想要生成的输出的阶段中,使用unstash:
unstash 'data'
取消存储后,文件也将位于相应的文件夹中,您可以运行其他步骤。
https://stackoverflow.com/questions/64967672
复制