Хадсон: обновите config.xml для текущего запущенного задания и немедленно сообщите о запущенном задании об обновленном config.xml - PullRequest
0 голосов
/ 29 декабря 2010

У меня есть ситуация, когда мой сервер hudson в данный момент выполняет сборку, и необходимо обновить новый config.xml до текущей работающей сборки. Как этого достичь?

Во-вторых, после того, как новый config.xml будет отправлен POST, как я могу заставить текущую сборку знать о новом config.xml и продолжить сборку?

Например, следующий файл config.xml указывает для запуска

java -cp Test.jar argument1

Сборка начинается и запущена.

Новый файл config.xml помещается в текущее задание.

java -cp Test.jar newargument1

Как я могу сделать Test.jar осведомленным о newargument1, который был обновлен в файле config.xml?

По сути, я стараюсь не начинать новую сборку заново с нуля с новым обновлением config.xml.

Ответы [ 2 ]

1 голос
/ 11 апреля 2011

давайте предположим, что первый файл config.xml называется file1, а второй файл config.xml называется file2.

Зачем вам менять файл1 на файл2 в середине сборки? либо должна быть причина (вот условие), которую вы сможете реализовать это либо с помощью PowerShell или сценария Bash

-или-

конкретной причины нет, и в этом случае вы можете просто добавить (не буквально) файл2 к файлу1, что означает объединение двух файлов xml и позволить сборке выполняться от начала до конца.

чтобы разместить xml поверх другого xml, то есть file2 поверх file1, а затем опубликовать свой xml по следующему URL:

http://<HUDSON_URL>/job/<JOB_NAME>/config.xml

однако, это не будет эффективно во время сборки. выполняется только после того, как задание остановлено и / или завершено выполнение file1.

если вы используете curl, обязательно используйте параметр --data-binary для отправки config.xml (file2) на сервер hudson.

0 голосов
/ 29 декабря 2010

У вас нет шансов сделать это с помощью функций Hudson.Вам нужно отменить сборку и перезапустить ее.

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

Я вижу здесь опасность того, что вы получите странные (невоспроизводимые) результаты при изменении некоторых параметров сборки в середине выполнения.Поэтому я рекомендую отменить и перезапустить.

Может быть, есть другие решения для вашей проблемы.Можете ли вы объяснить общую картину?Почему вы хотите избежать перезагрузки?Оформление заказа занимает так много времени?

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