如何在sh命令中引用Groovy变量

时间:2019-08-07 19:45:01

标签: jenkins groovy jenkins-pipeline jenkins-groovy

我如何在sh命令中引用groovy变量?

  

Script1.groovy:23:意外令牌:$ @第23行,第24列。        sh(script:zip -r $ {BUILD_TAG} .zip src / *。py)

命令

sh(script:zip -r ${BUILD_TAG}.zip src/*.py)

1 个答案:

答案 0 :(得分:3)

您需要双引号(")来插入Groovy中字符串中的变量。然后,更新后的步骤方法sh的Map值将为"zip -r ${BUILD_TAG}.zip src/*.py",作为参数传递,并且将完全显示为:

sh(script: "zip -r ${BUILD_TAG}.zip src/*.py")

但是,通过安装Pipeline Utility Steps Plugin,您可以调用native bindings step method来压缩文件:

zip(zipFile: "${BUILD_TAG}.zip",
    dir: 'src',
    glob: '*.py')

sh步骤方法更兼容和稳定。例如,如果您的管道是在未将zip可执行文件命名为zip,不在路径中直接,不接受*遍历或不接受-r的代理上执行的当有效标志(或者可能是-r触发不良行为)时,您的sh的step方法将不会成功。但是,无论本地环境,平台如何,用于zip的本机绑定步骤方法都可以确保实现所需的行为。