Дженкинс не может запустить процесс на Windows Slave

1

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.exe 2. указать путь к TF.exe в переменной PATH 3. установить PATH =. на этапе инициализации процесса сборки 4. настройки CLASSPATH =. на этапе инициализации процесса сборки CLEPSPATH =. как переменная среды на подчиненном устройстве.

TF.exe разрешен при обслуживании пользователя Jenkins Slave в любом каталоге, поэтому это не проблема пути к TF.exe

Оцените любую помощь или мысли по настройке Jenkins с Windows Slave и TFS.

Полный журнал ошибок ниже (да, это трассировка стека 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
classpath

2 ответа

0

другой намек для всех, кто сталкивается с этим:
есть некоторые известные проблемы с плагинами jenkins, вызывающими это.
см. JENKINS-22183, JENKINS -45128 или JENKINS-33159, например...

или попробуйте поискать Jenkins

0

"TF.exe разрешен при обслуживании пользователя Jenkins Slave в любой директории, поэтому это не проблема пути к TF.exe".

Вы не совсем понимаете, как работают дженкинсы. Фактически единственные переменные env, которые понимаются, являются глобальными, и пользователь не рассматривается для чистых сборок.

В Jenkins нет никакой магии. Вы должны были попытаться установить PATH как этап сборки, ведомый RESTART и затем запустить задачу.

  • 0
    Я настраивал глобальную переменную PATH. Это означает, что для любого пользователя в этой системе в любой папке и при любых обстоятельствах файл tf.exe будет разрешен и доступен для выполнения.
  • 0
    Пожалуйста, распечатайте переменную PATH как задание jenkins и вставьте ее здесь.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню