Настроить или создать задание Hudson автоматически - PullRequest
17 голосов
/ 08 октября 2010

Есть ли способ создать новую работу в Хадсон с помощью еще одной работы Хадсон на основе предыдущих работ?

Например, если мне нужно создать новую группу заданий по одному, автоматически создать 4 задания с одинаковой конфигурацией с другим параметром

В основном такие шаги

  1. создать ветку SVN. Я могу вызвать команду svn cp и сделать ее параметризованной, используя скрипт
  2. Создать сборку на основе нового svnbranch имени
  3. Позже отметьте это

Или, другими словами, мне нужно клонировать предыдущее задание и дать новое имя ветки, где бы ни было $ Branch.

Спасибо

Ответы [ 7 ]

12 голосов
/ 08 октября 2010

Вы можете попробовать API Hudson Remote для такого рода задач ( настройка проекта Hudson ).

Посмотрите, например, это руководство, и помните, что вы можете довольно легко отобразить справку:

java -jar hudson-cli.jar -s http://your_Hudson_server/ help

alt text

Итак, чтобы скопировать работу:

java -jar hudson-cli.jar -s http://your_Hudson_server/ copy-job myjob copy-myjob
7 голосов
/ 10 января 2012

Вы можете использовать системный скрипт groovy следующим образом:

def jenkins = hudson.model.Hudson.instance
def template = jenkins.getItem("MyTemplate")
def job = jenkins.copy(template,"MyNewJob")
job.scm = new hudson.scm.SubversionSCM("http://base/branches/mybranche")
job.save()
7 голосов
/ 04 декабря 2010

Вид уже описан в других ответах, но для простого способа скопировать config.xml поверх:

curl --user USER:PASS -H "Content-Type: text/xml" -s  
--data-binary "@config.xml" "http://hudsonserver:8080/createItem?name=newjobname"
2 голосов
/ 16 апреля 2014

Кажется, есть плагин для Дженкинса.

* * 1004 -ci.org / дисплей / Дженкинс / Работа + DSL + Plugin * * 1006

Я еще не тестировал плагин. Но если плагин работает, он должен устранить некоторые человеческие ошибки от прямого копирования задания и изменения переменных / значений.

1 голос
/ 18 января 2016
def jenkins = hudson.model.Hudson.instance
def template = jenkins.getItem("MyTemplate")
def job = jenkins.copy(template,"MyNewJob")
job.save()

Я использовал это сейчас, я должен изменить значения параметров MyNewJob, используя Groovy, как мне это сделать?

ex У меня есть параметр с именем "Build_BranchName", и по умолчанию используется // Perforce /mybranch Я должен изменить его на // Perforce / MyNewbranch

0 голосов
/ 10 февраля 2011

В случае, если вы хотите использовать GIT (как я, зеркальное отражение основного репозитория SVN, на сервер Hudson / Jenkins, и это прекрасно работает) .... ..вы можете попробовать post-receive-hudson Стивена Хабермана :

Этот хук создает новые рабочие места для каждого ветвь в непрерывной Гудзона инструмент интеграции. Помимо создания задание, если это необходимо, пользователь, который нажал добавлены в список адресов работы, если они там уже не было.

В любом случае этот сценарий может дать вам новые советы о том, как удаленно управлять Дженкинсом (Хадсон).

0 голосов
/ 08 октября 2010

У вас есть опция, которую VonC только что дал вам (что, вероятно, является самым безопасным способом, но вы также можете пойти другим путем, просто создав новый каталог в {Hudson_Home} \ jobs (имя каталога будет именем задания), и скопируйте туда измененный файл config.xml. Модификацией будет в основном URL-адрес SVN. Вы должны извлечь xml из копируемой работы. Вам необходимо выяснить, как изменить XML-файл с помощью скрипта, но это вторичная проблема.

К сожалению, вам придется либо перезапустить Hudson, либо принудительно перезагрузить конфигурацию. (посетите страницу http://:/reload для перезагрузки конфигурации).

...