最佳答案
我管道中的一个步骤上传了一个。一个人工服务器的 tar。当传入 env.BUILD _ NUMBER 时,我得到了一个糟糕的替换错误,但是当数字被硬编码时,同样的命令可以工作。该脚本是通过 jenkins 以 Groovy 编写的,并在 jenkins 工作区中运行。
sh 'curl -v --user user:password --data-binary ${buildDir}package${env.BUILD_NUMBER}.tar -X PUT "http://artifactory.mydomain.com/artifactory/release-packages/package${env.BUILD_NUMBER}.tar"'
返回错误:
[Pipeline] sh
[Package_Deploy_Pipeline] Running shell script
/var/lib/jenkins/workspace/Package_Deploy_Pipeline@tmp/durable-4c8b7958/script.sh: 2:
/var/lib/jenkins/workspace/Package_Deploy_Pipeline@tmp/durable-4c8b7958/script.sh: Bad substitution
[Pipeline] } //node
[Pipeline] Allocate node : End
[Pipeline] End of Pipeline
ERROR: script returned exit code 2
如果硬代码在一个构建编号和交换出 ${env.BUILD_NUMBER}
我得到没有错误,代码运行成功。
sh 'curl -v --user user:password --data-binary ${buildDir}package113.tar -X PUT "http://artifactory.mydomain.com/artifactory/release-packages/package113.tar"'
我在同一个脚本中的其他 sh 命令中使用 ${ env.BUILD _ NUMBER } ,在其他任何地方都没有问题。