私は自分でそれを実行するためにサーバーにsshするときにうまく機能するスクリプトを持っていますが、継続的統合サーバーであるHudsonがそれを実行するときに問題があります。
組み込みLinuxシステム(ターゲット)でテストを自動化しています。ターゲットは、シリアル経由でサーバーA(RHEL 5)に接続され、minicomで操作されます。サーバーB(FC 12)は、ターゲットで実際に実行されるテストをビルドし、サーバーAにSSH接続できます。サーバーC(RH)は、サーバーBをスレーブとして、Hudsonをホストします。
実際のターゲットで必要なことをすべて実行するために、runscript(http://linux.die.net/man/1/runscript)スクリプトを作成しました。イメージを起動し、サーバーBからディレクトリをマウントして、テストを実行します。サーバーBのbashスクリプトは、いくつかのコンパニオンアクションと共にrunscriptスクリプトを使用してminicomを呼び出します。私は使用するサーバーBにbashスクリプトがあります
ssh -t -t ServerA bashScript.sh
これらのテストをターゲットで実行するために。私はサーバーCにいます。サーバーBにsshし、runscriptでminicomを実行するサーバーAにsshするスクリプトを実行することで、これらのテストを実行できます。ふう レビューする:
サーバーA:ハドソンはスレーブメカニズムを使用してサーバーBにsshします。
サーバーB: kickOffTests.sh
回線ありssh -t -t ServerA runTests.sh
サーバーA: runTests.sh
呼び出すperlスクリプトを呼び出しますminicom -S my.script ttyE1
起動後のターゲット:テストがあるサーバーBからディレクトリをマウントし、そのディレクトリに入ります。コンパイルされたC実行可能ファイルであるテストを実行する、さらに別のbashスクリプトを呼び出します。
とき今、私はこれらのスクリプトのいずれかの自分自身を実行し、彼らは、彼らが必要何。しかし、ハドソンは、それは、Cの実行ファイルを起動します「さらに別のbashスクリプト」内の行文句minicomのセッションでオーバー、同じことをしようとする./executable
と、./executable: cannot execute binary file
Linuxについて学ぶべきことはまだたくさんありますが、この問題はHudsonがコンソールに接続していないことが原因だと推測しています。Hudsonがそのスレーブを制御するために何をするのか、正確にはわかりません。export TERM=console
kickOffTests.shを実行する直前に構成内の行を使用しようとしましたが、問題は残ります。
誰が私に何が起こっているのか、どうすればそれを修正できるのかを説明できますか?この方程式からサーバーを削除することはできません。方程式からミニコムを取り出すことは可能かもしれませんが、それはこのプロジェクトに未知の時間を追加しますので、私はすでに持っているものを使用するソリューションを大いに望みます。