В Гудзоне, как мне установить несколько переменных среды для одного параметра? - PullRequest
1 голос
/ 03 декабря 2010

Я хочу настроить параметризованную сборку в Hudson, которая принимает только один параметр - тип сборки для создания (QA, Stage, Production). Однако для каждой из этих сборок требуется установить несколько различных переменных среды. Нечто подобное (псевдокод):

if ${CONFIG} == "QA" then
    ${SVN_PATH} = "branches/dev"
    ${BUILD_CONFIG} = "Debug"
    # more environment variables...
else if ${CONFIG} == "Production" then
    ${SVN_PATH} = "trunk"
    ${BUILD_CONFIG} = "Release"
    # more environment variables...
else # more build configurations...
end if

В нашей сборке есть множество шагов: извлеките из Subversion, затем запустите комбинацию команд MSBuild, пакетных файлов DOS и скриптов Powershell.

Обычно мы планируем наши сборки из интерфейса Hudson, и я хочу, чтобы ввод параметров был максимально защищен от идиотов.

Есть ли способ сделать это?

Ответы [ 2 ]

6 голосов
/ 03 декабря 2010

Поскольку вы делаете так много вещей для релиза, как насчет сценариев для всех шагов за пределами Хадсона.Вы можете использовать муравей, командные файлы или любой другой язык сценариев, который вы предпочитаете.Поместите этот скрипт в свою scm, чтобы получить контроль версий.

pro's:

  • вы получаете логику из Hudson, поскольку Hudson вызывает только скрипт.
  • Вам не нужно создавать переменные среды, которые должны сохраняться между оболочками (глобальными переменными).
  • вы можете использовать файлы config / properties для каждой среды, которую вы также должны поместить вконтроль версий
  • вы можете запускать эти сценарии за пределами Хадсона, если вам нужно
  • Конфигурация заданий Hudson станет проще
  • у вас нет побочных эффектов измененияглобальные переменные среды.Вы всегда должны пытаться создавать задания, которые не меняют глобальные настройки, потому что это всегда вызывает проблемы.
2 голосов
/ 03 декабря 2010

Hudson поддерживает параметры сборки, которые являются переменными времени сборки, которые Hudson делает доступными в качестве переменных среды для ваших шагов сборки (см. Страницу Wiki Hudson Parameterized Build ). В вашей работе вы можете иметь один параметр выбора CONFIG, который вводит пользователь. (Для настройки параметра в конфигурации вашей работы выберите Эта сборка параметризована .)

Затем вы можете написать то, что вы закодировали в псевдокоде в начале вашего шага сборки. Или, поскольку у вас есть несколько шагов, поместите настройку среды в файл, на который ссылаются ваши существующие скрипты сборки. (В зависимости от вашей оболочки существуют разные приемы экспорта переменных, установленных в сценарии, в родительскую среду.) Размещение установки в файле, интегрированном в существующие сценарии сборки, значительно упростит управление и тестирование (т. Е. Его можно тестировать вне из Гудзона), а также дать вам простой способ вызывать ваши сценарии локально.

Вы можете также рассмотреть возможность разделения вашей унифицированной сборки на отдельные задания, которые выполняют каждую из описанных вами конфигураций. Даже если они могут ссылаться на центральный сценарий сборки, определенные вами типы CONFIG выглядят так, как будто они должны быть отдельными действиями и заслуживать отдельных заданий.

...