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