如何在Jenkins上构建Git上的特定提交?

26
我想在Jenkins上从特定的代码提交版本构建我的项目。我已经指定了要构建的分支,但它正在从最新的提交版本构建。我想要从任何特定的版本/提交中进行构建。我尝试将GIT_COMMIT值作为参数传递,但它仅选择了最新的提交版本。我还尝试使用类似于https://svn-url@$REVISION的svn类型方法,其中REVISION是在构建中传递的参数。但对于git而言,它无法识别ssh://git-url@REVISION

将提交的sha1传递给预定义参数,并在“Build-Execute shell”中运行git checkout <commit>,然后再开始构建过程。需要进行一些额外的工作,以确保检出顺利进行。 - ElpieKay
我可以将提交的sha1参数命名为任何名称吗?然后在git checkout <参数名称>中使用该值。 - virendrao
勾选“此项目已参数化”复选框,然后您可以添加预定义的参数。例如,添加一个“字符串参数”,其名称为“build_revision”。 [ -z ${build_revision} ] || git checkout "${build_revision}"。这些预定义的参数将被导出为环境变量。 - ElpieKay
好的,让我试一下。 - virendrao
之前的 HEAD 位置是 e029d5f... Git 的自述文件已更新 HEAD 现在位于 e5cc423... Git 推送已更新自述文件这样对吗?我的 HEAD 提交是 e029d5f,最后一次修订是 e5cc423,我将参数值传递为 e5cc423 吗? - virendrao
2个回答

25
  1. Jenkins Git插件应该是
  2. 复制您的提交哈希并将其粘贴到“分支规范符”中

enter image description here 然后点击“立即构建”


@RMati,您能否详细描述一下您遇到的错误类型或在执行所有这些步骤时Jenkins表现出的行为?我经常这样做,而且它总是有效的。 - Gleb Egunov
1
实际上,我不得不放整个git提交(完整的哈希值),然后才能正常工作。 例如:9f88e6f6ec09569f6bd40ae76f25d292b512fb85 而不是短的提交ID。谢谢。 - RMati
8
请取消"轻量级检出"复选框的选择。否则,提交检出对我无效! - Codev
@Codev 谢谢你的评论!我在这个问题上一直苦苦挣扎,但在我移除了轻量级检出后,它就像魔法般地解决了问题。 - undefined

1
我认为,与其通过修改构建配置文件指向特定的提交哈希值来实现,不如创建一个新分支,将其指向你想要构建的提交。如果你已经正确配置了多分支管道构建,Jenkins 应该会自动发现和构建你的提交/分支。
或者,你也可以使用标签代替分支。但在这种情况下,你需要将“发现标签”行为添加到你的分支源配置中。

Branch Source Behaviours


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接