18

Jenkinsのマスタースレーブ構成があります。.NETプロジェクトは、Windowsで実行されているスレーブJenkinsインスタンスによって構築されています。

GUIテストはたくさんありますが、リモートデスクトップ接続(RDC)セッションが開いている場合にのみ実行されるようです。

RDCを使用せずにテストを実行しようとすると、Jenkinsはテストの進行状況を表示しません。次に、スレーブのデスクトップに接続すると、起動されたアプリケーションのメインウィンドウが表示されますが、UIテストフレームワーク(白)はアクションを実行できません。

Jenkinsスレーブは、JavaWebStartを介して起動されます。

残念ながら、RDCセッションなしではGUIテストを実行できないといういくつかのWebサイトを読みました。

私はそれが真実であることを確認したいだけで、回避策があるかどうか疑問に思います。

4

4 に答える 4

15

テストを正しく実行するには、スレーブマシンがデスクトップにある必要があります。同じ問題がありました。

解決策は、テストマシンを起動し、デスクトップに自動ログオンすることでした。デスクトップが使用可能になった後でのみテストが開始されるようにするために、ユーザーログイン時に実行するように設定されたスケジュールされたタスクを追加しました。これにより、JavaWebStartを介してJenkinsスレーブが起動されます。そうすれば、Jenkinsは、デスクトップが実行されたときにのみスレーブを認識します。その後、すべてが正常に機能しました。

于 2012-04-16T19:54:47.427 に答える
10

さまざまな種類のGUIテスト、win32、swing、seleniumを実行しているJenkinsクラスターがあります。彼らは24時間365日無人で何千ものテストを実行しています。これが私の解決策です:

  1. GUIテストを存続させる方法-RDCは機能しません。GUIアプリケーションは、RDCセッションがアクティブな場合にのみ正常に機能します。私はさまざまな方法を試しましたので、わざわざ再試行しないでください。RDCウィンドウが最小化または切断された後、テストが失敗します。これまでの解決策は、サービスとしてVNCサーバー(私はUltraVNCを使用しています)をインストールし、ログオン時に起動することを確認することです。また、RDCはVNCセッションを切断するため、RDCを使用してテストマシンに接続しないようにしてください。可能であれば、VNCクライアントにも接続してください。しかし、それはあなた次第です。私がしていることは、マシン上で何かをデバッグする必要があるときに、RDCを実行して再起動し、#2と#3が設定されていることを確認することです。

  2. 自動ログオン-SysInternalsSuiteにツールautologon.exeがあり、スレーブで実行します

  3. スレーブの自動登録-必要なのはSwarmプラグインです-https ://wiki.jenkins-ci.org/display/JENKINS/Swarm+Plugin。簡単なバッチを作成し、スタートアップフォルダーにショートカットを配置します。マシンが自動ログオンするたびに、自動的にスレーブとして登録されます。

私は実際に#2と#3を単純なバッチファイルとして組み合わせています。

autologon.exe <user> <domain> <password>
REM Here to make sure the logonCount is properly generated
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoLogonCount /t REG_DWORD /d 0xFFFF /f

start /min java -jar I:\CDC\jenkins\swarm-client-1.9-jar-with-dependencies.jar -executors 1 -fsroot c:\Jenkins -labels "Prod Win7 %ComputerName%" -master <Jenkins URL> -name farm-%ComputerName% -username <username> -password <password>
于 2013-11-30T02:27:12.777 に答える
7

Windowsの自動ログオンなしでそれを行う別の方法があります(いくつかのマシンで私のために働きます)。

1. [コンピューターの管理]->[サービスとアプリケーション]->[サービス]->[Jenkinsスレーブ]->[プロパティ
]に移動します。2。[ログオン]タブで[ローカルシステムアカウント]を選択し、[サービスにデスクトップとの対話を許可する]をオンにします。3。[ OK
]をクリックしてこのウィンドウを閉じ、再起動します。 Jenkinsスレーブサービス 4.テストアプリがあるディレクトリに移動し、アプリの実行可能ファイルで[プロパティ]を選択します 。5。 [セキュリティ]タブで[編集... ]をクリックします。6 。新しいウィンドウで[追加]をクリックします。7。新しいウィンドウで[



場所...そしてローカルコンピュータ(リストの一番上のオプション)を選択し、OK をクリックします8.ウィンドウの白い領域にローカルサービス
を置き、名前のチェックをクリックし、 OKをクリックします9.そのユーザーのフルコントロールを許可し、 OKをクリックし、すべてを閉じます窓 それがすべてでなければなりません。それがあなたのために働くかどうか私に知らせてください。


于 2014-10-27T14:35:28.030 に答える
2

他の回答ですでに述べたように、Windowsマシンが実際のユーザーに自動ログオンする構成が必要です。詳細については、他の回答を参照してください。ただし、これでは不十分でした。問題を解決するには、UltraVNCサーバーをサービスとして実行するようにセットアップする必要がありました。

このサイトでは、RDPを介したログインがそのトリックの問題であると述べられています。つまり、VNCに接続するか、RDPアクセス後に再起動します。

于 2014-07-18T08:44:16.763 に答える