web-dev-qa-db-ja.com

jenkinsからリモートサーバー(Windows)でバッチスクリプトを実行する

私はコードを構築し(コンパイルエラーをチェックする)、テストを実行し、ファイルをリモートサーバーに展開する継続的な統合サーバー(Jenkins)を持っています(warファイルではなく、実際のファイル構造) Jenkinsプラグインを使用すると、Samba経由でファイルを転送できます。これは毎晩行われます。

ここで、リモートサーバーでantコマンドを実行する必要があります。その後、リモートサーバーでアプリケーションサーバーを起動する必要があります。コマンドラインから.batファイルを実行して、アプリケーションサーバーを起動します。

Jenkinsがバッチコマンドを実行できることは知っていますが、ビルドサーバーのコンテキストではなくサーバーのコンテキストで実行するにはどうすればよいですか?

19
Øyvind B

WindowsのJenkins、* nixのリモートの場合、plink.exe(基本的にコマンドラインPuTTY

WindowsのJenkins、Windowsのリモートの場合、 psexec.exe

* nixのJenkins、* nixのリモートの場合、sshを使用します

* nix上のJenkins、Windows上のリモート、(2015-01更新)Ansible http://docs.ansible.com/intro_windows.html は、unixからのpowershellなどのWindowsコマンドの呼び出しをサポートしている場合/ linux machine、 https://github.com/ansible/ansible-examples/blob/master/windows/run-powershell.yml

どのOSが関係しているのか(Jenkinsとリモートの両方で)教えてください。これをさらにフラッシュします。

編集:
psexec.exe は、すべてのコマンドラインオプションをリストします。次のようなものが必要になります。

psexec \\remotecomputername -u remoteusername -p remotepassword cmd /c <your commands here>
置き換える<your commands here>コマンドプロンプトから実行する実際のコマンド。

psexecは最初にサービスをインストールする必要があり、そのためには昇格したコマンドプロンプト/管理者のリモート資格情報が必要であることに注意してください。
また、psexec -accepteula 1回、EULAプロンプトを受け入れます。

26
Slav

上記のSlavの答えに続いて、Jenkins(* nix)からリモート(windows)への簡単なソリューションを以下に示します。

  1. リモートウィンドウにSSHサーバーをインストールします( MobaSSHホームエディション 私にとってはうまくいきました)
  2. JenkinsマシンのJenkinsユーザーが、リモートとのSSH接続を開くために必要な証明書を持っていることを確認してください(端末を開いてリモートにsshするだけで、証明書を受け入れることができます。Jenkins用に保存してください。ユーザー)。
  3. Jenkinsジョブにシェルの実行ビルドフェーズを追加して、リモートWindowsマシンにSSHで接続できるようになりました。

ノート :

  1. 確立された接続には追加の作業が必要になる場合があります。実行されたコマンドまたはバッチファイルをWindowsマシンで適切に機能させるには、Windows環境変数を設定するか、ネットワークドライバーをマップする必要があります。
  2. GUI関連の操作を実行したい場合、このソリューションは関係ないかもしれません(GUI操作を必要とする自動化テストの実行に関する私の作業に従ってください)。
  3. here に見られるように、Jenkins SSHプラグインの使用は問題です。
2
Rann Lifshitz

しばらくpsexec.exeを試した後、私は別のアプローチを採用することになりました。

Psexec.exeとネットワーク経由でのファイルのコピーは、特に私が作業しているドメインが毎月パスワードを変更するポリシーを持っているため(ビルドが壊れたため)、少し遅くて不安定でした。

最終的に、より高速で安定したマスター/スレーブアプローチを採用しました。 psexec.exeを使用する必要がなく、ネットワーク経由でファイルをコピーする必要もないためです。

0
Øyvind B