如何让詹金斯/哈德森的工作监视其他一些工作,并决定是否建立?

时间:2012-05-27 22:14:05

标签: groovy hudson jenkins hudson-plugins jenkins-plugins

问题

鉴于所有作业的作业名称都包含字符LEVEL_X,其中X是数字> 1.我希望X = n的每个工作都用X = n-1来监视每个工作,如果每个工作都成功完成,就开始建立工作。我希望X = n的工作能够以1分钟的间隔监视其他工作。

首先,我有兴趣知道最好的方法是什么,其次我想要解决方案,如果一个可以通过一个小脚本实现,也许是一个可以在system groovy script中运行的groovy脚本使用GROOVY PLUGIN。

1 个答案:

答案 0 :(得分:42)

以下是一些提示和代码段:

  • http://<jenkins-server>/script上有一个Groovy Script控制台,可以帮助您调试脚本。
  • 以下是Jenkins Java API
  • 的链接
  • 输出所有作业名称的代码段:

    def hi = hudson.model.Hudson.instance
       hi.getItems(hudson.model.Project).each {project ->
       println(project.displayName)
    }
    
  • n中提取LEVEL_n的代码段(实现为闭包):

    def level = { name ->
      def ret = 0
      name.eachMatch(~'LEVEL_([1-9]+[0-9*])', {ret = it[1].toInteger()})
      return ret
    }
    
  • 获取所有最新版本的状态的代码段:

    def hi = hudson.model.Hudson.instance
    hi.getItems(hudson.model.Project).each {project ->
      println(project.lastBuild.result)
    }
    
  • 链接到starts a build

  • 的方法

注意:如果您使用Matrix构建,事情会变得更加繁琐。但只要你不这样就足够了。