目录
场景再现:
1、系统环境:
wins安装Jenkins,连接Linux系统;
2、操作任务:
在Jenkins上输入Linux系统上的ifconfig命令,连接Linux成功后,返回Linux系统的IP;
3、Jenkins中有2个节点
(一个连接wins,另一个连接Linux);
4、错误信息:
Started by user admin
Running as SYSTEM
Building on master in workspace G:\SoftWare\Jenkins\workspace\Test
[Test] $ sh -xe C:\WINDOWS\TEMP\jenkins934292951794938413.sh
The system cannot find the file specified
FATAL: command execution failed
java.io.IOException: CreateProcess error=2, 系统找不到指定的文件。
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
Caused: java.io.IOException: Cannot run program "sh" (in directory "G:\SoftWare\Jenkins\workspace\Test"): CreateProcess error=2, 系统找不到指定的文件。
at java.lang.ProcessBuilder.start(Unknown Source)
at hudson.Proc$LocalProc.<init>(Proc.java:250)
at hudson.Proc$LocalProc.<init>(Proc.java:219)
at hudson.Launcher$LocalLauncher.launch(Launcher.java:937)
at hudson.Launcher$ProcStarter.start(Launcher.java:455)
at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:109)
at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:66)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:741)
at hudson.model.Build$BuildExecution.build(Build.java:206)
at hudson.model.Build$BuildExecution.doRun(Build.java:163)
at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:504)
at hudson.model.Run.execute(Run.java:1818)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:429)
Build step 'Execute shell' marked build as failure
Finished: FAILURE
翻译过来就是:Linux命令“ifconfig”不能在wins中执行。
5、原因查找
5-1、Jenkins节点截图
5-2、第一个节点:master节点配置信息
之前默认选择红色箭头指示的“尽可能使用这个节点”
5-3、第2个节点:
TestEnv节点配置信息和master节点配置一样,也是选择红色箭头指示的“尽可能使用这个节点”
5-4、问题暴露:
同样都选择同一个选项,系统会默认执行master配置。现在我想要使用第二个节点的配置(因为它才是我要连接的Linux系统)。
6、问题解决
将第一个节点master配置信息“用法”改为“only build ...”这个选项,要使用的TestEnv节点配置信息选择“use this ode ...”!
7、其他补充(不同版本解决问题可能不一样)
因为Jenkins版本不同,有的版本在创建job 任务时,可以选择运行环境,如图:
这种情况直接在下面的红框中勾选“Restrict where...”,在“label Expression”中输入自己想要运行的节点名称即可。