29

我正在尝试在变量中获取 git 短哈希。我试图设置 GIT_COMMIT_SHORT 变量来运行 'git rev-parse --short HEAD' 但它没有用。我需要将此变量传递给 ant 构建脚本,以便包名称包含此短哈希。

我在 Windows 2008 服务器上运行 Jenkins。

谢谢

4

11 回答 11

35

实现您想要的结果的最简单方法可能是使用 GIT_REVISION 令牌 makro,如下所示:

${GIT_REVISION,length=6}

查看https://wiki.jenkins-ci.org/display/JENKINS/Token+Macro+Plugin了解更多详情。

希望这会有所帮助,

于 2014-06-07T15:11:00.613 回答
12

这在使用 git 插件的 jenkins 管道中对我有用:

SHORT_COMMIT = "${GIT_COMMIT[0..7]}"
于 2019-03-28T09:45:39.377 回答
10

我没有看到这里列出的这个答案,所以我想添加它:

environment {
  GIT_HASH = GIT_COMMIT.take(7)
}

来源:https ://issues.jenkins-ci.org/browse/JENKINS-44449?focusedCommentId=361307&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-361307

于 2019-12-30T21:46:18.087 回答
4

蓝海管道的另一种可能选择:

pipeline { 
    ...
    environment {
        GIT_COMMIT_SHORT = sh(
                script: "printf \$(git rev-parse --short ${GIT_COMMIT})",
                returnStdout: true
        )
    }
    ...
于 2019-01-21T09:50:10.430 回答
2

在带有 git 插件的 jenkins 2.73 上,此占位符模板有效

${GIT_REVISION:0:7}

我将它与 Delivery pipeline 插件一起使用来设置任务名称。

例如,构建 GIT rev。${GIT_REVISION:0:7}

于 2018-01-05T17:38:16.360 回答
2

不确定它是否适用,但我正在寻找一种在詹金斯管道中执行此操作的方法。我最终使用了这个${GIT_REVISION[0..7]}

于 2018-10-19T14:04:03.470 回答
1

我建议您使用EnvInject插件从您创建的包含哈希的属性文件中加载参数。

将命令的结果回显到工作工作区中git的形成文件,并使用我提到的插件加载它。key=value

我用它来满足这样的需求,它非常简单。

我希望这有帮助。

编辑: 如何在 Windows 中编写属性文件:

@for /f "delims=" %l in ('git command') do @echo hash=%l >> hash.properties

hash.properties然后,您可以使用插件加载。

于 2013-06-05T15:24:57.787 回答
1

无需任何其他插件,您就可以在 Jenkins 脚本中使用以下命令进行提交(“执行 Windows 批处理命令”构建步骤):

for /f %%i in ('git rev-parse HEAD') do set GITHASH=%%i

在命令行中,您应该使用 single%而不是%%

for /f %%i in ('git rev-parse HEAD') do set GITHASH=%%i
于 2017-06-27T17:37:32.960 回答
0

只有这个对我有用

GIT_SHA_SHORT=`git rev-parse --short=8 ${GIT_COMMIT}`
于 2019-11-20T13:01:30.170 回答
0
  return sh(
            script: "printf \$(git rev-parse --short ${env.GIT_COMMIT})",
            returnStdout: true
        ).trim()
        }

        pipeline {
            agent any
            environment {
                SHORT_COMMIT = git_short_commit()

            }
            stages {
                stage('Build') {
                    steps {
                        echo "${SHORT_COMMIT}"
                   }
            }
        }
    }
于 2019-12-04T08:31:58.593 回答
0

带有脚本管道的詹金斯:

shortCommit = sh(returnStdout: true, script: "git log -n 1 --pretty=format:'%h'").trim()
于 2021-10-28T12:58:03.963 回答