Укажите команды git в плагине Jenkins Git
Я написал следующую цель для извлечения кода из репозитория 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) или.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.execuk (Exec):496) в org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293) в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethoIto) sun.reflect.DelegatingMethodAccessorImpl.invoke(Делегирование MethodAccessorImpl.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
1 ответ
Исполняемый файл должен иметь полный путь к исполняемому файлу Git.
<exec executable="PATH_TO_GIT_EXE" dir="${build.source.location}\${build.git.repository}" failonerror="true">