6

我们想使用 jenkins 在 Windows 2012 R2 x64 上构建一些特定的软件。但是当我尝试运行它时,主节点失败并出现此错误:

Connecting to 192.168.1.27
Checking if Java exists
C:\Program Files\Java\jdk1.6.0_30\bin\java.exe -version returned 1.6.0.
Installing the Jenkins slave service
ERROR: Message not found for errorCode: 0xC00000AC
org.jinterop.dcom.common.JIException: Message not found for errorCode: 0xC00000AC
    at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKLM(JIWinRegStub.java:102)
    at hudson.util.jna.DotNet.isInstalled(DotNet.java:77)
    at hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:292)
    at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:222)
    at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:701)
Caused by: jcifs.smb.SmbException: All pipe instances are busy.
    at jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:563)
    at jcifs.smb.SmbTransport.send(SmbTransport.java:664)
    at jcifs.smb.SmbSession.send(SmbSession.java:238)
    at jcifs.smb.SmbTree.send(SmbTree.java:119)
    at jcifs.smb.SmbFile.send(SmbFile.java:775)
    at jcifs.smb.SmbFile.open0(SmbFile.java:989)
    at jcifs.smb.SmbFile.open(SmbFile.java:1006)
    at jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:142)
    at jcifs.smb.TransactNamedPipeOutputStream.<init>(TransactNamedPipeOutputStream.java:32)
    at jcifs.smb.SmbNamedPipe.getNamedPipeOutputStream(SmbNamedPipe.java:187)
    at rpc.ncacn_np.RpcTransport.attach(RpcTransport.java:91)
    at rpc.Stub.attach(Stub.java:104)
    at rpc.Stub.call(Stub.java:109)
    at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKLM(JIWinRegStub.java:100)

而且我不知道出了什么问题。

是的,我已经仔细阅读了这篇文章。

更新。好的。我从域中删除了服务器。现在詹金斯说:

连接到 192.168.1.27
    检查Java是否存在
    C:\Program Files\Java\jdk1.6.0_30\bin\java.exe -版本返回 1.6.0。
    安装 Jenkins 从服务
    复制 jenkins-slave.exe
    复制slave.jar
    复制 jenkins-slave.xml
    注册服务
    启动服务
    等待服务准备好
    错误:服务没有响应。也许它未能启动?

在 EventViewer 我看到:

无法启动服务。System.ComponentModel.Win32Exception:系统找不到指定的文件
       在 System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)
       在winsw.WrapperService.StartProcess(进程进程,字符串参数,字符串可执行文件)
       在 winsw.WrapperService.OnStart(String[] _)
       在 System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(对象状态)
4

6 回答 6

10

我在 Windows 2012 R2 x64 上遇到了同样的问题:

    Installing the Jenkins slave service
ERROR: Message not found for errorCode: 0xC00000AC
org.jinterop.dcom.common.JIException: Message not found for errorCode: 0xC00000AC
    at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKLM(JIWinRegStub.java:102)
    at hudson.util.jna.DotNet.isInstalled(DotNet.java:77)
    at hudson.os.windows.ManagedWindowsServiceLauncher.launch(ManagedWindowsServiceLauncher.java:292)
    at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:228)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: jcifs.smb.SmbException: All pipe instances are busy.
    at jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:563)
    at jcifs.smb.SmbTransport.send(SmbTransport.java:664)
    at jcifs.smb.SmbSession.send(SmbSession.java:238)
    at jcifs.smb.SmbTree.send(SmbTree.java:119)
    at jcifs.smb.SmbFile.send(SmbFile.java:775)
    at jcifs.smb.SmbFile.open0(SmbFile.java:989)
    at jcifs.smb.SmbFile.open(SmbFile.java:1006)
    at jcifs.smb.SmbFileOutputStream.<init>(SmbFileOutputStream.java:142)
    at jcifs.smb.TransactNamedPipeOutputStream.<init>(TransactNamedPipeOutputStream.java:32)
    at jcifs.smb.SmbNamedPipe.getNamedPipeOutputStream(SmbNamedPipe.java:187)
    at rpc.ncacn_np.RpcTransport.attach(RpcTransport.java:91)
    at rpc.Stub.attach(Stub.java:104)
    at rpc.Stub.call(Stub.java:109)
    at org.jinterop.winreg.smb.JIWinRegStub.winreg_OpenHKLM(JIWinRegStub.java:100)
    ... 7 more

并且发现,作为服务运行的詹金斯奴隶需要安装.net 3.x(默认情况下在win2012服务器上不是)。

在安装了 3.5 .net 框架后,jenkins 从服务安装没有问题(并且服务器仍然在域中)。

为了避免像我一样在安装 3.5 框架时遇到问题,请参考这个 SO 答案:Offline installer for .Net 3.5 SP1 not working (禁用 WSUS 帮助我完成安装)

于 2014-08-22T12:25:16.973 回答
4

我有这个问题:

无法启动服务。System.ComponentModel.Win32Exception: 系统在 winsw.WrapperService.StartProcess(Process process, String arguments, String executable) at winsw.WrapperService.OnStart(String[ ] _) 在 System.ServiceProcess.ServiceBase.ServiceQueuedMainCallback(对象状态)

当我将路径更改为 java 可执行文件时,问题就消失了:

C:\ProgramData\Oracle\Java\javapath\javaw

C:\ProgramData\Oracle\Java\javapath\java

我认为 'w' 无论如何都是由 JENKINS 附加的。

于 2015-07-22T14:08:57.267 回答
1

我有一个 Windows 8 从站,它确实可以工作。Java 路径很可能不正确,我的设置为C:\Program Files (x86)\Java\jre7\bin\java(是的,没有 .exe 或任何东西,如果你想只调整Program (x86) Files 部分在 Jenkins 中使用 x64 版本)。我也有远程根设置(到C:\jenkins),并且我有一个环境变量HOME设置为C:\jenkins\(是的,一个带有\而另一个没有),但这只是为了方便找到安装后的文件。

我的奴隶工作,出现在网上,然后过一段时间(主要是空闲)会出现连接问题。断开连接和重新连接有时会出现“所有管道实例都忙”错误,在这种情况下,我只需要启动从属代理几次。在尝试解决该特定问题时发现了您的问题...

于 2014-08-07T00:50:17.317 回答
0

首先,您可以转到从机,转到 Jenkins -> 管理 -> 管理节点并选择从机并通过 java web start 启动。

通过这样做,您将下载一个 .jnlp 文件并使用您配置的 java 启动它。

确保您已在系统变量“PATH”(版本 1.6 或更高版本)中配置了 javaws.exe 的路径。

它将启动一个窗口并显示为“已连接”。现在您可以单击“文件”并作为服务安装。

如果机器没有 .NET 3.x,这将失败给您一个例外,因此请确保您已安装它,然后再试一次。

这很干净,没有任何问题。希望这可以帮助。

于 2014-08-11T14:31:51.040 回答
0

我遇到了类似的问题,当尝试从 master(jenkins)运行从属(agent)时,在进行如下配置更改后它运行良好,

需要在代理节点->配置中添加以下设置。

JVM 选项 -Djsse.enableSNIExtension=false

在 Jenkins->Agent 节点,用于 windows server 2012 slave 配置

于 2019-08-08T18:43:27.730 回答
0

对我来说,这个问题是通过卸载旧的 java 解决的。

于 2015-08-20T13:19:30.003 回答