Jenkins 作为一种windows服务,已经在上运行了几个月,没有出现问题。
我做了一些Jenkins更新(将一个更新/更新的.war文件复制到.jenkins文件夹),并且也发生了一些窗口更新。我拥有的版本是Jenkins 2.263.3。
我浏览了大量文档和其他StackOverflow票据,发现JENKINS_HOME环境变量丢失了。我加了这个。
下面是我的调查结果。
环境变量--参见下面的
C:\>java -version
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.171-b11, mixed mode)设置了
C:\>echo %JENKINS_HOME%
C:\Users\XXXXX\.jenkins
进行了检查。
<service>
<id>jenkins</id>
<name>Jenkins</name>
<description>This service runs Jenkins automation server.</description>
<env name="JENKINS_HOME" value="%BASE%"/>
<!--
if you'd like to run Jenkins with a specific version of Java, specify a full path to java.exe.
The following value assumes that you have java in your PATH.
-->
<executable>java</executable>
<arguments>-Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "%BASE%\jenkins.war" --httpPort=8080 --webroot="%BASE%\war"</arguments>
<!--
interactive flag causes the empty black Java window to be displayed.
I'm still debugging this.
<interactive />
-->
<logmode>rotate</logmode>
<onfailure action="restart" />
<!--
In the case WinSW gets terminated and leaks the process, we want to abort
these runaway JAR processes on startup to prevent corruption of JENKINS_HOME.
So this extension is enabled by default.
-->
<extensions>
<!-- This is a sample configuration for the RunawayProcessKiller extension. -->
<extension enabled="true"
className="winsw.Plugins.RunawayProcessKiller.RunawayProcessKillerExtension"
id="killOnStartup">
<pidfile>%BASE%\jenkins.pid</pidfile>
<stopTimeout>10000</stopTimeout>
<stopParentFirst>false</stopParentFirst>
</extension>
</extensions>
<!-- See the referenced examples for more options -->
</service>的形式从命令行启动Jenkins
java -Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "C:\Users\XXXXX\.jenkins\jenkins.war" --httpPort=8080 --webroot="C:\Users\XXXXX\.jenkins\war
Feb 17, 2021 10:29:31 AM INFO hudson.WebAppMain$3 run
Jenkins is fully up and running
Feb 17, 2021 10:29:57 AM WARNING hudson.lifecycle.WindowsServiceLifecycle getBaseDir
Could not find environment variable 'BASE' for Jenkins base directory. Falling back to JENKINS_HOME有什么建议,如何让服务开始通过服务经理?
发布于 2021-02-17 15:53:14
服务正在启动和停止,没有问题。
我怀疑的问题是Jenkins的原始安装非常陈旧,我推测它当时可能是32位的应用程序。目前的更新似乎是64位应用程序。自最初安装以来,Jenkins进行了更新--更改涉及原始安装的几个主要版本(.war文件更新)。启动服务的jenkins.exe文件从未更新过.
经过大量研究后的错误消息“System.BadImageFormatException”表明,该问题与32/64位可执行文件之间的兼容性差异有关。我猜想它是期待一个64位的可执行文件,但得到一个32位的执行。
为了解决这个问题,我在本地PC上安装了Jenkins的最新版本。
在服务器上,我备份了文件:
然后,我在服务器上停止了Jenkins,那里没有启动服务(从带有Ctrl+D的终端窗口)。
然后,我用本地安装的最新文件替换了服务器上的这2个文件。
服务是第一次启动。
https://stackoverflow.com/questions/66241643
复制相似问题