如何从在Windows上运行的jenkins执行sh文件

时间:2016-03-03 12:47:46

标签: shell jenkins

Cygwin安装在我的窗口中,能够使用cmd提示符执行sh文件。 同样的Cygwin插件已经安装在jenkins中,它也在windows中运行。 我在jenkins构建步骤中创建了一个作业 - >执行shell命令我在执行下面的工作时将命令作为 sh /cygdrive/d/539707/data/getchanges/gymBuild.sh 给出异常。

注1:在Jenkins / configuration / shell下我没有提到任何路径

  

工作区] $ sh -xe   D:\ 539707 \ tomcat-7.0.12 \ temp \ hudson4624102689815543789.sh致命:   命令执行失败java.io.IOException:无法运行程序" sh"   (在目录" C:\ Users \ 539707.jenkins \ jobs \ Test_Gym \ workspace"):   CreateProcess error = 2,系统找不到指定的文件   java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)at   hudson.Proc $ LocalProc。(Proc.java:244)at   hudson.Proc $ LocalProc。(Proc.java:216)at   hudson.Launcher $ LocalLauncher.launch(Launcher.java:815)at   hudson.plugins.cygpath.CygpathLauncherDecorator $ 1.launch(CygpathLauncherDecorator.java:66)     在hudson.Launcher $ ProcStarter.start(Launcher.java:381)at   hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:95)     在   hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:64)     在hudson.tasks.BuildStepMonitor $ 1.perform(BuildStepMonitor.java:20)     在   hudson.model.AbstractBuild $ AbstractBuildExecution.perform(AbstractBuild.java:782)     在hudson.model.Build $ BuildExecution.build(Build.java:205)at   hudson.model.Build $ BuildExecution.doRun(Build.java:162)at   hudson.model.AbstractBuild $ AbstractBuildExecution.run(AbstractBuild.java:534)     在hudson.model.Run.execute(Run.java:1738)at   hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)at at   hudson.model.ResourceController.execute(ResourceController.java:98)     在hudson.model.Executor.run(Executor.java:410)引起:   java.io.IOException:CreateProcess error = 2,系统找不到   在java.lang.ProcessImpl.create(Native Method)中指定的文件   java.lang.ProcessImpl。(ProcessImpl.java:385)at   java.lang.ProcessImpl.start(ProcessImpl.java:136)at   java.lang.ProcessBuilder.start(ProcessBuilder.java:1028)......还有16个   构建步骤'执行shell'将构建标记为失败

     

完成:失败

注2:在Jenkins / configuration / shell下我提到C:\ cygwin \ bin \ mintty.exe

以下是输出

  

$ C:\ cygwin \ bin \ cygpath -w C:\ cygwin \ bin \ mintty.exe [workspace] $   C:\ cygwin \ bin \ mintty.exe -xe   d:\ 539707 \ Tomcat的7.0.12 \ TEMP \ hudson4745164988293910592.sh   / usr / bin / mintty:未知选项' -x'试试' - 帮助'更多   信息。构建步骤'执行shell'将构建标记为失败

     

完成:失败

请建议如何从在Windows上运行的jenkins执行sh文件

2 个答案:

答案 0 :(得分:1)

对于每个Windows slave,您可以执行以下操作,将cygwin添加到路径,假设您的slave已经安装了cygwin

  • Jenkins - 管理Jenkins - 管理节点
  • node - 配置
  • 环境变量:键值对列表
  • add:name:PATH value:$ {PATH}; path-to-cygwin \ bin

,例如:名称:PATH值:$ {PATH}; d:\ tools \ cygwin \ bin

答案 1 :(得分:0)

这里是解决方案:shell可执行路径到cygwin_home \ bin \ sh和jenkins构建步骤 - >执行shell命令给出文件名ex * .sh或清除Shell可执行路径并在jenkins构建步骤 - >执行windows批处理命令sh path * .sh