JENKINS将参数作为输入传递给远程主机脚本

时间:2017-08-04 15:04:32

标签: linux bash shell jenkins

我们有Jenkins项目和构建的(3)层系统。 我们在工作节点和远程主机之间建立了信任关系 通过SSH插件和密钥。

jenkinsrh-01 = main jenkins server (gui for projects/builds, dashboard, etc)
sys-07       = worker  node  (projects / builds are run from this remote node)
raloda10     = remote host  (target of builds)

在主Jenkins服务器(jenkinsrh-01)的gui配置屏幕中,我们在下面的代码中为我们的项目提供了硬编码参数值等。 $ SCRIPT位于远程主机,我们希望传递参数值以供远程主机脚本使用。

构建 - >执行Shell - >命令

#!/bin/bash

export ORACLE_USER="oracle"
export ODA_HOST="raloda10"
export DATABASE="DEV11G05"
export SCHEMA="ASA14101X5"
export COMMENT="good state archive"
export SCRIPT="/u01/app/oracle/databases/dev11g05/bod/jenky_test.sh"

sudo -i -u ${ORACLE_USER} ssh ${ODA_HOST} ${SCRIPT} 

在目标远程主机(raloda10)上的目标脚本的内容 是一个简单的测试,用于回显通过" export"传递给它的参数值。上面构建步骤中的措辞。目标远程主机脚本(jenky_test.sh)的内容是;

#!/bin/bash
#
#
echo
echo This is correct target script on remote host
echo 
echo 1. Source database: ${DATABASE}
echo 2. Name of  schema: ${SCHEMA}
echo 3. Comments: ${COMMENT}
echo
echo ${DATABASE}
echo ${SCHEMA}
echo ${COMMENT}
#
exit

工作者构建可以访问远程主机,找到远程主机脚本,然后运行shell脚本," jenky_test.sh"。

但问题是,运行时没有任何构建参数传递给jenky_test.sh脚本。它不会回显值,因为它们是空白的,如下面的"控制台输出"中所示;

Started by user Donald Collins
[EnvInject] - Loading node environment variables.
Building remotely on sys-07 (SYS-07) in workspace /var/lib/jenkins/workspace/fails_Send_Jenkins_Parameters_fromSlave_as_Inputs_for_Script_on_Remote_Host
[fails_Send_Jenkins_Parameters_fromSlave_as_Inputs_for_Script_on_Remote_Host] $ /bin/bash /tmp/hudson7103389345936604753.sh

This is correct target script on remote host

1. Source database:
2. Name of schema:
3. Comments:

控制台输出应显示上面第1,2和3行的导出变量(参数)的值。相反,它们是空白的。

我已经为" sudo"尝试了各种不同编码的各种组合。在Execute Shell的Command步骤中调用。 "没有什么"似乎能够将参数值作为jenky_test.sh的输入传递给远程目标主机。

我确定我在这里遗漏了一些明显的东西,因为我试图用Jenkins做的事情是" Jenkins 101"东西;)......

非常感谢任何帮助或建议。

最诚挚的问候, 唐纳德

1 个答案:

答案 0 :(得分:0)

在你的本地脚本中,你是一个“heredoc”,所以动作ssh命令并读入要在本地主机上执行到EOF标记的命令。

sudo -i -u ${ORACLE_USER} ssh ${ODA_HOST} << EOF
export ORACLE_USER="oracle"
export ODA_HOST="raloda10"
export DATABASE="DEV11G05"
export SCHEMA="ASA14101X5"
export COMMENT="good state archive"
/u01/app/oracle/databases/dev11g05/bod/jenky_test.sh
EOF