1

我编写了以下 ant 目标以从 GitHub 存储库中获取代码。

<target name="fetch" description="Fetching the Source Code">
  <echo message="-------------------------------------------------------------"/>
  <echo message="Fetching Latest from ${build.git.organization}/${build.git.repository} ${build.git.branch}"/>  
  <echo message="-------------------------------------------------------------"/>
  <exec executable="git" dir="${build.source.location}\${build.git.repository}" failonerror="true">
      <arg line="fetch ${build.git.organization}/${build.git.repository} ${build.git.branch}"/>
  </exec>
</target>

当我从命令提示符运行它时,目标工作正常。但是,当我尝试从 Jenkins 运行它时,它会失败并出现以下错误:

BUILD FAILED C:\Users\PJai12\test\build.xml:66: Execute failed: java.io.IOException: Cannot run program "git": CreateProcess error=2, 系统找不到 java.lang 指定的文件。 ProcessBuilder.start(ProcessBuilder.java:1048) at java.lang.Runtime.exec(Runtime.java:620) at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58) at org .apache.tools.ant.taskdefs.Execute.launch(Execute.java:428) 在 org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:442) 在 org.apache.tools.ant.taskdefs .ExecTask.runExecute(ExecTask.java:629) 在 org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:670) 在 org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java :496) 在 org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293) 在太阳。reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke( Method.java:498) 在 org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 在 org.apache.tools.ant.Task.perform(Task.java:348) 在 org.apache .tools.ant.Target.execute(Target.java:435) 在 org.apache.tools.ant.Target.performTasks(Target.java:456) 在 org.apache.tools.ant.Project.executeSortedTargets(Project.java :1405) 在 org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) 在 org.apache.tools 的 org.apache.tools.ant.Project.executeTarget(Project.java:1376)。 ant.Project.executeTargets(项目。java:1260) 在 org.apache.tools.ant.Main.runBuild(Main.java:853) 在 org.apache.tools.ant.Main.startAnt(Main.java:235) 在 org.apache.tools.ant .launch.Launcher.run(Launcher.java:285) 在 org.apache.tools.ant.launch.Launcher.main(Launcher.java:112)

为了确保 Jenkins 正确配置了 git 路径和 ssh 凭据,我创建了另一个作业。这项工作只是通过 Jenkins GitHub 插件从同一存储库中轮询 scm。它工作得很好。

这是 Jenkins 中的 GIT 配置:https ://imgur.com/a/noFJ9M4

4

1 回答 1

1

可执行文件应具有 Git 可执行文件的完整路径。

<exec executable="PATH_TO_GIT_EXE" dir="${build.source.location}\${build.git.repository}" failonerror="true">
于 2019-01-22T04:07:15.227 回答