我们有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"东西;)......
非常感谢任何帮助或建议。
最诚挚的问候, 唐纳德
答案 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