Хадсон: Как правильно хранить переменную между двумя запусками заданий? - PullRequest
3 голосов
/ 07 декабря 2011

У меня есть задание, которому нужно знать значение, рассчитанное при предыдущем запуске задания.

Есть ли способ сохранить его в среде Гудзона / Дженкинса?

Например, я могу написать что-то вроде следующего в действии сценария оболочки:

XXX=`cat /hardcoded/path/xxx`
#job itself
echo NEW_XXX > /hardcoded/path/xxx

Но есть ли более надежный подход?

Ответы [ 2 ]

9 голосов
/ 13 декабря 2012

Несколько вариантов:

  • Храните данные в рабочей области. Если данные не являются критическими (то есть, можно обстреливать их, когда рабочая область обнуляется), это должно быть хорошо. Я использую это только для кэширования дорогостоящих для вычисления данных, таких как готовые зависимости библиотеки.
  • Храните данные в некотором фиксированном месте в файловой системе. Вы сделаете jenkins менее автономными и тем самым сделаете миграцию + резервное копирование более сложным - но, вероятно, не намного; особенно если вы храните данные в каком-то пользовательском подкаталоге пользователя jenkins. параллельные сборки также будут сложными, а распределенные сборки, скорее всего, невозможны. В Jenkins есть подкаталог userContent, который вы можете использовать для этого - таким образом, файл является, по крайней мере, частью установки jenkins и, таким образом, легче переносится или резервируется. Я делаю это для (довольно больших) файлов трендов покрытия кода для моих сборок.
  • Храните данные на другом компьютере (например, в базе данных). Это сложнее в настройке, но вы меньше зависите от деталей локального компьютера, и, вероятно, его легче распределить и параллельные сборки работают. Я сделал это, чтобы вести живой журнал изменений.
  • Хранить данные как артефакт сборки. Это означает просмотр артефактов предыдущей сборки. Это безопасно и повторяемо, и поскольку Uri используются для доступа к таким артефактам, хорошо для распределенных сборок. Тем не менее, вам нужно иметь дело с неудачными сборками (если вы оглянетесь на несколько версий «начать с нуля»), и вы будете хранить много копий, что просто прекрасно, если это 1 КБ, но менее хорошо, если это 1 ГБ. Другим недостатком здесь является то, что вам, вероятно, потребуется открыть настройки безопасности jenkin довольно далеко, чтобы разрешить анонимный доступ к артефактам (поскольку вы просто скачиваете с URI).

Подходящее решение будет зависеть от вашей ситуации.

1 голос
/ 24 марта 2012

Я бы передал переменную из первого задания второму в качестве параметра в параметризованной сборке .См. этот вопрос для получения дополнительной информации о том, как вызвать параметризованную сборку из другой сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...