如何在Shell脚本中使用Jenkins参数

问题描述 投票:18回答:4

我想使用我们在Jenkins作业中定义的参数作为同一作业中Shell命令的参数。

我用以下参数创建了参数化的内部版本:

high.version: 234
low.version: 220

我想将这些变量用作构建的外壳脚本的参数:

/bin/bash /hai/mycode/scripts/run_script.sh high.version

如何在同一工作中使用这些参数?

shell jenkins jenkins-pipeline jenkins-cli
4个回答
14
投票

真正帮助我的是Hudson: How to pass parameters to shell script

解决方案:即使您将它们定义为小写,变量也应为大写!


11
投票

Jenkins 将创建环境变量带有参数的名称。

这里的警告是,詹金斯将对不代表有效变量名的参数执行此操作-那些在bash中很难访问的参数。在您的示例中就是这种情况,因为bash变量名不能包含.字符。

最简单的解决方案是您

  • 重命名参数,例如到high_versionlow_version(有效的bash变量名称)]
  • 然后在调用脚本时使用相应的变量名

示例:

/bin/bash /hai/mycode/scripts/run_script.sh "$high_version"

如果无法重命名参数表示有效的bash变量名(例如,出于可用性方面的考虑:Jenkins在Web表单中向最终用户显示变量名以开始构建):您仍然可以通过以下方式访问此类参数: env命令的输出中获取参数名称


1
投票

使用以下语法将jenkins参数传递给Shell脚本-

例如YourScript.sh%JENKINS_PARAMETER%之后,您可以在脚本中使用该参数,就像普通的shell脚本命令行参数一样。例如。 myParam = $ 1;


0
投票

您尝试过吗?

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

© www.soinside.com 2019 - 2024. All rights reserved.