首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jenkins试图从我触发的构建中获取copyArtifacts

jenkins试图从我触发的构建中获取copyArtifacts
EN

Stack Overflow用户
提问于 2020-08-31 15:13:03
回答 2查看 843关注 0票数 4

我安装了copyArtifacts插件并创建了两个自由式作业:experiment-mainexperiment-1

experiment-1只是创建了一个名为artifact.txt的文件,其中包含了build #,并将其存档。

experiment-main触发experiment-1,然后尝试复制工件,如下所示:

但结果是:

代码语言:javascript
复制
Running as SYSTEM
Building on master in workspace /var/lib/jenkins/workspace/experiment-main
Waiting for the completion of experiment-1
experiment-1 #4 started.
experiment-1 #4 completed. Result was SUCCESS
Build step 'Trigger/call builds on other projects' changed build result to SUCCESS
ERROR: Unable to find a build for artifact copy from: experiment-1
Finished: FAILURE

这不是我所期望的(或者至少是我所希望的)

我希望它能找到当前构建的下游的experiment-1构建。

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-05 09:33:41

是的,这确实是出乎意料的行为。它不能工作的原因隐藏在"Upstream Project Name“输入字段的帮助文本中:

下游构建是使用文件指纹找到的。也就是说,从构建中触发的构建并不总是被认为是下游构建,但是您需要对构建中使用的文件进行指纹识别,以便让Jenkins跟踪它们

因此,复制-伪插件依靠指纹数据来确定工作的祖先。因此,您不能使用使用当前作业作为父任务的“下游构建.”特性:指纹记录在post-build步骤中,因此正在进行的example-master生成在寻找匹配的experiment-1生成时没有任何与其相关联的指纹。

可以在构建运行时(例如,通过Groovy)修改指纹信息,但可能最好是完全避免复制-伪插件,并立即在Groovy中实现整个过程。

您最好的选择可能是通过“最后一次成功的构建”引用example-1,并确保这是您以前触发的构建(通常这是正确的,但取决于您的设置可能存在竞争条件)。

票数 1
EN

Stack Overflow用户

发布于 2020-09-15 09:30:30

我发现有一些变量,我可以使用触发构建的数量。为了计算出变量,我只是用env打印了所有环境变量,然后在列表中找到了正确的变量。

然后,我将复制工件插件配置为使用该版本号。

我无法做到@alex建议的那样,只得到子作业的最后一个构建,因为我可能一次有多个工作在使用子作业,但是如果您没有这个问题,这可能对您有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63673451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档