如何在jenkins中的Windows批处理命令中运行命令

时间:2012-05-22 06:58:30

标签: batch-file hudson jenkins

我正在尝试在执行Windows批处理命令中运行命令的构建步骤中在Jenkins中运行命令。

我写了dir作为命令运行

当作业在Jenkins中运行时,由于出现错误后文件内容发生变化而触发

[FSTrigger] Triggered by a change to a file (<a href="triggerCauseAction">log</a>)
Building in workspace C:\Users\Pankaj\.jenkins\jobs\convert File to text form\workspace
FATAL: null
java.util.NoSuchElementException
at java.util.TreeMap$PrivateEntryIterator.nextEntry(Unknown Source)
at java.util.TreeMap$EntryIterator.next(Unknown Source)
at java.util.TreeMap$EntryIterator.next(Unknown Source)
at java.util.TreeMap.buildFromSorted(Unknown Source)
at java.util.TreeMap.buildFromSorted(Unknown Source)
at java.util.TreeMap.buildFromSorted(Unknown Source)
at java.util.TreeMap.buildFromSorted(Unknown Source)
at java.util.TreeMap.buildFromSorted(Unknown Source)
at java.util.TreeMap.buildFromSorted(Unknown Source)
at java.util.TreeMap.putAll(Unknown Source)
at hudson.EnvVars.<init>(EnvVars.java:82)
at hudson.EnvVars$GetEnvVars.call(EnvVars.java:207)
at hudson.EnvVars$GetEnvVars.call(EnvVars.java:205)
at hudson.remoting.LocalChannel.call(LocalChannel.java:45)
at hudson.EnvVars.getRemote(EnvVars.java:202)
at hudson.model.Computer.getEnvironment(Computer.java:837)
at hudson.model.Run.getEnvironment(Run.java:1883)
at hudson.model.AbstractBuild.getEnvironment(AbstractBuild.java:836)
at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:75)
at hudson.tasks.CommandInterpreter.perform(CommandInterpreter.java:58)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:19)
at hudson.model.AbstractBuild$AbstractRunner.perform(AbstractBuild.java:710)
at hudson.model.Build$RunnerImpl.build(Build.java:178)
at hudson.model.Build$RunnerImpl.doRun(Build.java:139)
at hudson.model.AbstractBuild$AbstractRunner.run(AbstractBuild.java:480)
at hudson.model.Run.run(Run.java:1434)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:46)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:239)

请参阅此问题。

2 个答案:

答案 0 :(得分:1)

我认为您不需要将Jenkins安装为Windows服务来执行批处理命令作为构建步骤。可能存在的问题是,在Windows上,dir等命令是命令解释程序的内部命令(即cmd.exe)。简而言之,这意味着在Java程序中,您不能简单地使用dir方法运行内部java.lang.Runtime.exec("dir")命令,因为没有dir.exe这样的程序(在{{1}上) })。您应该做的是执行命令解释器本身并将内部命令指定为参数,即PATH。 说到并且知道Jenkins是一个Java应用程序,最好使用java.lang.Runtime.exec("cmd /C dir")而不是在Jenkins的作业配置中键入cmd /C dir。在内部,Jenkins可能会使用一些第三个pary库来执行外部进程,例如Apache Commons Exec(请参阅http://commons.apache.org/exec/),它隐藏了内部命令和“普通”命令之间的细节,但根据我的经验,它不是所有版本的情况 - 尤其是旧版本。

答案 1 :(得分:0)

回答这个问题: 实际上我还没有在Jenkins中安装Windows作为服务。因此,我们需要去管理Jenkins&#34;然后单击&#34; windows作为服务&#34; .I.e将Jenkins安装为Windows服务。