【发布时间】:2015-09-17 23:26:50
【问题描述】:
我在使用 Jenkins 版本的主/从配置中设置了 2 台 RHEL 机器。 1.609.2
slave 正在通过 SSH Slaves Plugin 1.10 启动。
我正在尝试使用Slave Setup Plugin v 1.9 来安装我的从机运行构建所需的工具。特别是我正在安装 sqlplus。
这是我正在运行以尝试安装 sqlplus 的脚本:
if command -v sqlplus >/dev/null; then
echo "sqlplus already setup. Nothing to do."
else
#Create directory for sqlplus and unzip it there.
mkdir /jenkins/tools/sqlplus
tar -xvf sqlplussetup/instantclient-basiclite-linux.x64-12.1.0.2.0.tar.gz -C /jenkins/tools/sqlplus || { echo 'unzip failed' ; exit 1; }
tar -xvf sqlplussetup/instantclient-sqlplus-linux.x64-12.1.0.2.0.tar.gz -C /jenkins/tools/sqlplus || { echo 'unzip failed' ; exit 1; }
cd /jenkins/tools/sqlplus/instantclient_12_1
#Create links for the Oracle libs
ln -s libclntsh.so.12.1 libclntsh.so || { echo 'Could not create link' ; exit 1; }
ln -s libocci.so.12.1 libocci.so || { echo 'Could not create link' ; exit 1; }
#Add two lines to .bashrc only if they don't already exist. Export LD_LIBRARY_PATH and add sqlplus to PATH.
grep -q -F 'export LD_LIBRARY_PATH=/jenkins/tools/sqlplus/instantclient_12_1:$LD_LIBRARY_PATH' /home/jenkins/.bashrc || echo 'export LD_LIBRARY_PATH=/jenkins/tools/sqlplus/instantclient_12_1:$LD_LIBRARY_PATH' >> /home/jenkins/.bashrc
grep -q -F 'export PATH=$PATH:/jenkins/tools/sqlplus/instantclient_12_1' /home/jenkins/.bashrc || echo 'export PATH=$PATH:/jenkins/tools/sqlplus/instantclient_12_1' >> /home/jenkins/.bashrc
#Export variables so they can be used right away
export LD_LIBRARY_PATH=/jenkins/tools/sqlplus/instantclient_12_1:$LD_LIBRARY_PATH
export PATH=$PATH:/jenkins/tools/sqlplus/instantclient_12_1
echo "sqlplus has been setup."
fi
此脚本运行成功,一切似乎都正常,直到我尝试运行构建并执行sqlplus 命令。构建失败,因为 sqlplus 不是可识别的命令。
我的主要问题是: 启动 slave 时自动添加环境变量的正确方法是什么?
请注意,我正在寻找一种自动方式来执行此操作。我不想进入我的奴隶的配置屏幕,勾选一个复选框并指定一个环境变量。这与我试图实现的目标是适得其反的,即连接后立即可用于构建的从站。
我非常明白为什么我的脚本不起作用。当 Jenkins 启动从属服务器时,它首先建立 SSH 连接,然后使用命令运行我的设置脚本
/bin/sh -xe /jenkins/tmp/hudson8035138410767957141.sh
hudson8035138410767957141.sh 的内容是我上面的脚本。很明显,exportisn't going to work。我希望将导出添加到.bashrc 文件可以解决这个问题,但它不起作用。我认为这是因为该脚本是在 ssh 连接建立后执行的,因此 .bashrc 已经被读取。
问题是我想不出任何方法来解决这个限制。
【问题讨论】:
-
我们使用wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin 在运行实际作业之前设置变量。如果您遵循一些关于安装的约定,这可能会有所帮助。
标签: jenkins