前提条件
自分用メモ
ubuntu 16.04
本文
JenkinsにGithubなどから例えばhoge
というリポジトリをpullしてきて、ビルドしたものは以下のような場所に収納されます。
/var/lib/jenkins/workspace/hoge
ここから好きな場所にrsync
してあげたいところですが、Operation not permitted
と言われてうまく出来なかったりします。
そこでJenkinsにsudo
をさせてあげたいわけですが、[シェルの実行]のところに
sudo sh /path/to/deploy.sh
と書いて実行してもsudo: no tty present and no askpass program specified.
と言われて実行できません。
なのでむりやり許可をしてあげます!
$ sudo visudo
からの
Defaults visiblepw
jenkins ALL=(ALL) NOPASSWD:ALL
を追加でパスワードなしでsudo
が実行できます。
この時なにやら見慣れないエディターがでてきますが、これはnanoという子(名前は日常にでてきそうでかわいい...)で、使い方はこのサイトを参考にすると良いと思われます。
ちなみにこのファイル自体は/etc/sudoers
にあるのですが、少しでもシンタックスエラーになるとsudo
自体が使えなくなってしまうのでご注意ください...間違ってもvimとかで編集しようと思わないように...もしもの対処法はこちら
おまけ
Jenkinsが実行したファイルは先日オススメしたnpmのデーモン装置foreverで普通に
- 略 -
forever start path/to/app.js
と書いても
Forever cannot find process with id: /path/to/app.js
とか言いやがってなぜか見つけてくれません。。。
で対処法は、
- 略 -
forever start app.js --sourceDir="/path/to/dir/"
としてやると良いようです
さらに厄介なことに、Jenkinsでforeverしてしまうと今度は他のユーザーからforever list
としてやっても
info: No forever processes running
と言われてしまいます。。。。とりあえずこんな感じで止めたいときは一気に殺すしか今の所僕には打つ手なしです
$ sudo pkill -f 'app.js'
何方か良い方法を知ってらしたら、ご教授ください