インストールに失敗しまくったのでメモ
●Jenkins側の設定画面を開く
●ビルド手順の追加⇒シェルの実行
●シェルスクリプトの中に who am i と記述する。
これでJenkinsが何ていうユーザーのどの権限で実行されているかわかる
●ジョブの実行
●Jenkinsの起動しているマシンにて、ターミナルを開く
● sudo visudo を実行。
●編集モードに切り替えて下記追加、
ユーザー名の部分に who am i コマンドで表示されたユーザーを記入する
Defaults:ユーザー名 !requiretty # ユーザjenkinsはtty無しでsudo可能
ユーザー名 ALL=(ALL) NOPASSWD:ALL # ユーザjenkinsはパスワード無しでsudo可能
追記1
このままだとnode コマンド実行するとエラーになる。
どうやらパスが通ってないみたい
最初、Jenkinsのシェルスクリプトに
export= /usr/local/bin
echo $PATH
としたら
/usr/local/bin 以外なくなってしまった。
これの影響だと思うけど、
cp コマンドが not found になる。
上書きになったみたい、ほんとは
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
ってなる予定だったのに・・・
だもんで
export= /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
echo $PATH
に変更
これで、
node [javascriptファイル]
が動いたし、cpのコマンドエラーもなくなりました。
※(注)
自分のMacには.bash_profileなかったけど
本来は下記の型のように.bash_profileにちゃんと環境変数を設定する必要があると思う。
Jenkinsのあるサーバーは勝手にいじっていい環境じゃないので今は上記で対応
http://qiita.com/nbkn/items/01a11392921119fa0153
追記2
Jenkinsのジョブが完了しませんでした。
■問題点
node **.js
と実行するとファイルサーバーが起動中となり
コマンドラインにレスポンスが返ってこないため
Jenkinsのジョブがいつまでも実行中となり
ファイルサーバー起動中はジョブが終了となりません。
■解決
バックグラウンド実行すれば完了した。
コマンドラインは奥が深いなあ、おもしろい
node **.js &
追記3
プロセスをkillする方法も書いておく、
nodeは基本的に2重起動できない
pkill -kill -f node
追記4
バックグラウンドで実行する時に、プロセスをKillしないよう記述しないと
Jenkinsはジョブ実行中に起動したプロセスをすべてKillする。
BUILD_ID=dontKillMe
を入れないとJenkinsは起動したプロセスをすべてkillするため修正
BUILD_ID=dontKillMe node **.js &
■下記の方のページを参照
http://d.hatena.ne.jp/penkoba/20130622/1371894105
「これは https://wiki.jenkins-ci.org/display/JENKINS/ProcessTreeKiller に書いてある通り、
この変数をなにか適当な値で上書きしないとJenkinsのProcessTreeKillerという仕組みによって
ビルドのジョブが完了した時点でその中で起動したプロセスはすべて殺されてしまいます。」との事