Почему я получаю BUILD SUCCESSFUL, когда у меня была ошибка?
Я экспериментирую с Дженкинсом и Муравьем. Я хотел бы просто запустить мой Makefile, который выполняет все, сборку и тесты.
Я понял, что лучше всего использовать Ant, потому что я становлюсь гибким с процессом сборки, аналогичным travis.yml
,
К сожалению, используемый мной компилятор существует только в Windows, поэтому я установил Jenkins в Windows. Я написал это build.xml
<?xml version="1.0"?>
<project name="Hello World Project" default="info">
<target name="info">
<echo>Hello World - Welcome to Apache Ant!</echo>
<exec executable="make"/>
</target>
</project>
И вывод, который я получаю, таков:
C:\Program Files (x86)\Jenkins\workspace\test>exit 0
[test] $ cmd.exe /C "ant.bat info && exit %%ERRORLEVEL%%"
Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre1.8.0_131\lib\tools.jar
Buildfile: C:\Program Files (x86)\Jenkins\workspace\test\build.xml
info:
[echo] Hello World - Welcome to Apache Ant!
[exec] rm -f test_*.s
[exec] arm-none-eabi-gcc.exe -O2 -Wall -S -c test.c -o test_gcc.s
[exec] make: arm-none-eabi-gcc.exe: Command not found
[exec] make: *** [Makefile:9: test_gcc.s] Error 127
[exec] Result: 2
BUILD SUCCESSFUL
Total time: 0 seconds
Finished: SUCCESS
Почему я получаю BUILD SUCCESSFUL
статус пока я получил ошибку?
NB. Я знаю, что мне нужно настроить PATH для включения набора инструментов. Я хотел бы сначала понять это несоответствие.
1 ответ
Решение
По умолчанию муравьи exec
задача не завершает сборку при возврате кода ошибки. Однако это можно просто включить с помощью failonerror
атрибут:
<exec executable="make" failonerror="true" />