0

Jenkins 有关于特定构建中包含的提交的信息。我知道这一点是因为 Jenkins 显示了这一点(请参见下面的屏幕截图)。

如何在 CI 执行期间提取有关构建中包含的提交的信息?

需要此信息来检查哪些文件夹已修改文件,从而确定 Jenkins 应执行哪些操作。

谢谢!

PS 为了在 PR 的 CI 作业中实现这一点,我使用 git 命令:

git rev-parse github/master

它返回在当前分支分支之前在 master 中所做的最后一次提交(为了使其工作,我添加了 'github' 远程)。显然,它不能在“主”分支本身中工作。所以我在想,也许詹金斯有一些我可以使用的内置信息?或者一些 Jenkins 插件可以提供帮助?

在此处输入图像描述

4

1 回答 1

0

显然,有一堆链接,虽然我找不到任何链接,直到我找到了谷歌的关键字。

首先,有一个 DevOps 版本的 StackOverflow: https ://devops.stackexchange.com/ 它可能有更多的人可以帮助解决与 Jenkins 相关的问题

第二,想法是使用詹金斯变量 currentBuild 并进一步迭代:

  • currentBuild.previousBuild
  • 构建.changeSets
  • 构建中的项目
  • 提交哈希在 item.commitId 中

帮助我找出解决方案的链接:

重要笔记:

  1. 由于 Groovy 在 Jenkins 中的工作方式,您需要将此逻辑放入单独的函数中并为其添加“@NonCPS”属性
  2. 里面的所有变量都需要以'def'作为前缀(即使我的漂亮者告诉我这不是必需的),没有这个你将有“java.io.NotSerializableException:hudson.plugins.git.GitChangeSetList”错误。

希望这也会对某人有所帮助!

于 2021-10-04T04:05:16.530 回答