繁体   English   中英

在Groovy和Jenkins管道构建中使用变量

[英]Using variables in Groovy and Jenkins pipeline build

我有一个需要获取提交ID(sha)的Jenkins管道构建,因此从我可以看到的唯一方法是通过执行以下操作

sh "git rev-parse --long HEAD > .git/commit-id"                        
GIT_COMMIT = readFile('.git/commit-id')

我需要在curl命令中使用GIT_COMMIT var,但是在使用它时遇到了麻烦

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

任何人都可以建议我如何实现我的要求

谢谢

UPDATE

我尝试了以下方法,但还是没有运气

sh '''GIT_COMMIT=$(git rev-parse HEAD)'''
sh '''curl "https://api.github.com/repos/myBuild/statuses/$GIT_COMMIT"'''

除非您需要将提交哈希分配给变量,否则您可以在一行中完成此操作而无需输出到文件:

sh "curl https://api.github.com/repos/myRepo/myBuild/statuses/\$(git rev-parse HEAD)"

请记住,仅对于Groovy中的多行字符串,必须使用三引号引起来http://docs.groovy-lang.org/latest/html/documentation/index.html#_triple_double_quoted_string

如果您不想写文件来保留提交哈希,则可以在sh上使用returnStdout: true并将其直接传递。

GIT_COMMIT = sh script: 'git rev-parse HEAD',  returnStdout: true
sh """curl "https://api.github.com/repos/myBuild/statuses/${GIT_COMMIT}""""

变量/表达式扩展(插值)仅在Groovy中适用于某些类型的字符串文字语法。 您使用的语法:

'''content${interpolation}etc'''

不是其中之一。 而是用三重双引号( """ )替换三重单引号( ''' ),如下所示:

sh """curl "https://api.github.com/repos/myRepo/myBuild/statuses/${GIT_COMMIT}"}""""

编辑:我也有点担心,该语句中可能仍然存在语法错误,尤其是末尾的多余}" 。以下内容可能更像您真正需要的内容:

sh """curl "https://api.github.com/repos/myRepo/myBuild/statuses/${GIT_COMMIT}""""

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM