簡體   English   中英

Jenkins無法在Windows Slave上啟動進程

[英]Jenkins cannot start process on Windows Slave

在Windows從屬上運行的Jenkins構建在構建開始時會引發以下錯誤:

   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.exe的完整路徑2.在PATH變量中指定TF.exe的路徑3.設置PATH =。 在構建過程的初始階段。4.設置CLASSPATH =。 在構建過程的初始階段5.設置CLASSPATH =。 作為從站上的環境變量。

詹金斯從服務用戶可以在任何目錄下解析TF.exe,因此這不是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)

“在任何目錄下,Jenkins Slave服務用戶都可以解析TF.exe,因此這不是TF.exe路徑的問題”

您還沒有完全理解詹金斯的工作原理。 實際上,唯一可以理解的env變量是全局變量,而沒有考慮使用用戶變量進行全新構建。

Jenkins中沒有任何魔力。您應該嘗試將PATH設置為構建階段, 重新啟動 slave,然后運行任務。

給遇到此問題的任何人的另一個提示:
jenkins插件存在一些已知問題導致此問題。
例如參見JENKINS-22183JENKINS-45128JENKINS-33159 ...

或嘗試詹金斯問題搜索

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM