我想使用我们在Jenkins作业中定义的参数作为同一作业中Shell命令的参数。
我用以下参数创建了参数化的内部版本:
high.version: 234
low.version: 220
我想将这些变量用作构建的外壳脚本的参数:
/bin/bash /hai/mycode/scripts/run_script.sh high.version
如何在同一工作中使用这些参数?
真正帮助我的是Hudson: How to pass parameters to shell script
解决方案:即使您将它们定义为小写,变量也应为大写!
Jenkins 将创建环境变量带有参数的名称。
这里的警告是,詹金斯将也对不代表有效变量名的参数执行此操作-那些在bash
中很难访问的参数。在您的示例中就是这种情况,因为bash
变量名不能包含.
字符。
最简单的解决方案是您
high_version
和low_version
(有效的bash
变量名称)]示例:
/bin/bash /hai/mycode/scripts/run_script.sh "$high_version"
如果无法重命名参数表示有效的bash
变量名(例如,出于可用性方面的考虑:Jenkins在Web表单中向最终用户显示变量名以开始构建):您仍然可以通过以下方式访问此类参数: 在env
命令的输出中获取参数名称。
使用以下语法将jenkins参数传递给Shell脚本-
例如YourScript.sh%JENKINS_PARAMETER%之后,您可以在脚本中使用该参数,就像普通的shell脚本命令行参数一样。例如。 myParam = $ 1;
您尝试过吗?
echo "function hello() { " > gg.sh
echo "echo \$1">> gg.sh
echo "}" >> gg.sh
echo "hello \$1" >> gg.sh
chmod 777 gg.sh
./gg.sh $hello_version
请注意变量名,点号支持得不是很好,有关详细信息,您可以引用它。https://issues.jenkins-ci.org/browse/JENKINS-7180