我如何在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)
答案 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的本机绑定步骤方法都可以确保实现所需的行为。