2010-10-08 4 views
16

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

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

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

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

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

Благодаря

ответ

12

Вы можете попробовать Hudson Remote API для такого рода задач (setting up an Hudson project).

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

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 
+3

Я думаю, что лучше читать апи с веб-страницы. Просто зайдите на http: // : /api, и вы увидите общее объяснение, а также документацию для копирования api. Если вас интересуют другие части API, перейдите на страницу, где вы фактически выполните конфигурацию, и добавьте к ней '/ api'. Используйте любой метод, который вам больше нравится. Версия браузера даже работает, если вы не можете получить доступ к банке Хадсона на месте (независимо от того, что может быть маловероятным) –

+0

Чтение вашего сообщения во второй раз, когда я наклонил что-то новое. Я думал, что вы можете говорить с Хадсоном только с кли, когда вы на одном сервере. Но это простой способ использовать удаленный API из командной строки. Я всегда использовал 'wget', чтобы поговорить с Хадсоном. К несчастью, я могу только проголосовать за вас однажды. :( –

+0

@VonC Я могу скопировать работу сейчас Мне нужно запустить ее из hudson я попробовал выполнить эту партию и запустить java -jar hudson-cli.jar -s http: // your_Hudson_server/copy-job myjob copy- myjob не создал какую-либо работу только с успехом, Как я могу запускать из самого hudson? –

0

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

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

+0

Спасибо, ребята за ценное предложение, но перезапуск Hudson совсем невозможен, так как он сломает мою другую сборку - :( –

+0

@praveen: ** Решение VonC не требует перезагрузки и перезагрузки конфигурации **. Это одна из причин, почему Мне нравится VonC больше, чем у меня. Я не уверен, что перезагрузка конфигурации с диска приведет к поломке сборки. Во всяком случае, идите с решением VonC, и все в порядке. 'Wget' творит чудеса при работе с удаленным api. используйте много языков сценариев, чтобы поговорить с удаленным api, кроме того, wget и hudsons's cli. –

+0

@Peter Мне удалось получить клонированную работу в окнах, но пока я пытаюсь использовать linux java -jar hudson-cli.jar -s http: // localhost: 9080/hudson help Исключение в теме "main" java.io.FileNotFoundException: http: // localhost: 9080/hudson/cli at sun.net.www.protocol.http.HttpURLConnection.g etInputStream (HttpURLConnection.java:1288) at hudson.cli.FullDuplexHttpStream. (FullDuplexHttpStream.java:61) at hudson.cli.CLI. (CLI.java:90) at hudson.cli.CLI. (CLI.java:62) at hudson.cli.CLI.main (CLI.java:175) Любые советы или предложения? –

7

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

curl --user USER:PASS -H "Content-Type: text/xml" -s 
--data-binary "@config.xml" "http://hudsonserver:8080/createItem?name=newjobname" 
+0

по какой-либо причине параметр '--data "@ config.xml"' не работал для меня. Вместо этого я использовал -data "$ XML", и это отлично работало. YMMV. –

+1

Вы должны использовать '--data-binary', чтобы избежать проблемы с http://issues.jenkins-ci.org/browse/JENKINS-7501 с новыми символами. –

0

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

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

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

7

Вы можете использовать заводной скрипт системы, как это:

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() 
+0

Не могли бы вы привести пример использования такого же метода с Git? –

2

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

https://wiki.jenkins-ci.org/display/JENKINS/Job+DSL+Plugin

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

+0

Я создал изображение [Docker image] (https://github.com/thomasleveil/docker-jenkins-dsl-ready) для запуска экземпляра Jenkins, готового перейти на DSL-скрипты. Надеюсь это поможет – Thomasleveil

1
def jenkins = hudson.model.Hudson.instance 
def template = jenkins.getItem("MyTemplate") 
def job = jenkins.copy(template,"MyNewJob") 
job.save() 

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

бывший у меня есть параметр, называемый «Build_BranchName» и по умолчанию // неволей/mybranch Я должен изменить его // неволей/mynewbranch

Смежные вопросы