如何在Jenkins自由风格作业中为readFileFromWorkspace脚本传参?
在Jenkins自由风格作业中给脚本传参的方法
方法1:直接调用脚本文件传参
如果你的scripts/myscript.sh已经在Jenkins工作区里,直接修改shell步骤,像平时在终端里那样调用脚本加参数就行,不用再读脚本内容:
freeStyleJob('Myjob') { wrappers { preBuildCleanup() } steps { shell('./scripts/myscript.sh argument1 argument2') } }
要是脚本没执行权限,就在shell步骤里先加一句授权命令:
shell('chmod +x scripts/myscript.sh && ./scripts/myscript.sh argument1 argument2')
方法2:读取脚本内容同时传参
如果必须用readFileFromWorkspace读取脚本内容执行,可采用以下两种子方法:
子方法2.1:通过环境变量传参
先在job里定义环境变量,脚本里直接读取这些变量即可:
freeStyleJob('Myjob') { wrappers { preBuildCleanup() } environmentVariables { env('ARG1', 'argument1') env('ARG2', 'argument2') } steps { shell(readFileFromWorkspace('scripts/myscript.sh')) } }
对应myscript.sh里的使用方式:
#!/bin/bash echo "第一个参数:$ARG1" echo "第二个参数:$ARG2" # 业务逻辑直接调用$ARG1、$ARG2即可
子方法2.2:参数拼接在脚本执行语句后
把读取的脚本内容和参数拼接在一起,前提是脚本本身支持用$1、$2接收位置参数:
freeStyleJob('Myjob') { wrappers { preBuildCleanup() } steps { shell(""" ${readFileFromWorkspace('scripts/myscript.sh')} argument1 argument2 """) } }
对应脚本示例:
#!/bin/bash echo "参数1:$1" echo "参数2:$2"
方法3:动态输入构建参数
如果想每次构建时手动修改参数,给job添加构建参数,然后在shell步骤里引用即可:
freeStyleJob('Myjob') { wrappers { preBuildCleanup() } parameters { stringParam('ARG1', 'default_arg1', '第一个参数的描述') stringParam('ARG2', 'default_arg2', '第二个参数的描述') } steps { shell("./scripts/myscript.sh \${ARG1} \${ARG2}") } }
构建时会弹出参数输入框,填写完成后,脚本里用$1、$2就能拿到对应的值。
内容的提问来源于stack exchange,提问作者user21113865
相关产品推荐
相关产品推荐

