0

我正在尝试在执行 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)

请看这个问题。

4

2 回答 2

1

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

于 2012-05-22T20:58:35.157 回答
0

回答这个问题:实际上我还没有在 Jenkins 中安装 Windows 作为服务。因此,为此我们需要转到“管理 Jenkins”,然后单击“Windows 即服务”。即,将 Jenkins 安装为 Windows 服务。

于 2012-05-25T09:08:41.673 回答