私はGoogleでコマンドラインでサービスをインストールする方法をたくさん探していました(そのため手動での対話なしで)が、jenkins-slave.exeを取得する方法に固執しています
私はそれらの指示を見つけました https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins+as+a+Windows+service ですが、実行可能ファイルを取得する方法がわかりません。スレーブを接続する正しいキーでslave.jarをダウンロードして実行しましたが、exeは生成されません。
このページを見つけました https://github.com/kohsuke/winsw/blob/master/doc/installation.md#winsw-installation-guide 手動でインストールしますが、瓶ができるときにホイール。さらに、WinSW.exeが異なり、プラグインによって更新されないというリスクがあります(自動更新コードがいくつか見られました)。
Jenkins-slave.exeをダウンロードまたは生成する方法はありますか?または、slave.jarからコマンドラインで「サービスとしてインストール」を実行する方法はありますか?
プラグイン開発者に連絡した後、自分の質問に答えるには:
Jenkinsからexeを直接ダウンロードする実際の方法はありません。slave.jarは、リモートプロトコルを介してマスターからそれを取得します。 URLを介してダウンロードできるようにするためのリクエストを作成しました(開発者が提案したとおり)。今後利用できるようになる可能性があります。
現在、実行可能ファイルは名前が変更されたWindows Service Wrapperバイナリです: https://github.com/kohsuke/winsw したがって、このバイナリを同じ方法で使用しました。
WinSWおよびXMLファイルで使用される構成に関しては、GitHubリポジトリ https://github.com/jenkinsci/windows-slave-installer-module の構成を使用しました。バージョンは、構成に関して互換性があります。
基本的に、exeをダウンロードし、Jenkinsから秘密鍵を取得し、元のプラグインの構成を使用してサービスを作成します。次に、jenkins-slave.exe install
を使用してサービスをインストールします。
ステップバイステップ:
Java -jar slave.jar -jnlpUrl http://jenkins...
)slave.jar
ファイルをダウンロードします(JNLPコマンドから取得)http://repo.jenkins-ci.org/public/com/Sun/winsw/winsw/2.1.0/winsw-2.1.0-bin.exe
jenkins-slave.exe install
を使用してサービスをインストールします私がやることは:
slave.jar
ファイルをダウンロードします(Jenkinsのノードのページから)Java -jar slave.jar -jnlpUrl http://<YOUR URL HERE>
コマンドをコピーします.bat
ファイルに貼り付けて保存します.bat
ファイルを実行するスケジュールされたタスクを登録するまたは、コマンドラインでslave.jarから「サービスとしてインストール」を実行する方法はありますか?
jenkins-slave.exe
を使用しませんが、代わりにJava -jar slave.jar
を起動するときにJenkinsスレーブに設定する正確な環境変数を制御できるカスタムスクリプトを使用します。その新しいスレーブのJenkinsマスターノードページ。
マスターからスレーブにslave.jar
を取得するには、スレーブWindowsサーバーから実行します。
curl -o slave.jar https://your.server/jenkins/jnlpJars/slave.jar
Jenkins-slave.exeを置き換えるには、Windowsサービスとして宣言されたスクリプトを nssm
で使用します=
スクリプトはagent.bat
に似ています:
set PATH=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0
set PATH=D:\Tools\SonarRunner\bin;%PATH%
set M2_HOME=D:\Tools\Apache-maven-3.5.0
set PATH=%M2_HOME%\bin;%PATH%
set PATH=D:\Tools\Apache-ant-1.9.3\bin;%PATH%
set GH=D:\Tools\Git
set PATH=%GH%\bin;%GH%\usr\bin;%GH%\mingw64\bin;%PATH%
set PATH=%Java_HOME%\bin;%PATH%
set WORKSPACE_FOLDER=D:\Jenkins\workspace
set GIT_WORKSPACE_FOLDER=D:\Jenkins\workspace
Java -Xmx768m -jar slave.jar -jnlpUrl https://your.server/jenkins/computer/<SlaveName>/slave-agent.jnlp -secret 87ef3d...
その後、そのスクリプトはWindowsサービスとして呼び出され、専用のユーザーアカウントによって実行されます。
runas /user:<domain>\<jenkinsUser> cmd ( enter `jenkinsUser` Windows password )
D:\Tools\nssm-2.24\win64\nssm.exe install <SlaveName> D:\Jenkins\agent.bat
次に、Windowsサービスが構成されます。
sc config <SlaveName> obj= <domain>\<jenkinsUsers> password= <jenkinsUser password>
sc config <SlaveName> start= auto
他のソフトウェアのインストールの自動化については、 Chocolatey-Software Management Automation 、Windows用パッケージマネージャーを参照してください。
スレーブの宣言側を完全に自動化するには、Web APIを使用してスレーブを作成し、 Jenkinsノード/スレーブシークレットJnlpMacキーを取得するGroovyスクリプト を使用します。
「 作成用のこのスクリプト 」を参照してください。
そして、秘密鍵を取得するためのグルーヴィーなスクリプト(Jenkins 2.46以降):
echo 'println jenkins.model.Jenkins.instance.nodesObject.getNode("my-agent")?.computer?.jnlpMac' \
| Java -jar ~/Downloads/jenkins-cli.jar -s https://jenkins/ groovy =