我有两个工作(A和B),我希望B由A触发,A成功构建A后使用的Git提交。
构建触发器插件支持使用上游作业中使用的git commit触发下游作业。
我的问题是下游作业如何使用传入的提交签出。我没有找到作业A传递的变量,以及如何使用传入提交值通过Jenkins的Git插件检出B中的代码?
答案 0 :(得分:14)
Jenkins Git插件是一款智能工具。无需特定配置。在上游作业中,下游作业使用上游作业使用的Git提交,下游将自动检出上游传入的提交。
答案 1 :(得分:3)
我有同样的问题。核心问题似乎是Jenkins默认情况下不会将构建时变量从上游作业转移到下游作业。因此,除非您在源代码管理部分的下游作业中实际添加了存储库定义,否则GIT_COMMIT变量将为空。从我所知道的,它确实从repo获取上游git哈希,所以它不仅仅是最新的。
这绝对是令人沮丧的一点,让我花了太长时间才解决。
答案 2 :(得分:0)
我遇到了同样的问题。您需要确保在下游项目的“作业通知”选项卡中,选中“此项目已参数化”选项。如果未选择此选项,则似乎下游作业不希望来自上游作业的参数,因此它会忽略这些参数。
让我们假设上游作业是A,下游作业是B
上游作业A:
构建-> 触发/调用其他项目的构建-> 要构建的项目-> 指定下游职位(ieB)
然后 添加参数-> 预定义参数(选择适合您的参数) 在“ 参数”中,具体指定要传递给下游作业B的参数。例如,
GIT_COMMIT = $ GIT_COMMIT
GERRIT_BRANCH = $ GERRIT_BRANCH
请注意,您必须每行放置一个 参数名称/值
下游项目B:
工作通知-> 该项目已参数化-> 添加参数-> 字符串参数
插入参数的名称和默认值。例如,对于上述两个参数,您可以将名称和默认值对插入为
名称:GIT_COMMIT
默认值:$ GIT_COMMIT
名称:GERRIT_BRANCH
默认值:$ GERRIT_BRANCH
此配置对我来说非常理想。
答案 3 :(得分:0)
现在看来(参数化触发器2.37,Jenkins 2.204)“触发参数化构建”具有“构建的传递式Git提交”选项。即使在下游作业中没有任何特殊配置也可以工作。 Similar question