Jenkinsのシェルの実行を完了とみなすには?

投稿者: Anonymous

Jenkinsでシェルの実行からあるシェルスクリプトを実行しようとしています。

シェルスクリプトの内容としては、
Node.Jsのコマンドを使用してjavascriptを実行し、
指定フォルダをファイルサーバーとする事です。

javascriptの中身は下記のようになっており、

■LocalServer.js

var connect = require('connect'),
    serveStatic = require('serve-static');
    var app = connect();
    app.use(serveStatic(__dirname));
    app.listen(5000);

これを

node LocalServer.js

とコマンドを実行するようシェルスクリプトの中に記述しています。

■問題点

node LocalServer.js

と実行するとファイルサーバーが起動中となり
コマンドラインにレスポンスが返ってこないため
Jenkinsのジョブがいつまでも実行中となり
ファイルサーバー起動中はジョブが終了となりません。

ファイルサーバーの起動という目的は果たしているので
ジョブを完了としたいのですが、
どのようにすれば良いでしょうか?

下記のようなコマンドを記述した場合、node -v はコマンドが走りません。

node LocalServer.js

node -v 

■環境
 MacOSX:10.10.4

解決

バックグラウンド実行するといいと思います。
加えて、サーバープロセスを停止する術を別途考える必要があります。
例えばPIDをファイルに残して、そのPIDをkillするような事を別途考えてみてください。

起動

node LocalServer.js &
PID=$!
echo $PID > /var/run/LocalServer.pid

停止

PID="`cat /var/run/LocalServer.pid`"
kill $PID
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *