Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins 如何添加到从属';使用从属设置插件的路径?_Jenkins - Fatal编程技术网

Jenkins 如何添加到从属';使用从属设置插件的路径?

Jenkins 如何添加到从属';使用从属设置插件的路径?,jenkins,Jenkins,我有2台RHEL机器,使用Jenkins ver以主/从配置进行设置。1.609.2 从机是通过SSH从机插件1.10启动的 我正在尝试使用v1.9安装从机运行构建所需的工具。特别是我正在安装sqlplus 以下是我正在运行的脚本,以便尝试安装sqlplus: if命令-v sqlplus>/dev/null;然后 echo“sqlplus已安装。无需执行任何操作。” 其他的 #为sqlplus创建目录并在那里解压缩。 mkdir/jenkins/tools/sqlplus tar-xvf sq

我有2台RHEL机器,使用Jenkins ver以主/从配置进行设置。1.609.2

从机是通过SSH从机插件1.10启动的

我正在尝试使用v1.9安装从机运行构建所需的工具。特别是我正在安装sqlplus

以下是我正在运行的脚本,以便尝试安装sqlplus:

if命令-v sqlplus>/dev/null;然后
echo“sqlplus已安装。无需执行任何操作。”
其他的
#为sqlplus创建目录并在那里解压缩。
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';退出1;}
tar-xvf sqlplussetup/instantclient-sqlplus-linux.x64-12.1.0.2.0.tar.gz-C/jenkins/tools/sqlplus |{echo'unzip failed';退出1;}
cd/jenkins/tools/sqlplus/instantclient\u 12\u 1
#为Oracle LIB创建链接
ln-s libclntsh.so.12.1 libclntsh.so | |{echo'无法创建链接';退出1;}
ln-s libocci.so.12.1 libocci.so | |{echo'无法创建链接';退出1;}
#仅当它们不存在时,才将两行添加到.bashrc。导出LD_LIBRARY_PATH并将sqlplus添加到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
#导出变量以便可以立即使用
导出LD_LIBRARY_PATH=/jenkins/tools/sqlplus/instantclient_12_1:$LD_LIBRARY_PATH
导出路径=$PATH:/jenkins/tools/sqlplus/instantclient\u 12\u 1
echo“已设置sqlplus。”
fi
这个脚本运行成功,在我尝试运行一个构建并执行
sqlplus
命令之前,一切都正常。生成失败,因为
sqlplus
不是可识别的命令

我的主要问题是: 启动从机时,自动添加环境变量的正确方法是什么

请注意,我正在寻找一种自动化的方法。我不想进入从属设备的配置屏幕,请勾选复选框并指定环境变量。这与我试图实现的目标相反,即连接后立即可用于构建的从机


我非常理解为什么我的脚本不起作用。当Jenkins启动slave时,它首先进行SSH连接,然后使用命令运行我的安装脚本

/bin/sh -xe /jenkins/tmp/hudson8035138410767957141.sh
其中,hudson8035138410767957141.sh的内容是我上面的脚本。显然,
导出
。我希望将导出添加到
.bashrc
文件可以解决这个问题,但它不起作用。我认为这是因为这个脚本是在ssh连接建立之后执行的,因此
.bashrc
已经被读取


问题是我无法找到任何方法来绕过这个限制。

对于没有明确设置
--login
选项的非交互式shell,Bash不读取任何启动文件(
.bashrc
.profile
等)——这就是导出无法工作的原因

因此,解决方案“A”是保持上面建议的bashrc魔力,并通过将构建步骤中的第一行更改为,添加
--login
选项

#!/bin/bash --login

<your script here>

但无论如何,您都需要摆脱在生产设置中通常过多的跟踪输出。

我们用于在运行实际作业之前设置变量。如果您遵循一些关于安装的约定,这可能会有所帮助。我喜欢您的解决方案“B”。如果我理解正确,如果我在
$BASH\u ENV
脚本中导出
路径
LD\u LIBRARY\u路径
,这些将在整个构建步骤中保留?不幸的是,我不再从事需要这个的项目,所以我不能实际测试它。是的。
$BASH_ENV
中的命令/导出在BASH启动期间读取,并在整个shell会话中保持不变——与您为交互式登录shell添加到
.bashrc
等中的语句完全相同。
#!/bin/bash

<your script here>