3

我正在尝试在 Jenkins 中设置一系列作业,以使用 Promoting 插件构建和部署应用程序。我们目前正在使用 Git 作为我们的 SCM,并且正在使用 Git 插件来帮助构建。这个特定的构建是一个 Maven 构建。我试图实施的步骤如下:

  • 编译、运行单元测试和创建工件的构建作业。该作业在代码提交时触发。
  • 构建作业有一个手动提升点来将此代码部署到我们的测试环境中。提升点有一个批准参数来传递要用于部署的环境。
  • 提升点触发一个作业,我们称之为集成作业,它只触发几个部署作业,其中一些部署作业需要从 Git 中获取用于构建工件的相同代码。由于代码可能从构建这个特定版本的那一刻到我们想要进行部署的那一刻发生了变化,我试图使用 GIT_COMMIT 环境变量来传播用于构建工件的提交号。
  • 在集成作业中,在触发特定部署作业的构建步骤中,我根本没有添加任何参数,不是 Git,也不是“当前构建”参数。

问题是部署作业永远不会获得 GIT_COMMIT 值。因此,在尝试从 Git 检索代码时总是失败。

  • 在构建作业中,在升级过程中,除了选择环境的 Approval 参数外,在触发集成作业的操作中,我添加了“当前构建参数”和“已构建的传递 Git 提交”参数。
  • 在构建作业中,运行后我可以看到作业的环境变量,并且 GIT_COMMIT 变量具有正确的提交值。
  • 在集成作业中,我在环境变量列表中看不到 GIT_COMMIT。
  • 在部署作业中,我在环境变量列表中看不到 GIT_COMMIT。

到目前为止,我已经尝试过:

  • 将“当前构建参数”和“已构建的传递 Git 提交”添加到部署作业的触发器
  • 在构建作业中添加另一个变量并将 $GIT_COMMIT 作为值分配给它
  • 添加另一个变量作为促销的 Approval 参数并为其赋予 $GIT_COMMIT 值
  • 在集成作业的触发器中添加另一个变量并为其赋予 $GIT_COMMIT 值
  • 向部署作业添加参数并将其默认为 $GIT_COMMIT,但使用触发器中的值覆盖所述参数。

到目前为止,没有运气。

我必须补充一点,所有其他参数和变量都在正确传播,部署环境之一,我有一个用于版本控制,BUILD_NUMBER 等。除了 GIT_COMMIT 之外,一切都传播得很好。

我对另一个应用程序也有类似的设置,这是一个 Grails 应用程序,并且 GIT_COMMIT 在那里传播得非常好。

这些是我正在使用的版本:

  • 詹金斯 1.632
  • Git 插件 2.4.0
  • 升级版本(简单)1.9
  • 提升构建插件 2.24
  • Java Open JDK 1.7.0_75

任何想法都非常受欢迎。谢谢你。

4

1 回答 1

4

I was able to get a workaround, but I didn't find a solution for the original issue. The original issue is the GIT_COMMIT is not being propagated to the deployment job and I was unable to make that work. Instead, to have my process working I did the following:

On the build job, in the promotion process, when triggering the integration job I added "Predefined parameters" with the value: BUILD_COMMIT=${GIT_COMMIT}.

On the integration job, when triggering the deployment job, I am adding a "Current build parameters" parameter.

On the deployment job, in the git configuration, in the "Branches to build" field I am using ${BUILD_COMMIT}.

This is triggering all correctly and the deployment job is getting the proper commit number when deploying.

I hope this helps.

于 2015-12-08T00:41:17.903 回答