为什么Jenkins Git插件在被SCM工具触发时使用旧的参数值
在推送到几个Git存储库之后,我们使用Jenkins构建服务器来构建我们的软件 由于我们最近进行了一些代码重组,我试图建立一个更复杂的构建管道,按照依赖关系的顺序构建我们的每个产品(每个产品都有一个Git存储库) 每个作业都会触发后续项目的构建作业的执行,并将为什么Jenkins Git插件在被SCM工具触发时使用旧的参数值,git,jenkins,jenkins-plugins,Git,Jenkins,Jenkins Plugins,在推送到几个Git存储库之后,我们使用Jenkins构建服务器来构建我们的软件 由于我们最近进行了一些代码重组,我试图建立一个更复杂的构建管道,按照依赖关系的顺序构建我们的每个产品(每个产品都有一个Git存储库) 每个作业都会触发后续项目的构建作业的执行,并将$GIT_分支传递给下一个作业 整个管道工作得很好,我在origin/master中开始构建第一个项目,项目2、3和4在master中获得构建。我从另一个分支开始,随后的项目切换到这个分支 我使用Git参数插件进行分支选择,并将其传递给Gi
$GIT_分支
传递给下一个作业
整个管道工作得很好,我在origin/master
中开始构建第一个项目,项目2、3和4在master中获得构建。我从另一个分支开始,随后的项目切换到这个分支
我使用Git参数插件进行分支选择,并将其传递给Git分支引用。默认值为空字符串
不幸的是,整个设置破坏了Gitblit的推钩。虽然Jenkins仍然报告触发了具体项目以检查SCM,但只有在提交位于为上次手动生成选择的分支中时,才会启动生成
通过查看Git轮询日志,我发现只有以前选择的分支被检查了更改
根据我对所有这些的基本理解,我猜SCM轮询触发器使用的是最后一个“已知”值,而不是参数的defaultValue。这是Jenkins插件中的错误还是我的配置中的错误。还有其他人完成了这样一条两用管道吗
编辑:我尝试将“**”作为默认值,结果相同。我找到了一个不太干净的解决方案。我添加了进一步的构建作业,这些作业除了坐在SCM上之外什么也不做,并且在之后触发真正的项目。它们将“构建”的GIT提交ID传递给下一个作业 以下是一个例子:
projectA_trigger
Freestyle Project
GIT Repository configured
Build triggert by SCM
Post-Build-Action Trigger parameterized build of projectA, submit built GIT commit ID
projectA
Maven-Project
GIT repository configured
Build NOT triggered by SCM
Post-Build-Action Trigger parameterized build of projectB...
我为以前的每个主项目创建了一个触发器项目,现在SCM在正确的分支中更改触发器构建并使用管道
但是工作有点麻烦,所以如果你有更好的解决方案,请让我知道。