macos - 如何在 Mac 上设置 Jenkins 从代理以使用 Plastic 检索文件?
问题描述
我有一个在 Ubuntu 上运行的 Jenkins 服务器;资源在 Plastic 上,而且我已经有一个 Windows 从站制作 Android 版本,所以 Plastic 服务器对 Jenkins 的响应很好。
我尝试在 Mac 上为 IOS 构建项目,但是在获取带有 java 异常的源时工作失败
java.io.IOException: error=2, 没有这样的文件或目录
我试图删除该作业的源代码控制并运行一些命令,例如:
cm status
它失败了,所以我更新了 PATH 环境变量以使其工作。现在手动命令可以了,但自动塑料拉力仍然不行。
我使用选择器将作业配置为使用PlasticSCM 插件从中提取:
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)
解决方案
我认为问题可能与以下 Jenkins 错误有关: https ://issues.jenkins-ci.org/browse/JENKINS-17157 (环境变量未使用 cygwin 在 ssh 中加载)
如果您的从服务器通过 SSH 连接到您的 Jenkins 服务器,则环境变量会丢失,因此您无法运行“cm”命令。以下链接可能有用:(https://support.cloudbees.com/hc/en-us/articles/229724088-How-to-set-up-a-Jenkins-agent-to-have-the-same-通过远程桌面连接时作为用户的路径)
过去,我们尝试通过“Java Web Start”(而不是通过 SSH)连接从站,但我们无法通过丢失的 PATH 变量重现此问题(仅在通过 SSH 连接时才会发生)。
在 macOS 上: - 正在运行:例如:
sudo java -jar agent.jar -jnlpUrl http://MySERVER84/computer/macOsJava/slave-agent.jnlp -secret f5dcf86e0ceed3f22c08bc27fa07d680aff3e11c25452677af4fee218bcfb1aa -workDir "/tmp"
推荐阅读
- python - Ubuntu Python Homebrew 没有名为“_tkinter”的模块
- javascript - 如何在离子中换行?
- java - Firestore addOnCompleteListener()在Android应用程序中不起作用
- android - 为什么我的 FAB 动画使用 Material BottomAppBar 超出屏幕?
- javascript - Java Discord.js Modmail 系统的问题
- bash - 小于运算符的行为与 BASH 中的 -le 有何不同?
- php - 2021 年初日期的 PHP 日期错误
- angular - 是否可以使用 Angular Material 组件自定义 Okta 登录小部件?
- javascript - 根据数组从对象返回值数组
- jquery - CKEditor setData() 不使用模态表单