使用Git插件的Jenkins未将GIT_COMMIT传递到推广构建

3
我正在尝试使用Promoting插件在Jenkins中设置一系列的任务来构建和部署一个应用程序。我们目前使用Git作为我们的SCM,并使用Git插件来帮助构建。这个构建是一个Maven构建。我试图实现的步骤如下:
- 一个构建任务,编译,运行单元测试并创建构件。此任务在代码提交时触发。 - 构建任务具有手动推广点,以将此代码部署到我们的测试环境中。推广点具有批准参数,以传递用于部署的环境。 - 推广点触发一个任务,让我们称之为集成任务,该任务仅触发多个部署任务,其中一些部署任务需要从Git获取用于构建构件的相同代码。由于代码可能已经从构建此特定版本的时刻到我们想要进行部署的时刻发生了变化,因此我正在尝试使用GIT_COMMIT环境变量来传播用于构建构件的提交号码。 - 在集成任务中,在触发特定部署任务的构建步骤中,我根本没有添加任何参数,不是Git,也不是“当前构建”参数。
问题是部署任务永远不会获得GIT_COMMIT值。因此,在尝试从Git检索代码时始终失败。
在构建任务中,除了批准参数选择环境之外,在触发集成任务的操作中,我还添加了“当前构建参数”和“通过Git Commit传递构建”的参数。
在构建任务运行后,我可以看到作业的环境变量和GIT_COMMIT变量具有正确的提交值。
在集成任务中,我看不到环境变量列表中的GIT_COMMIT。
在部署任务中,我看不到环境变量列表中的GIT_COMMIT。
到目前为止,我已经尝试过:
- 在触发部署任务时添加“当前构建参数”和“通过Git Commit传递构建”。 - 在构建任务中添加另一个变量,并将其分配为$GIT_COMMIT作为值。 - 添加另一个变量作为批准参数进行推广,并赋予$GIT_COMMIT值。 - 在触发集成任务中添加另一个变量并赋予$GIT_COMMIT值。 - 向部署任务添加一个参数并将其默认设置为$GIT_COMMIT,但使用来自触发器的值覆盖该参数。
到目前为止,没有成功。
我必须补充说明,所有其他参数和变量都正确传播,部署环境,版本控制,BUILD_NUMBER等都传播良好,除了GIT_COMMIT之外。
我还有另一个应用程序的类似设置,这是一个Grails应用程序,在那里GIT_COMMIT完全传播良好。
这些是我正在使用的版本:
  • Jenkins 1.632
  • Git 插件 2.4.0
  • 晋级构建(简单版) 1.9
  • 晋级构建插件 2.24
  • Java Open JDK 1.7.0_75

欢迎提出任何想法。谢谢。

1个回答

4
我找到了一种解决方法,但是没有找到原问题的解决方案。 原问题是GIT_COMMIT未被传播到部署任务中,我无法使其工作。 相反,在构建作业中,在触发集成作业时,我添加了“预定义参数”,并设置值为:BUILD_COMMIT = $ {GIT_COMMIT}。
在集成作业中,当触发部署作业时,我添加了一个“当前构建参数”参数。
在部署作业中,在git配置中,在“要构建的分支”字段中使用$ {BUILD_COMMIT}。
这样可以正确触发所有操作,并且在部署时获得正确的提交编号。希望这有所帮助。

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