为什么Jenkins Git插件在被SCM工具触发时使用旧的参数值

为什么Jenkins Git插件在被SCM工具触发时使用旧的参数值,git,jenkins,jenkins-plugins,Git,Jenkins,Jenkins Plugins,在推送到几个Git存储库之后,我们使用Jenkins构建服务器来构建我们的软件 由于我们最近进行了一些代码重组,我试图建立一个更复杂的构建管道,按照依赖关系的顺序构建我们的每个产品(每个产品都有一个Git存储库) 每个作业都会触发后续项目的构建作业的执行,并将$GIT_分支传递给下一个作业 整个管道工作得很好,我在origin/master中开始构建第一个项目,项目2、3和4在master中获得构建。我从另一个分支开始,随后的项目切换到这个分支 我使用Git参数插件进行分支选择,并将其传递给Gi

在推送到几个Git存储库之后,我们使用Jenkins构建服务器来构建我们的软件

由于我们最近进行了一些代码重组,我试图建立一个更复杂的构建管道,按照依赖关系的顺序构建我们的每个产品(每个产品都有一个Git存储库)

每个作业都会触发后续项目的构建作业的执行,并将
$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在正确的分支中更改触发器构建并使用管道


但是工作有点麻烦,所以如果你有更好的解决方案,请让我知道。