Install Jenkins slave as a Windows service in command line
To answer my own question, after having contacted the plugin developers:
There is no actual way to download the exe from Jenkins directly, the slave.jar gets it from the master via the remoting protocol. I have created a request to be able to download it via an URL (as suggested by the developer), so it might be available in the future.
Right now the executable is a renamed Windows Service Wrapper binary: https://github.com/kohsuke/winsw so I used this binary the same way.
Regarding the configuration used by WinSW and XML files, I used the one from the GitHub repository https://github.com/jenkinsci/windows-slave-installer-module. The versions are compatible in terms of the configuration.
So basically I download the exe, get the private key from Jenkins and create the service using the configuration from the original plugin. Then I install the service using jenkins-slave.exe install
.
Step by step:
- Get the JNLP command from Jenkins (from the Node page) to get the private key, e.g.
java -jar slave.jar -jnlpUrl http://jenkins...
- Download the
slave.jar
file from Jenkins (gotten from the JNLP command) - Download the service wrapper executable, e.g.
http://repo.jenkins-ci.org/public/com/sun/winsw/winsw/2.1.0/winsw-2.1.0-bin.exe
- Rename
winsw-2.1.0-bin.exe
intojenkins-slave.exe
- Setup the XML used to run the service (available in the module or directly on winsw website)
- Setup the slave configuration XML file (available on the module source code)
- Then install the service using
jenkins-slave.exe install
What I would do is:
- Download the
slave.jar
file (from the node's page of Jenkins) - Copy the
java -jar slave.jar -jnlpUrl http://<YOUR URL HERE>
command from the node's page - Paste this command into a new
.bat
file and save it - Register a scheduled task to run this
.bat
file when Windows starts