-1

win32 マシンで hudson CI サーバーを実行しています。ビルドが成功したら、作成した exe を公開 Web サイトに配置します。SCP と ftp 用の hudon プラグインが思い通りに動作していませんでした (主に、それらを配置する場所としていくつかの奇妙なディレクトリを選択するためです)。そのため、hudson が呼び出すコマンド ライン scp 用の独自のスクリプトを作成しました。

ただし、何らかの理由で hudson 環境で実行すると、scp バット ファイルがハングします。同じマシン上でコマンドラインから呼び出すと正常に動作します。

どうやら、タスクスケジューラから実行すると、これも失敗するようです。

これがハドソンまたはスケジューラ環境から機能しない理由を考えられる人はいますか?

pscp.exe -batch -q -pw mypassword ..\..\installers\Output\myfilename  domain.com@domain.com:domains/domain.com/html/downloads

(「domain.com」は私のドメイン名の代わりであることに注意してください...)

繰り返しますが、コマンド ラインからそのバット ファイルを呼び出すと、問題なく動作します。

また、注意してください-私がbatファイルと呼ぶ理由は、ファイル名をsvn WCREVコマンドに置き換えるためです-hudsonは脳死しており、scpまたはftpプラグインまたはコマンドライン呼び出しでその置換を行うことができないためです。このメソッドは問題なく動作するはずですが、ハングします。

pscp は、Putty に関連付けられたコマンド ライン ssh プログラムです。

私が抱えている追加の問題は、このプロジェクトが2つのsvnリポジトリにアクセスするため、hudsonが混乱し、svn rev番号が利用可能であると予想される場所で自由に提供できないことです。(1 つのリポジトリはサード パーティのもの用で、もう 1 つはコード ベースです) 識別子の一部としてコード ベースの svn rev を使用して、作成されるインストーラーに名前を付けます。

hudson (プラグイン) 内から ftp または scp を使用できれば幸いですが、hudson がファイルを配置することを決定した場所 (ビルド番号を使用 - 私は hudson のビルドを使用したくない) を考えると、それらはまったく機能しないようです。ビルドを識別するための番号 - 私は svn リビジョンを好みます) - したがって、コマンド ライン バージョンを使用しますが、それらも機能しません - それらは hudson ビルド プロセスをハングさせます。

4

3 に答える 3

3

私も同じ問題に遭遇しました。問題は、(すべての PuTTY と同様に) pscp が、接続しているサーバーのホストキーをレジストリ ( HKEY_CURRENT_USER) にロードする必要があることです。ホストキーがないと、pscp はホストを無効として拒否します (何らかの方法で抑制しない限り、コンソール出力にエラー メッセージが表示されるはずです。これは 1 回限りのことですが、実行しているユーザーごとに実行する必要があります。コマンド。

これは私が使用する基本的なプロセスです。

  1. PuTTY を使用してサーバーとポートに接続します。プロンプトが表示されたら、ホストキーを受け入れます。
  2. 走るregedit.exe
  3. 閲覧するHKEY_CURRENT_USER\Software\SimonTatham\PuTTY\SshHostKeys
  4. 関連するホストキーを.regファイルにエクスポートします (右クリックしSshHostKeysてエクスポートを選択します) 。
  5. ユーザー Hudson としてログインし、エクスポートされた.regファイルをインポートとして実行します。

Hudson がローカル システムとして実行されている場合は、PsExecまたはこの MSDN ブログで説明されている手法を使用して、ローカル システム アカウントとしてコマンドを実行できます。

これを一度実行すると、コマンドは Hudson で実行できるようになります。

編集

2 つのリンクは、ローカル システムとしてコマンド プロンプトを実行する方法にすぎません。[サービス] コントロール パネル (services.msc) を開き、Hudson サービスを見つけて、[ログオン] 列の下にある内容を確認することで、Hudson がどのユーザー ID として実行されているかを確認できます。

ローカル システムでない場合は、ユーザーとして Windows にログインし、reg ファイルをインポートできるはずです。ローカル システム (デフォルト) として実行されている場合、Windows にログインできず、PsExec または MSDN ブログで説明されている手法を使用して、レジストリ ファイルをローカル システムのHKEY_CURRENT_USERツリーにインポートする必要があります。

于 2010-07-12T16:19:43.810 に答える
1

Quest PuTTYでパテをアップグレードしてみてはいかがでしょうか。これは PuTTY に基づいており、パラメーター -auto_store_key_in_cache を提供します。これで問題が解決するはずです。

SuperUser に関する同様の質問も参照してください。

于 2010-07-12T18:49:54.000 に答える
0

コマンドラインからscpコマンドを実行できるアカウントを使用して問題を解決しました。具体的には、サービス構成で、システム アカウントではなく、セットアップした別のユーザーを使用するように hudson サービスを設定しました。

これはおそらく問題を解決する最善の方法ではありませんが、短期的にはうまくいきました.

于 2010-07-13T13:46:49.697 に答える