如何在windows 2008上运行的Jenkins中将git short hash放入变量
我试图在一个变量中获取git短散列。我试图将GIT_COMMIT_SHORT变量设置为运行'GIT rev parse--SHORT HEAD',但没有成功。 我需要将此变量传递给ant构建脚本,以便包名包含此短散列 我正在windows 2008服务器上运行Jenkins 谢谢我建议您使用插件从您创建的包含散列的属性文件加载参数 将如何在windows 2008上运行的Jenkins中将git short hash放入变量,git,jenkins,Git,Jenkins,我试图在一个变量中获取git短散列。我试图将GIT_COMMIT_SHORT变量设置为运行'GIT rev parse--SHORT HEAD',但没有成功。 我需要将此变量传递给ant构建脚本,以便包名包含此短散列 我正在windows 2008服务器上运行Jenkins 谢谢我建议您使用插件从您创建的包含散列的属性文件加载参数 将git命令的结果回显到作业工作区中已形成的key=value文件中,并使用我提到的插件加载它 我用它来满足这些需求,它非常简单 我希望这有帮助 编辑: 如何在win
git
命令的结果回显到作业工作区中已形成的key=value
文件中,并使用我提到的插件加载它
我用它来满足这些需求,它非常简单
我希望这有帮助
编辑:
如何在windows中写入属性文件:
@for/f“delims=“%l in('git命令')do@echo hash=%l>>hash.properties
然后,您可以使用插件加载hash.properties。实现所需结果的最简单方法可能是使用GIT_修订标记makro,如下所示:
${GIT_REVISION,length=6}
请查看以了解更多详细信息
希望这有帮助,Jan在没有任何附加插件的情况下,您可以使用Jenkins脚本中的以下命令(“执行Windows批处理命令”构建步骤)获得提交: 在命令行中,您应该使用单个
%
而不是%
:
for /f %%i in ('git rev-parse HEAD') do set GITHASH=%%i
在使用git插件的jenkins 2.73上,此占位符模板有效
${GIT_REVISION:0:7}
我将它与传递管道插件一起使用来设置任务名称
例如,建筑GIT版本<代码>${GIT_REVISION:0:7}不确定它是否适用,但我正在寻找一种在jenkins管道中实现这一点的方法。我最终使用了这个
${GIT_REVISION[0..7]}
蓝色海洋管道的另一个可能选项:
pipeline {
...
environment {
GIT_COMMIT_SHORT = sh(
script: "printf \$(git rev-parse --short ${GIT_COMMIT})",
returnStdout: true
)
}
...
这在jenkins管道中使用git插件对我有效:
SHORT_COMMIT = "${GIT_COMMIT[0..7]}"
只有这个对我有用
GIT_SHA_SHORT=`GIT rev parse--SHORT=8${GIT_COMMIT}`
我没有看到这里列出的答案,所以我想添加它:
environment {
GIT_HASH = GIT_COMMIT.take(7)
}
来源:我在jenkins主配置中设置了环境变量。感谢Eldad的快速回复。据我所知,您建议创建一个具有短哈希的属性文件,并通过EnvInject插件上载,以便在构建期间在环境中进行设置,如果是这种情况,如何在windows上动态创建此文件?在git fetch运行之前,EnvInject设置变量,因此无法设置正确的短哈希。您可以使用Windows批处理命令将此作为生成步骤运行。关于执行时间,您还可以添加一个注入环境变量build step,该步骤在SCM命令之后运行。它在('git.exe rev parse--short HEAD')DO set COMVER=%i 1>${WORKSPACE}\daddress\buildver.properties>set COMVER=8e18a5c 1>${WORKSPACE}中为/F%i提供此错误>\daddress\buildver.properties系统找不到指定的路径1。将此命令放入Jenkins(或批处理文件)时,变量需要双%符号。2.在windows中,将工作区称为%workspace%。这只适用于使用TokenMacro的字段,这排除了AFAIK的生成步骤。@MattiasBengtsson您是对的,但这取决于生成步骤。它不适用于shell脚本步骤,但应该适用于maven脚本步骤,如果我没记错的话,这在声明性管道模式下非常有效:管道{environment{SHORT_COMMIT=“${GIT_COMMIT[0..7]}}这可能是非唯一的。git rev parse生成一个长度刚好足够唯一的哈希。谢谢。这可以在不安装任何插件的情况下工作。
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}"
}
}
}
}
environment {
GIT_HASH = GIT_COMMIT.take(7)
}