Я написал следующую цель для извлечения кода из репозитория 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: Ошибка выполнения:
java.io.IOException: не удается запустить программу "git": ошибка CreateProcess = 2,
Система не может найти файл, указанный в
java.lang.ProcessBuilder.start (ProcessBuilder.java:1048) в
java.lang.Runtime.exec (Runtime.java:620) в
org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec (Java13CommandLauncher.java:58)
в 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)
в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в
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.Project.executeTarget (Project.java:1376) в
org.apache.tools.ant.helper.DefaultExecutor.executeTargets (DefaultExecutor.java:41)
в org.apache.tools.ant.Project.executeTargets (Project.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 path и ssh credentails, я создал другую работу. Задание просто опрашивает scm из того же хранилища через плагин Jenkins GitHub. Работало нормально.
Вот конфигурация GIT в Jenkins: https://imgur.com/a/noFJ9M4