Jenkins verを使用して、マスター/スレーブ構成で2台のRHELマシンをセットアップしました。 1.609.2スレーブのSetupPluginを使ってスレーブのPATHに追加するには?
スレーブはSSHスレーブプラグイン1.10を介して起動されています。
私はSlave Setup Plugin v1.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
は認識されたコマンドではないため、ビルドに失敗します。
私の主な質問はこれです スレーブを起動するときに環境変数を自動的に追加する適切な方法は何ですか?
私は自動の方法を探しています。スレーブの設定画面に入り、チェックボックスにチェックを入れ、環境変数を指定したくありません。これは、私が達成しようとしていることに対して逆効果的です。スレーブは、いったん接続するとすぐに使用できるスレーブです。
私のスクリプトがうまくいかない理由はかなりわかります。ジェンキンスは、スレーブを起動しているとき、それは最初のSSH接続を行い、それがhudson8035138410767957141.sh
の内容は上から私のスクリプトでコマンド
/bin/sh -xe /jenkins/tmp/hudson8035138410767957141.sh
を使用して、私のセットアップスクリプトを実行します。だから明らかに、export
isn't going to work。私は.bashrc
ファイルへのエクスポートを追加することがこれを回避することを望んでいたが、うまくいきませんでした。 I これは、このスクリプトはssh接続が確立された後に実行され、したがって.bashrc
がすでに読み込まれているためです。
問題この制限を回避する方法はありません。
実際のジョブを実行する前に変数を設定するにはhttps://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Pluginを使用します。インストールに関するいくつかの規則に従えば、これが役に立ちます。 – Jayan