Запустите Jenkins ant build в специальной оболочке - PullRequest
6 голосов
/ 15 февраля 2012

Наша внутренняя система сборки использует сценарий оболочки для настройки среды для создания проектов.Затем фактические инструменты сборки (ant или make) могут ссылаться на переменные среды для настройки различных вещей.По сути, он делает:

$ /path/to/setup_env.sh .
[build env] $ ant compile

Обратите внимание, что первая команда запускает и инициализирует новую оболочку и ожидает, что все последующие операции сборки будут выполнены в этой оболочке.

Теперь я пытаюсьповторить то же самое в Дженкинс.Как запустить сценарий оболочки, а затем выполнить следующий шаг сборки муравья в той же среде?

Встроенный модуль 'Execute Shell', а также плагин EnvInject не помог, поскольку они отбрасывают любыеизменения в среде перед переходом к следующему шагу сборки.

Я бы предпочел не изменять файл сборки ant, так как он должен продолжать работать в текущей внутренней системе сборки.

Ответы [ 2 ]

5 голосов
/ 21 февраля 2012

Это «решение», которое сработало для нас.Основная идея заключается в том, что сценарий setup_env.sh запускает новую оболочку, в которую он экспортирует несколько переменных среды.Нам нужен был доступ к этим определениям переменных.Итак, мы выполнили Jenkins Build из трех частей:

Шаг 1 - Выполнить оболочку

Используйте встроенную Jenkins «Выполнить оболочку» для запуска нашего setup_env.sh сценария.Затем передайте во вновь запущенную оболочку простой скрипт на python, который создает дамп среды в файл.

/path/to/setup_env.sh . <<< 'python <<SC
print "Exporting env to buildenv.properties file"
import os
f = open("buildenv.properties", "w")
env = os.environ
for k in env:
  f.write("%s=%s\n" % (k, env[k]))
f.close()
print "Done exporting env"
SC'

Шаг 2. Добавление переменных среды

Теперь мы используем Плагин EnvInject для вставки переменных окружения из файла, сброшенного на предыдущем шаге.Конфигурация здесь проста, просто укажите имя файла выведенных свойств в качестве значения поля Properties File Path.

Шаг 3 - Вызов Ant

Здесь мы запускаем нормальную сборку ant.Поскольку среда теперь содержит все необходимые определения, сборка завершается как обычно.

1 голос
/ 15 февраля 2012

Попробуйте Плагин EnvInject .

...