使用 Jenkins 参数通过批处理命令调用 python 文件
Using Jenkins parameter to call python file via batch command
我正在为 Jenkins 管道而苦苦挣扎,希望你能帮助我。
我需要一个批处理命令中的 Jenkins 参数 (Cycle) 来调用 python 脚本。
environment {
Variant = "${params.Var}"
Cycle = "2021"
}
stages {
stage('Check for most recent project') {
steps {
script{
if ("${Variant}" == "green") {
help = bat(script: 'python.exe "somescript.py" --sourcepath \"\Buildenv\green\${Cycle}\"', returnStdout: true)
}
else {
help = bat(script: 'python.exe "somescript.py" --sourcepath \"\Buildenv\red\${Cycle}\"', returnStdout: true)
}
ProjectToBuild = help.split('\n')[-1]
if ("${Variant}" == "green") {
bat script: "copy \"\Buildenv\green\${Cycle}\${ProjectToBuild}.7z\" \"D:\Workspace\""
}
else {
bat script: "copy \"\Buildenv\red\${Cycle}\${ProjectToBuild}.7z\" \"D:\Workspace\""
}
}
}
}
}
在使用参数的纯批处理命令(底线)中工作得很好。但是,如果我正在调用 python 脚本并想传递一个参数,这是行不通的。
不幸的是,我没有找到任何 post 帮助我解决这个问题。
已经感谢您的帮助!
您的问题与 python 执行无关,它与以下事实有关 groovy 单引号 (' '
) 仅不支持 String Interpolation双引号 (" "
) 做,因此你的参数没有得到评估。
所以你有两个选择:
- 更改您的
bat
脚本,使其使用双引号:
help = bat(script: "python.exe \"somescript.py\" --sourcepath \"\Buildenv\green\${Cycle}\"", returnStdout: true)
- 因为
Cycle
被设置为环境参数,它被传递到命令行环境,您可以将它用作 Windows 环境变量 % %
:
help = bat(script: 'python.exe "somescript.py" --sourcepath "\Buildenv\green\%Cycle%"', returnStdout: true)
我正在为 Jenkins 管道而苦苦挣扎,希望你能帮助我。 我需要一个批处理命令中的 Jenkins 参数 (Cycle) 来调用 python 脚本。
environment {
Variant = "${params.Var}"
Cycle = "2021"
}
stages {
stage('Check for most recent project') {
steps {
script{
if ("${Variant}" == "green") {
help = bat(script: 'python.exe "somescript.py" --sourcepath \"\Buildenv\green\${Cycle}\"', returnStdout: true)
}
else {
help = bat(script: 'python.exe "somescript.py" --sourcepath \"\Buildenv\red\${Cycle}\"', returnStdout: true)
}
ProjectToBuild = help.split('\n')[-1]
if ("${Variant}" == "green") {
bat script: "copy \"\Buildenv\green\${Cycle}\${ProjectToBuild}.7z\" \"D:\Workspace\""
}
else {
bat script: "copy \"\Buildenv\red\${Cycle}\${ProjectToBuild}.7z\" \"D:\Workspace\""
}
}
}
}
}
在使用参数的纯批处理命令(底线)中工作得很好。但是,如果我正在调用 python 脚本并想传递一个参数,这是行不通的。 不幸的是,我没有找到任何 post 帮助我解决这个问题。
已经感谢您的帮助!
您的问题与 python 执行无关,它与以下事实有关 groovy 单引号 (' '
) 仅不支持 String Interpolation双引号 (" "
) 做,因此你的参数没有得到评估。
所以你有两个选择:
- 更改您的
bat
脚本,使其使用双引号:
help = bat(script: "python.exe \"somescript.py\" --sourcepath \"\Buildenv\green\${Cycle}\"", returnStdout: true)
- 因为
Cycle
被设置为环境参数,它被传递到命令行环境,您可以将它用作 Windows 环境变量% %
:
help = bat(script: 'python.exe "somescript.py" --sourcepath "\Buildenv\green\%Cycle%"', returnStdout: true)