gpt4 book ai didi

jenkins - 使用 JGit 在 Jenkins 管道中获取 git commit SHA

转载 作者:行者123 更新时间:2023-12-02 01:06:34 27 4
gpt4 key购买 nike

我有一个带有 Github 组织插件的 Jenkins,它可以扫描我的组织并构建组织内具有 Jenkinsfile 的所有存储库的所有分支/PR。

效果很好,但我想为每个构建检索提交 SHA,以便使用分支名称和提交 SHA 标记 Docker 镜像。

通过 env.BRANCH_NAME 获取分支名称效果很好,但是我找不到任何方法来获取提交 SHA。

问题是我们正在使用 JGit,所以我不能使用 git log 来检索它。

我尝试使用 sh 'printenv' 查看 ENV 中包含的内容,但那里没有任何用处。

我还尝试了以下方法:

def checkoutResults = checkout scm
echo 'checkout results: ' + checkoutResults

但这会产生以下结果:

checkout results: [:]

即使我无法从我的管道中获取修订版,但 Jenkins 可以正常使用,正如我在日志中看到的那样:

...
Obtained Jenkinsfile from 98062e5f651ca698f4303c3bb8d20665ce491294
...
Checking out Revision 98062e5f651ca698f4303c3bb8d20665ce491294 (docker)

我正在运行以下版本:

  • Jenkins 2.73.3
  • Git插件插件3.3.0
  • 流水线:SCM Step 插件 2.6

在这种特殊情况下,如果您能帮助我们检索提交的 SHA/修订版,我们将不胜感激。

最佳答案

git 插件不包含 the fix直到 3.3.2 发布。您至少需要更新到 git 插件 3.3.2。

截至 2017 年 11 月 23 日,当前的 git 插件版本是 3.6.4。它包括针对多分支管道的重要添加和更改。

还有一个known bug在具有 regression test 的 NAME 和 EMAIL 值的报告中这证实了该错误会影响所有实现(git 和 jgit)。如果需要,您可以将该回归测试用作使用这些值的示例。

如果您无法从 git 插件 3.3.0 更新到 3.3.2,您可以使用管道脚本中的 JGit 类来执行与命令行 git 在另一个答案中提供的相同类型的查询这个问题。我从未做过,但我相信这是可能的。

关于jenkins - 使用 JGit 在 Jenkins 管道中获取 git commit SHA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47282926/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com