以下是我在管道中的一大块代码:
def doBuild(folder, script, scriptArguments = '') {
bat '''cd folder
call script scriptArgument'''
}
所以基本上,它是一个Windows命令说:移动到这个目录,然后调用这个脚本。
当然,在执行期间,该命令将作为&#cd; cd文件夹'执行。并且会失败。
如何确定'文件夹'被参数?
中传递的值替换编辑:
根据Vitalii的建议,我尝试了以下代码:
/* Environment Properties */
repository_name = 'toto'
extra_repository_branch = 'master'
branch_to_build = "${env.BRANCH_NAME}"
version = "${branch_to_build}_v1.5.4.${env.BUILD_NUMBER}"
/* Methods definitions properties */
def doTag() {
dir(repository_name) {
String tagCommand = """git tag -m "Release tag ${env.BUILD_URL}" ${version}"""
String pushCommand = "git push --tags origin ${branch_to_build}"
bat '''
call $tagCommand
call $pushCommand'''
}
}
这是输出:
C:\ Jenkins \ toto>调用$ tagCommand' $ tagCommand'不被承认 作为内部或外部命令,可操作程序或批处理文件。
C:\ Jenkins \ toto>调用$ pushCommand' $ pushCommand'不是 被认可为内部或外部命令,可操作程序或 批处理文件。
非常感谢你的时间
答案 0 :(得分:0)
您可以使用string interpolation
bat """cd $folder
call $script $scriptArgument"""
答案 1 :(得分:0)
所以我不认为首先是这种情况,但它确实在What's the difference of strings within single or double quotes in groovy?
中得到了答案使用单引号,文本被视为升级。使用双重代码,它将正确解释$ tagCommand。工作版本是:
/* Methods definitions properties */
def doTag() {
dir(repository_name) {
String tagCommand = """git tag -m "Release tag ${env.BUILD_URL}" ${version}"""
String pushCommand = "git push --tags origin ${branch_to_build}"
bat """call $tagCommand
call $pushCommand"""
}
}