自动配置或创建hudson作业

时间:2010-10-08 00:28:06

标签: configuration hudson

有没有办法通过一个以前的工作再创一个Hudson工作来创建新的Hudson工作?

例如,如果我需要逐个创建新的作业群,则自动创建具有不同参数的类似配置的4个作业

基本上是这样的步骤

  1. 创建SVN分支我可以调用svn cp命令并使用脚本
  2. 进行参数化
  3. 根据新的svnbranch名称
  4. 创建一些构建
  5. 稍后标记
  6. 或者换句话说,我需要克隆上一个工作并给出新的分支名称,其中$ Branch来自新工作。

    由于

7 个答案:

答案 0 :(得分: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

答案 1 :(得分:7)

其他答案已经涵盖了一些,但是有一个简单的方法来复制config.xml:

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

答案 2 :(得分:7)

你可以像这样使用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()

答案 3 :(得分:2)

jenkins似乎有一个插件。

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

我还没有测试过这个插件。但是如果插件有效,它应该可以减轻直接复制作业和修改变量/值的一些人为错误。

答案 4 :(得分:1)

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

我现在使用这个我必须使用Groovy更改MyNewJob的参数值我将如何做?

ex我有一个名为" Build_BranchName"默认值为// perforce / mybranch 我必须把它改成 // Perforce的/ mynewbranch

答案 5 :(得分:0)

您可以选择VonC刚刚给您(这可能是最安全的方式,但您也可以通过在{Hudson_Home} \ jobs中创建一个新目录来进行不同的路径(目录名称将是作业名称)和在那里复制一个修改过的config.xml。修改基本上就是SVN URL。你应该从你正在复制的作业中查看xml。你需要找到你如何通过脚本更改xml文件,但这是第二个问题。

不幸的是,您必须重新启动Hudson,或强制重新加载配置。 (访问页面http://:/ reload以重新加载配置)。

答案 6 :(得分:0)

如果您愿意使用GIT(就像我一样,将主SVN仓库镜像到Hudson / Jenkins服务器上,并且效果很好).... ..你可以尝试Stephen Haberman的post-receive-hudson

  

此挂钩为每个挂钩创建新作业   在哈德森连续分支   整合工具。除了创造   如果需要,推动的用户是   如果他们添加到作业的电子邮件列表中   还没有。

在任何情况下,该脚本都可以为您提供有关如何远程控制Jenkins(Hudson)的新提示。