当前位置: 首页 > 知识库问答 >
问题:

Jenkins无法在Windows Slave上启动进程

高兴贤
2023-03-14

Jenkins构建在Windows从机上运行会在构建开始时抛出以下错误:

   Java.io.IOException: Cannot run program "tf" (in directory "c:\Jenkins\workspace\ProjectName-WindowsPhone"): CreateProcess error=87, The parameter is incorrect
    at java.lang.ProcessBuilder.start(Unknown Source)

我试过的:1。指定TF的完整路径。执行2。指定TF的路径。路径变量3中的exe。设置路径=。在构建过程初始阶段4。设置类路径=。在构建过程初始阶段5。设置类路径=。作为从机上的环境变量。

TF。exe是在Jenkins Slave service user下的任何目录下解析的,因此它不是TF的路径问题。exe文件

感谢您对使用Windows Slave和TFS配置Jenkins的任何帮助或想法。

完整的错误日志如下(是的,它Java堆栈跟踪;))

     $ tf workspaces -format:brief -server:https://cloudtfsname.visualstudio.com/DefaultCollection/ ********
    java.io.IOException: Cannot run program "tf" (in directory "c:\Jenkins\workspace\ProjectName-WindowsPhone"): CreateProcess error=87, The parameter is incorrect
        at java.lang.ProcessBuilder.start(Unknown Source)
        at hudson.Proc$LocalProc.<init>(Proc.java:244)
        at hudson.Proc$LocalProc.<init>(Proc.java:216)
        at hudson.Launcher$LocalLauncher.launch(Launcher.java:803)
        at hudson.Launcher$ProcStarter.start(Launcher.java:381)
        at hudson.Launcher$RemoteLaunchCallable.call(Launcher.java:1136)
        at hudson.Launcher$RemoteLaunchCallable.call(Launcher.java:1101)
        at hudson.remoting.UserRequest.perform(UserRequest.java:118)
        at hudson.remoting.UserRequest.perform(UserRequest.java:48)
        at hudson.remoting.Request$2.run(Request.java:328)
        at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at hudson.remoting.Engine$1$1.run(Engine.java:63)
        at java.lang.Thread.run(Unknown Source)
        at ......remote call to WindowsSlave(Native Method)
        at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1356)
        at hudson.remoting.UserResponse.retrieve(UserRequest.java:221)
        at hudson.remoting.Channel.call(Channel.java:752)
        at hudson.Launcher$RemoteLauncher.launch(Launcher.java:916)
        at hudson.Launcher$ProcStarter.start(Launcher.java:381)
        at hudson.plugins.tfs.TfTool.execute(TfTool.java:99)
        at hudson.plugins.tfs.model.Server.execute(Server.java:120)
        at hudson.plugins.tfs.model.Workspaces.getListFromServer(Workspaces.java:38)
        at hudson.plugins.tfs.model.Workspaces.populateMapFromServer(Workspaces.java:50)
        at hudson.plugins.tfs.model.Workspaces.exists(Workspaces.java:76)
        at hudson.plugins.tfs.actions.CheckoutAction.checkout(CheckoutAction.java:36)
        at hudson.plugins.tfs.TeamFoundationServerScm.checkout(TeamFoundationServerScm.java:176)
        at hudson.model.AbstractProject.checkout(AbstractProject.java:1270)
        at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:609)
        at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
        at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:531)
        at hudson.model.Run.execute(Run.java:1750)
        at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
        at hudson.model.ResourceController.execute(ResourceController.java:89)
        at hudson.model.Executor.run(Executor.java:240)
    Caused by: java.io.IOException: CreateProcess error=87, The parameter is incorrect
        at java.lang.ProcessImpl.create(Native Method)
        at java.lang.ProcessImpl.<init>(Unknown Source)
        at java.lang.ProcessImpl.start(Unknown Source)
        at java.lang.ProcessBuilder.start(Unknown Source)
        at hudson.Proc$LocalProc.<init>(Proc.java:244)
        at hudson.Proc$LocalProc.<init>(Proc.java:216)
        at hudson.Launcher$LocalLauncher.launch(Launcher.java:803)
        at hudson.Launcher$ProcStarter.start(Launcher.java:381)
        at hudson.Launcher$RemoteLaunchCallable.call(Launcher.java:1136)
        at hudson.Launcher$RemoteLaunchCallable.call(Launcher.java:1101)
        at hudson.remoting.UserRequest.perform(UserRequest.java:118)
        at hudson.remoting.UserRequest.perform(UserRequest.java:48)
        at hudson.remoting.Request$2.run(Request.java:328)
        at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
        at java.util.concurrent.FutureTask.run(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at hudson.remoting.Engine$1$1.run(Engine.java:63)
        at java.lang.Thread.run(Unknown Source)

共有2个答案

慕光赫
2023-03-14

对于遇到这种情况的人,另一个提示是:jenkins插件存在一些已知问题导致了这种情况<例如,见JENKINS-22183、JENKINS-45128或JENKINS-33159。。。

或者试试詹金斯问题搜索

雷献
2023-03-14

“TF. exe在任何目录下的Jenkins Slave服务用户下解析,因此不是TF. exe路径问题”

你还没有完全理解詹金斯的工作原理。事实上,唯一被理解的env变量是全局变量,而用户变量不考虑用于干净的构建。

Jenkins没有任何魔力,你应该尝试将路径设置为构建阶段,重新启动slave,然后运行任务。

 类似资料:
  • 问题内容: 将我的macOS升级到Sierra之后,当我使用launchctl load启动Jenkins时,我无法连接到localhost:8080。如果再次调用launchctl load,则会看到响应“服务已加载”。默认位置/ var / log / jenkins /(在jenkins- ci.plist中设置)没有日志文件。我还尝试在那里创建jenkins.log并将其添加给jenkin

  • 问题内容: 我正在尝试使用以下方法启动Jenkins: 我收到此错误: 更新我的开发环境后,出现了这个问题,我切换到: Java 10.0.1 + 10 Jenkins2.107.2 MacOS 10.13.4 问题答案: 根据收到的错误消息: 所加载的JAR / WAR文件是针对Java 10(及更高版本)编译的,因为该消息表明类文件版本为54。 实际使用的JRE是Java 9或更早版本。如果您

  • 我让詹金斯在一台苹果迷你电脑上运行。我最近添加了一个外部硬盘,并将我的詹金斯数据转移到其中。到目前为止还不错。一切正常。但是昨天我更新了卡特琳娜,现在詹金斯不会首发。如果我将数据移回mac mini硬盘,它将毫无问题地启动。我想这是一个权利问题,但似乎我拥有所有必要的权利。 有人能帮忙吗? 一些信息…-在mac mini上,只有一个用户:OLAV-Jenkins使用~/Library/Launch

  • 问题内容: 我正在使用Jenkins,从昨天开始它已经停止工作。我看着Windows服务,它已被停止(以某种方式)。我重新启动了它,但此后它立即停止了。 我查看了从(C:\ Program Files \ Jenkins)运行服务的目录,并在其中打开了名为jenkins.out.log的日志文件。这就是它的意思 问题答案: 已修复- 适用于将来可能会遇到此问题的其他任何人。我用了这篇Techrep

  • 问题内容: 升级后去运行jenkins,并获得以下信息: 就是这样…詹金的日志中什么也没有显示…所以很难说很难调试。(它还没有运行,或者类似的东西)。 我应该在其他地方查看另一个日志会有所帮助吗?(我假设对这个问题的回答将是反复的,所以希望有人可以在调试它的道路上开始我的工作) 问题答案: 因此,知道这是一个启动前错误,使我可以进行更深入的研究。 进一步的挖掘使我发现文件中的确切行是指向 看着这个

  • 我无法启动詹金斯。Windows 10上的战争。尝试使用多个端口,但对于每个端口,获取错误“地址已在使用中:绑定” 我已经从官方网站下载了詹金斯战争,然后在本地启动服务器。 完整错误跟踪: 尝试下面的查询(一个例子)java-jarjenkins.war-http pPort=9090 我已经检查过了,我在上面的查询中使用的所有端口都是免费的。使用检查可用端口