0

私のjenkinsサーバーには、シェルコマンドを逆の順序で実行するという問題があります。実行するコマンドを指定します

  1. ファイルを別のサーバーにコピーする
  2. 更新スクリプトを実行します

例えば、

$nohup scp -i .ssh/blah -o StrictHostKeyChecking=no foo.txt tomcat@foo.coo.com:/tmp/FOO.txt &> /dev/null
$nohup ssh -t -t -n -i .ssh/blah -o StrictHostKeyChecking=no tomcat@foo.coo.com '/home/tomcat/bin/update.sh /tmp/FOO.txt.war'

代わりに、jenkins出力コンソールには次のように表示されます。

  1. update.shを実行しています
  2. ファイルをコピーする

2つのコマンドを&&で1つにペアリングした場合にも同じ問題が発生し、jenkinsでのすべてのジョブで発生します

私は現在tomcat6サーバーでjenkins1.469を実行しています

どんな助けでもありがたいです!

編集:

これらのコマンドを各ジョブのバッチタスクとして実行しています。これは正しく実行されたため、問題はジェンキンスではないようです

[workspace] $ /bin/sh -xe /tmp/tomcat6-tomcat6-tmp/hudson8724999678434432030.sh
+ echo 1
1
+ echo 2
2
+ echo 3
3
+ echo 4
4
4

1 に答える 1

1

を使用し&>て stdout と stderr の両方をリダイレクトすることは、bash シェルの機能です。bash 固有の機能を使用する場合は、bash を使用してビルド ステップを実行する必要があることを Jenkins に知らせる必要があります。

これには、次の 2 つの方法があります。

1) Jenkins のグローバル構成でデフォルトのシェルを変更するか、

2) ビルドステップの最初の行は、#!/bin/bash ...

/bin/shは必ずしも へのシンボリック リンクではないことに注意してください/bin/bash

于 2012-07-20T20:56:17.350 に答える