Я недавно обновил Android SDK на компьютере Jenkins до rev15 с rev13, и мне пришлось переделать некоторые из наших пользовательских компонентов сборки в build.xml
, чтобы соответствовать изменениям, внесенным в rev14.Я разработал это на своей рабочей станции и проверил, ожидая, что все будет персиковым.Вместо этого сборка завершается с ошибкой:
-obfuscate:
-dex:
[dex] Converting compiled files and external libraries into /export/home/hudson/jobs/path/to/the/file/classes.dex...
[dx]
[dx] UNEXPECTED TOP-LEVEL EXCEPTION:
[dx] java.util.zip.ZipException: error in opening zip file
[dx] at java.util.zip.ZipFile.open(Native Method)
[dx] at java.util.zip.ZipFile.<init>(ZipFile.java:127)
[dx] at java.util.zip.ZipFile.<init>(ZipFile.java:143)
[dx] at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:206)
[dx] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
[dx] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
[dx] at com.android.dx.command.dexer.Main.processOne(Main.java:418)
[dx] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:329)
[dx] at com.android.dx.command.dexer.Main.run(Main.java:206)
[dx] at com.android.dx.command.dexer.Main.main(Main.java:174)
[dx] at com.android.dx.command.Main.main(Main.java:95)
[dx] 1 error; aborting
BUILD FAILED
/opt/android-sdk-linux/tools/ant/build.xml:729: The following error occurred while executing this line:
/opt/android-sdk-linux/tools/ant/build.xml:731: The following error occurred while executing this line:
/opt/android-sdk-linux/tools/ant/build.xml:743: The following error occurred while executing this line:
/opt/android-sdk-linux/tools/ant/build.xml:249: null returned: 1
Я могу успешно построить проект, запустив ant
под пользователем Jenkins непосредственно в каталоге рабочей области Jenkins с теми же Android SDK, Ant и JDKчто Дженкинс использует.Я даже вырезал и вставлял строку выполнения из журнала Jenkins, чтобы убедиться, что все ручки и переключатели установлены одинаково.Так что проблема заключается в том, как Jenkins выполняет сборку.
Я заставил Jenkins вывести окружение как шаг "shell exec" сборки, и я вижу, что установлена переменная LD_LIBRARY_PATH
.
LD_LIBRARY_PATH=/u0/jdk1.6.0_29/jre/lib/i386/server:/u0/jdk1.6.0_29/jre/lib/i386:/u0/jdk1.6.0_29/jre/../lib/i386
Я установил это значение в своем терминале во время запуска сборки из оболочки, и оно завершается сбоем точно так же, как при запуске Jenkins.Ах-ха!
Проблема в том, что я не могу понять, как не дать переменной LD_LIBRARY_PATH
установить или указать на что-то, что не вызовет этой проблемы.Это не установлено в среде пользователя Jenkins, и я не могу найти ничего, что могло бы быть ссылкой на него в конфигурации Jenkins.Установленное значение изменилось, когда я установил обновленный JDK и обновил значение JAVA
в /etc/defaults/jenkins
, поэтому оно явно связано, но, к сожалению, поведение не улучшилось.
У меня нетидеи.Любая помощь?