【发布时间】:2017-04-07 15:26:10
【问题描述】:
我有一个需要获取提交 id (sha) 的 Jenkins 管道构建,所以据我所知,获得它的唯一方法是执行以下操作
sh "git rev-parse --long HEAD > .git/commit-id"
GIT_COMMIT = readFile('.git/commit-id')
我需要在 curl 命令中使用 GIT_COMMIT 变量,但使用时遇到问题
sh '''curl "https://api.github.com/repos/myRepo/myBuild/statuses/${GIT_COMMIT}"}"'''
sh '''curl "https://api.github.com/repos/myRepo/myBuild/statuses/GIT_COMMIT"}"'''
在没有通过 GIT_COMMIT 的那一刻,它始终是空白的,但是如果我回显它,我会返回值
echo GIT_COMMIT
--long
12345678910
谁能告诉我如何实现我的要求
谢谢
更新
我已经尝试了以下但仍然没有运气
sh '''GIT_COMMIT=$(git rev-parse HEAD)'''
sh '''curl "https://api.github.com/repos/myBuild/statuses/$GIT_COMMIT"'''
【问题讨论】:
-
旁注:
git rev-parse不明白--long;这就是为什么文件中有一行只读取--long(git rev-parse回显未知参数)。但是,依赖这个并不是一个好主意:如果git rev-parse的未来版本获得一个 确实 做某事的新--long标志会发生什么? -
是的想知道为什么它在文件中,所以现在只求助于 git rev-parse HEAD 似乎正在做这项工作....除非您有任何其他建议?谢谢
-
我对 Groovy 一无所知,但
git rev-parse HEAD是查找当前提交的原始提交 ID 的好方法。既然看起来这就是你所需要的,这似乎是合理的。