2011-12-07 14 views
0

私は新しいJenkinsサーバーにAntビルドを移動しています。それはSVNにアクセスし、コンパイルすることができます。ユニットテストの実行が始まるまで、すべてが素晴らしいです。いくつかのテストでは、データベースにアクセスして実行できる必要があります。Jenkinsはビルド後のユニットテスト中にデータベースに接続できません

私はJenkinsが実行しているサーバにログインしており、データベースポートでtelnetを使用することで、パスが開いていることがわかります。 (ITの人たちは、パスが開いているとも言います)。ビルドがデータベースを見つけることができないようにconfigファイルを壊したときにローカルで問題を再現できるので、データベースの問題だと私は知っています。

私の問題はこれです。私は本当にジェンキンスがなぜデータベースに接続できないのか教えてください。私はこれを行う方法を理解することができませんでした。コンソール出力は単にテストを永久に試みることを示しています。すべての提案が評価されます。

+1

正確にデータベースにアクセスしようとしていますか?単体テストであれば、そこにいくつかのログインを追加できないのはなぜですか?ローカルマシンでテストを実行するとどうなりますか(Jenkins経由で、ローカルにインストールできます)? –

+0

あなたは2つの非常に良い点を挙げます。それらを見てみましょう。 – HenryAdamsJr

答えて

0

AntからjunitターゲットにDBパラメータを渡しますか?その場合は、追加のログ&を取得するために、jenkins configのant buildステップに-vパラメータを追加して、どのDBパラメータが設定されているかを確認してください。

また、テストではDBパラメータ自体が読み込まれますか?読み方によっては、クラスパスやパスの問題があるかもしれません。この場合、パス、クラスパス、およびその他の関連する変数をテストに記録します。

junitタスクにはtimeoutというパラメータがあります。このパラメータは永久にハングしたくない場合に設定できます。

最後に、jenkinsホストにログオンし、実行中のテストからスレッドダンプをトリガーすることができます。これは、kill -3シグナルをjavaプロセス(* nix上)に送信するか、Windowsでjenkinsを実行していて、JVMが古すぎない場合はjstackを実行することによって実行されます。結果のスタックトレース(Jenkinsビルドログに表示される)は、いくつかの洞察につながる可能性があります。

+1

私は多くの良いデバッグ手法を持っているので、私はこの答えを受け入れています。私の問題は実際にはとても簡単でした。 JenkinsサーバーがDBがもはや同じネットワーク上にない新しい環境に移行したため、構成ファイルには完全修飾ドメイン名が必要でした。私たちは環境ごとに異なる設定ファイルを持っています。最初に間違ったファイルを編集したので、ここに投稿しました。適切なファイルを編集すると、完璧に機能しました。 – HenryAdamsJr

関連する問題