Jenkins在远程机器上执行带参数的shell脚本

3

我有一个Jenkins任务,会在远程服务器上执行一个shell脚本。现在我想要在这个shell脚本中传递一些参数。下面的例子可以给你更多的思路。

variable1={git-URL}
variable2={branch}

我希望这些参数能够传递到远程机器上的shell脚本中,并像下面这样执行。
#/usr/local/bin/check_out_code.sh <git-url> <branch>

希望有人能够为我指出一些解决此问题的方法。

谢谢。

3个回答

4

您可以像使用 Linux 中的任何其他变量一样,引用任何环境变量,包括 Jenkins 参数:${VARNAME}


这些变量会传递到在远程机器上执行的shell脚本中吗?我会尝试一下。 - Swaroop Kundeti
执行命令的节点(主节点或从节点)将在执行命令之前扩展这些变量。如果命令恰好是远程脚本,则将执行远程脚本,并扩展参数。 - Slav

2

我也遇到了同样的问题。

/${xx}/$xxx参数在远程机器上未定义,因此当你的shell脚本在远程机器上执行时无法获得正确的值。

以下方法可以解决这个问题:

ssh -t server.example.com 'export MYVAR='"'$LOCALVAR'"'; mycommand'

在我的情况下,shell脚本不需要太多的转义:ssh 'export MYVAR="'$localvar1"_"$localvar2'"; - Sonata

0

正如@Slav所提到的,您可以像在Jenkins中使用其他环境变量一样使用环境/构建参数。需要记住的一件事是它们在脚本执行之前被扩展。如果您正在使用管道Groovy脚本,请确保使用双引号"而不是单引号'

以下内容将无法工作:

sh '/usr/local/bin/check_out_code.sh ${giturl} ${branch}'

以下代码可正常工作:

    sh "/usr/local/bin/check_out_code.sh ${giturl} ${branch}"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接