1

node.js と mocha プラグインを使用しています。Jenkins からテストを実行する必要があります。

テスト ディレクトリは '/home/user/tests' です。パテを使用してコマンド 'make all' を開始し、テストを実行して結果を得ることができます。どうすれば bash スクリプトから実行できますか?

ファイル「start.sh」にスクリプトを作成しました。

    #!/bin/bash

    DIR=$(cd /home/user/tests; make all)

    echo "-----------------------START----$stDate--------------------"
    echo $DIR
    echo "------------------------END-----$enDate--------------------"

この場合、結果は

    08:10:58  SSH: EXEC: STDOUT/STDERR from command [start.sh] ...
    08:10:59  /bin/sh: mocha: command not found
    08:10:59  /bin/sh: mocha: command not found
    08:10:59  /bin/sh: mocha: command not found
    08:10:59  /bin/sh: line 0: cd: ./messagel: No such file or directory
    08:10:59  -----------------------START----Mon Sep  3 08:11:00 EDT                 2012--------------------
    08:10:59  cd ./tenant; mocha; cd ../; cd ./user; mocha --reporter list; cd ../; cd ./asset; mocha; cd ../; cd ./messagel mocha -t 5000; cd ../;
    08:10:59  ------------------------END-----Mon Sep  3 08:11:00 EDT 2012--------------------
    08:10:59  SSH: EXEC: completed after 401 ms

ただし、これはファイル「makefile」に含まれており、cd ./tenant; は実行されません。モカ; CD ../; cd ./ユーザー; mocha --レポーターリスト; CD ../; cd ./asset; モカ; CD ../; cd ./messagel モカ -t 5000; CD ../;

4

2 に答える 2

3

DIR変数に出力の一部しか含まれていないという事実cd /home/user/tests; make allは、stdout ではなく stderr に出力されるためである可能性があります。

試す:

DIR=$(cd /home/user/tests; make all >& /dev/stdout)

通常の出力とエラーの出力の両方をDIR変数に確実にキャプチャするようにします。

別の可能性は

DIR=$(cd /home/user/tests; make all 2>&1 )

ファイル記述子を直接操作することを除いて、ほとんど同じことを行います。詳細はこちら

また、これは の出力のみをリダイレクトすることに注意してくださいmake all。つまり、/home/user/tests存在しない場合、エラー メッセージは$( )

于 2012-09-03T15:22:42.283 に答える
0

bashスクリプトは、手動で実行した場合とは異なるユーザーIDで実行されているようです。PATH変数の値が異なるということは、Makefileから実行したときにmochaandmessagelコマンドが見つからないことを意味します。

于 2012-09-03T13:11:41.543 に答える