我一直在谷歌上看到如何安装该服务 命令行(所以没有手动交互)但我坚持如何 得到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?
答案 0 :(得分:8)
在联系插件开发者之后回答我自己的问题:
没有直接从Jenkins下载exe的实际方法,slave.jar通过远程协议从master获取它。我创建了一个请求,可以通过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
答案 1 :(得分:2)
我要做的是:
slave.jar
文件java -jar slave.jar -jnlpUrl http://<YOUR URL HERE>
命令.bat
文件中并保存.bat
文件答案 2 :(得分:1)
或者有没有办法在slave.jar的命令行中运行“作为服务安装”?
我不使用jenkins-slave.exe
,而是使用自定义脚本来控制我想要为Jenkins奴隶设置的确切环境变量,当使用密钥启动java -jar slave.jar
时,您可以在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创建从属,并使用groovy script to retrieve the Jenkins node/slave secret JnlpMac key。
见this script for the creation。
和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 =