创建在同一视图中创建新作业的作业DSL

时间:2014-02-25 17:31:11

标签: plugins jenkins jenkins-plugins jenkins-job-dsl

我正在尝试使用DSL作业插件在Jenkins中创建新的工作。有没有办法在创建作业时指定视图?

例如,我有一个视图NewJobsView。我想创建一个名为dsl-job的DSL作业,它正在创建一个新作业“dsl-created-job1”

像这样的DSL:

job {
    name 'dsl-created-job1'
    //view 'NewJobsView'
    //or view {...} to specify the view
}

3 个答案:

答案 0 :(得分:3)

如果你这样做:

def myJob=job{name('test1')}
def myJob2=job{name('test2')}
view {
  name('view1')
  jobs{
     name(myJob.name)
    name(myJob2.name)
  }   
}

甚至在视图中使用正则表达式。

更新

关于讨论。 嵌套视图只是一种不同的视图。作业config.xml没有引用视图,因为jenkins有不同的抽象:视图引用作业。

答案 1 :(得分:1)

我得到了这个工作。它创建一个作业,然后创建一个视图并将作业添加到视图中。此解决方案每次都会重新创建视图。您可以使用姓名(' jobname1')或姓名(' jobname1',' jobname2')添加多个职位。您还可以以相同的方式添加按名称引用它们的现有作业。

job{
    name('DSL JOB')
    description('This is a Test Job')
    triggers{
        cron('H/20 7-20 * * 1-5')
    }    
}

view(type:ListView){
    name('DSL-JOBS')
    description('Test View of DSL Job')
    filterBuildQueue()
    filterExecutors()
    jobs{
        name('DSL JOB')
    }
    columns{
        status()
        weather()
        name()
        lastSuccess()
        lastFailure()
        lastDuration()
        buildButton()
        lastBuildConsole()
    }
}

答案 2 :(得分:0)

如果您只想将生成的作业放在现有视图中而不必在几十个作业中查找它而不必每次都重新创建视图,这里有一个非常简单的解决方法:

解决方法:

  • 删除DSL生成的作业
  • 从DSL
  • 复制(或记住)生成的作业的确切名称
  • 转到您希望新作业位于
  • 的视图中
  • 使用相同的名称创建一个新的空作业,作为DSL中新生成的作业。
  • 在保存新的空作业时检查添加到当前视图
  • 运行DSL脚本,它将使用正确的内容更新现有(空)作业,同时将其保留在所需的视图中。

您可能还想查看this回答。