Как настроить подчиненный агент Jenkins на Mac для удаления файлов с помощью Plastic? - PullRequest
0 голосов
/ 27 мая 2019

У меня есть сервер Jenkins, работающий в Ubuntu;исходники находятся на Plastic, и у меня уже есть ведомое устройство Windows, создающее сборки Android, поэтому сервер Plastic хорошо реагирует на Jenkins.

Я пытаюсь построить проект для IOS на Mac, но работа не получается при получении исходников сисключение java java.io.IOException: error=2, No such file or directory.

Я попытался удалить исходный элемент управления для задания и просто запустил несколько команд, таких как:

cm status

Не удалось, поэтому яобновил переменную среды PATH, чтобы она работала.Теперь это нормально для ручных команд, но все же не для автоматического извлечения пластика.

Я настроил задание на извлечение из него с помощью PlasticSCM Plugin с помощью селектора:

repository "MyRepo"
  path "/"
    smartbranch "/My/Branch"

Вот полная ошибка:

[test-mac] $ cm find changeset where date between '2019-05-27T11:14:36' and '2019-05-27T11:15:43' and branch='/My/Branch' on repositories 'MyRepo' --xml --dateformat=yyyy'-'MM'-'dd'T'HH':'mm':'ss
java.io.IOException: error=2, No such file or directory
    at java.lang.UNIXProcess.forkAndExec(Native Method)
    at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
    at java.lang.ProcessImpl.start(ProcessImpl.java:134)
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
Also:   hudson.remoting.Channel$CallSiteStackTrace: Remote call to JNLP4-connect connection from 192.168.1.46/192.168.1.46:49336
        at hudson.remoting.Channel.attachCallSiteStackTrace(Channel.java:1743)
        at hudson.remoting.UserRequest$ExceptionResponse.retrieve(UserRequest.java:357)
        at hudson.remoting.Channel.call(Channel.java:957)
        at hudson.Launcher$RemoteLauncher.launch(Launcher.java:1059)
        at hudson.Launcher$ProcStarter.start(Launcher.java:455)
        at com.codicesoftware.plugins.hudson.PlasticTool.tryExecute(PlasticTool.java:97)
        at com.codicesoftware.plugins.hudson.PlasticTool.execute(PlasticTool.java:57)
        at com.codicesoftware.plugins.hudson.commands.CommandRunner.execute(CommandRunner.java:20)
        at com.codicesoftware.plugins.hudson.commands.CommandRunner.executeAndRead(CommandRunner.java:36)
        at com.codicesoftware.plugins.hudson.commands.CommandRunner.executeAndRead(CommandRunner.java:25)
        at com.codicesoftware.plugins.hudson.commands.ChangesetsRetriever.getChangesets(ChangesetsRetriever.java:27)
        at com.codicesoftware.plugins.hudson.commands.ChangesetsRetriever.getDetailedHistory(ChangesetsRetriever.java:36)
        at com.codicesoftware.plugins.hudson.PlasticSCM.FindCsets(PlasticSCM.java:363)
        at com.codicesoftware.plugins.hudson.PlasticSCM.SetUpWorkspace(PlasticSCM.java:175)
        at com.codicesoftware.plugins.hudson.PlasticSCM.checkout(PlasticSCM.java:141)
        at hudson.scm.SCM.checkout(SCM.java:504)
        at hudson.model.AbstractProject.checkout(AbstractProject.java:1208)
        at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:574)
        at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
        at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:499)
        at hudson.model.Run.execute(Run.java:1816)
        at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
        at hudson.model.ResourceController.execute(ResourceController.java:97)
        at hudson.model.Executor.run(Executor.java:429)
Caused: java.io.IOException: Cannot run program "cm" (in directory "/Users/MyUser/Jenkins/workspace/test-mac"): error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at hudson.Proc$LocalProc.<init>(Proc.java:249)
    at hudson.Proc$LocalProc.<init>(Proc.java:218)
    at hudson.Launcher$LocalLauncher.launch(Launcher.java:936)
    at hudson.Launcher$ProcStarter.start(Launcher.java:455)
    at hudson.Launcher$RemoteLaunchCallable.call(Launcher.java:1313)
    at hudson.Launcher$RemoteLaunchCallable.call(Launcher.java:1266)
    at hudson.remoting.UserRequest.perform(UserRequest.java:212)
    at hudson.remoting.UserRequest.perform(UserRequest.java:54)
    at hudson.remoting.Request$2.run(Request.java:369)
    at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at hudson.remoting.Engine$1.lambda$newThread$0(Engine.java:93)
    at java.lang.Thread.run(Thread.java:748)

1 Ответ

0 голосов
/ 30 мая 2019

Я думаю, что проблема может быть связана со следующей ошибкой Дженкинса: https://issues.jenkins -ci.org / browse / JENKINS-17157 (переменные среды не загружаются в ssh с использованием cygwin)

Если подчиненное устройство подключается через SSH к вашему серверу Jenkins, переменные среды теряются, поэтому вы не можете запускать команды "cm".Следующая ссылка может быть полезна: (https://support.cloudbees.com/hc/en-us/articles/229724088-How-to-set-up-a-Jenkins-agent-to-have-the-same-path-as-the-user-when-connected-via-Remote-Desktop-)

В прошлом мы пытались подключить подчиненное устройство через "Java Web Start" (не через SSH), и нам не удалось воспроизвести эту проблему с потеряннымПеременная PATH (это происходит только при подключении через SSH).

на macOS: - работает: например:

sudo java -jar agent.jar -jnlpUrl http://MySERVER84/computer/macOsJava/slave-agent.jnlp -secret f5dcf86e0ceed3f22c08bc27fa07d680aff3e11c25452677af4fee218bcfb1aa -workDir "/tmp"
...