首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins Windows服务未启动

Jenkins Windows服务未启动
EN

Stack Overflow用户
提问于 2021-02-17 12:06:52
回答 1查看 2K关注 0票数 0

Jenkins 作为一种windows服务,已经在上运行了几个月,没有出现问题。

我做了一些Jenkins更新(将一个更新/更新的.war文件复制到.jenkins文件夹),并且也发生了一些窗口更新。我拥有的版本是Jenkins 2.263.3

我浏览了大量文档和其他StackOverflow票据,发现JENKINS_HOME环境变量丢失了。我加了这个。

下面是我的调查结果。

  1. --设置了

环境变量--参见下面的

代码语言:javascript
复制
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)

设置了

  1. JENKINS_HOME环境变量-参见:

代码语言:javascript
复制
C:\>echo %JENKINS_HOME%
C:\Users\XXXXX\.jenkins

  1. 安装在用户XXXXX下,服务帐户登录被相应地配置为

  1. 我没有使用端口8080的另一个应用程序--我用sys内部程序.

进行了检查。

  1. My jenkins.xml看起来如下:

代码语言:javascript
复制
<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>

  1. I可以以follows:

的形式从命令行启动Jenkins

代码语言:javascript
复制
java -Xrs -Xmx256m -Dhudson.lifecycle=hudson.lifecycle.WindowsServiceLifecycle -jar "C:\Users\XXXXX\.jenkins\jenkins.war" --httpPort=8080 --webroot="C:\Users\XXXXX\.jenkins\war

  1. ,如果我尝试从服务器管理器启动它,我会得到这个错误- System.BadImageFormatException

  1. 最后一件事,一旦我从命令行启动Jenkins并登录到应用程序,我注意到以下Jenkins系统日志:

代码语言:javascript
复制
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

有什么建议,如何让服务开始通过服务经理?

EN

Stack Overflow用户

回答已采纳

发布于 2021-02-17 15:53:14

服务正在启动和停止,没有问题。

我怀疑的问题是Jenkins的原始安装非常陈旧,我推测它当时可能是32位的应用程序。目前的更新似乎是64位应用程序。自最初安装以来,Jenkins进行了更新--更改涉及原始安装的几个主要版本(.war文件更新)。启动服务的jenkins.exe文件从未更新过.

经过大量研究后的错误消息“System.BadImageFormatException”表明,该问题与32/64位可执行文件之间的兼容性差异有关。我猜想它是期待一个64位的可执行文件,但得到一个32位的执行。

为了解决这个问题,我在本地PC上安装了Jenkins的最新版本。

在服务器上,我备份了文件:

  • jenkins.exe
  • jenkins.exe.config

然后,我在服务器上停止了Jenkins,那里没有启动服务(从带有Ctrl+D的终端窗口)。

然后,我用本地安装的最新文件替换了服务器上的这2个文件。

服务是第一次启动。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66241643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档