Подтвердить что ты не робот

Дженкинс: Как использовать плагин с параметризированным триггером и передать ревизию подрывной работы?

IMO, этот пример использования действительно должен быть специально определен на веб-странице/документации плагина.

Скажем, у меня есть проект под названием U для upstream и D для downstream. Когда U заканчивает строительство, я хочу, чтобы D проверил ту же ревизию, которую только что построил U. U всегда будет проверять HEAD.

Вот что я сделал:

  • В U я добавил "Действия после сборки" для "Триггер-параметризованная сборка для других проектов".
  • Для "Проекты для сборки" я набрал D и создаю только "Стабильный".
  • Я добавил триггер для "пересмотра Subversion".
  • Я сохранил эту конфигурацию

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

Но, если бы я мог догадаться, я бы подумал, что я должен пометить U как параметризованную сборку и добавить к ней параметр. Этот параметр следует назвать тем, что U отправляет D. Но если у меня есть правильная идея, я не знаю, что я должен назвать этим параметром. Ни в консольном журнале D, ни в консольном журнале U не упоминается новый параметр.

Я сделал предположение и создал параметр String в U с именем "SVN_REVISION" и по умолчанию использовал его -1, но это не повлияло. Каждый раз, когда D запускает сборку, SVN_REVISION по умолчанию имеет значение -1.


Это результат запуска export в проекте D:

+ export
export BUILD_ID="2013-03-20_09-48-32"
export BUILD_NUMBER="4522"
export BUILD_TAG="jenkins-D-4522"
export BUILD_URL="http://my.jenkins.server.com:8081/job/D/4522/"
export EXECUTOR_NUMBER="2"
export HUDSON_COOKIE="8ec52f7a-d60d-4640-83a9-dbed7351b32a"
export HUDSON_HOME="/opt/hudson"
export HUDSON_SERVER_COOKIE="633967fcd1d6f7b38a85042ada5c3949"
export HUDSON_URL="http://my.jenkins.server.com:8081/"
export JAVA_HOME="/opt/java"
export JENKINS_HOME="/opt/hudson"
export JENKINS_SERVER_COOKIE="633967fcd1d6f7b38a85042ada5c3949"
export JENKINS_URL="http://my.jenkins.server.com:8081/"
export JOB_NAME="D"
export JOB_URL="http://my.jenkins.server.com:8081/job/D/"
export LANG="en_US.UTF-8"
export LD_LIBRARY_PATH="/opt/jdk1.6.0_30/jre/lib/i386/server:/opt/jdk1.6.0_30/jre/lib/i386:/opt/jdk1.6.0_30/jre/../lib/i386"
export M2="/opt/maven/bin"
export M2_HOME="/opt/maven"
export MAVEN_OPTS="-Xms256m -Xmx512m"
export NHINC_PROPERTIES_DIR="/opt/nhinc/Properties"
export NLSPATH="/usr/dt/lib/nls/msg/%L/%N.cat"
export NODE_LABELS="master"
export NODE_NAME="master"
export OLDPWD
export PATH="/sbin:/usr/sbin:/bin:/usr/bin:/opt/java/bin:/opt/apache-ant-1.8.1/bin:/usr/local/bin:/opt/maven/bin"
export PWD="/opt/hudson/jobs/D/workspace"
export SHLVL="2"
export SVN_REVISION="24186"
export SVN_URL="https://a/url/trunk"
export TERM="xterm"
export WORKSPACE="/opt/hudson/jobs/D/workspace"
export XFILESEARCHPATH="/usr/dt/app-defaults/%L/Dt"
export _="/opt/java/bin/java"

Итак, похоже, что у него есть переменная окружения SVN_REVISION. Но я не думаю, что это обязательно происходит из плагина. Мои данные взяты из описания "URL-адрес репозитория" в jenkins:

Во время сборки, номер ревизии модуля, который был извлечен доступен через переменную среды SVN_REVISION, при условии, что что вы проверяете только один модуль. Если у вас несколько проверены модули, используйте команду svnversion. Если у вас несколько Выбрав модули, вы можете использовать команду svnversion, чтобы получить информацию о пересмотре, или вы можете использовать среду SVN_REVISION_ переменные, где 1-основанный индекс, соответствующий местоположениям сконфигурировано. URL-адреса доступны через похожие SVN_URL_ переменные среды.

Но давайте предположим, что это устанавливается из U вместо D. Как мне сделать D использовать это или как его узнать, используя его, когда D запускается?


Позвольте мне задать вопрос, который мне, вероятно, нужно будет задать дальше. Как только я узнаю имя параметра, который мне нужно использовать, как мне изменить конфигурацию D так, чтобы он проверял эту ревизию? Могу ли я изменить "URL-адрес репозитория", чтобы положить @${PARAMETER_NAME} в конец или что-то в этом роде?

4b9b3361

Ответ 1

Оказывается, как говорит тестовый пример, это все, что я должен был сделать. Я проверил это, совершив U, затем снова совершив попытку, пока он строит. Как только D начал строить, он схватил первую фиксацию, а не последнюю. Это то, как я тестировал, работает.

Лучшая обратная связь будет оценена, но по крайней мере я знаю, что она работает.

Ответ 2

Я не знаю, почему параметр "Subversion revision" не работает (см. подсказку об устранении неполадок ниже), но попробуйте добавить параметр вручную в разделе "Trigger parameterized build on other projects" с раскрывающимся списком "Добавить параметр". Проще всего было бы добавить "Текущие параметры сборки".

Вы также можете просто указать нужные параметры, со значениями, которые вы хотите с "Предопределенными параметрами", вероятно, вот так:

SVN_REVISION=${SVN_REVISION}

Маркировка D как параметризованная не должна быть необходимой, это просто означает, что вы можете указать параметры со значениями по умолчанию и заставить Jenkins запрашивать параметры, когда сборка запускается вручную. Но все, что планирует новую сборку (например, плагин с параметрами), всегда может добавлять какие-либо параметры в эту сборку, независимо от того, как задано задание.


Совет по поиску и устранению неисправностей: добавьте шаг сборки, чтобы сбрасывать переменные среды (которые также должны иметь все параметры сборки) в запущенной сборке. Проще всего добавить "Execute shell" / "Execute Windows batch command" с командой dump environment (export с оболочкой unix, set с Windows).

Затем из вывода сборки сборки посмотрите, являются ли параметры такими, какими они должны быть (существуют и имеют правильные значения).