流れ
- Jenkinsを「ビルド→シェルの実行」メインで使いたい。
- Jenkinsのヘルプのベストプラクティクスとして、Jenkinsのジョブから別途用意したシェルスクリプトを起動することにした。
- jenkinsユーザーでは権限の問題が多発するので、sudoersに追加のうえ、シェルスクリプトは
sudo
で起動することにした。 - 起動したシェルスクリプトで
$WORKSPACE
など、Jenkinsのビルド時の環境変数が使えないことが判明した。 -
sudo
する側のシェルスクリプトでは正しく環境変数が揃っていた。 - 調べてみるものの
export WORKSPACE
は効かず、もしかして引数で渡すのか?と悩んだ。
結論としてはsudo
のオプション
-E preserve user environment when executing command
で環境変数を引き継ぐことができた。
関連
本質的に別問題なのだが、ここで-E
オプションの存在に気づけた。
Jenkins固有という考えから問題を$WORKSPACE
に限らず、まず全ての環境変数の差を確認しよう→環境変数を引き継げるのか? という思考シフトの契機。
jenkins workspace shellscript
など、Jnekins方面から攻めてもあまりうまくいかないので、最初からもっと本質的に調べればよかった。
こっちはそのまま使えそう
こっちを最初にコピペして、(user)
や/home/user/foo.sh
に気づかず躓いていた。
使える環境変数一覧。
ここでしているようなパラメーターとして渡す方法はとりたくなかった。