【问题标题】:How to make a Jenkins/Hudson job surveil some others jobs and decide whether to build or not?如何让 Jenkins/Hudson 的工作监视其他一些工作并决定是否构建?
【发布时间】:2012-12-11 00:32:12
【问题描述】:

问题

鉴于所有工作的工作名称中都有字符串 LEVEL_X,其中 X 是一个 > 1 的数字。我希望 X = n 的每个工作都使用 X = n-1 监视每个工作,如果每个工作都开始构建成功完成。我希望X = n 的工作以 1 分钟的间隔监视其他工作。

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

【问题讨论】:

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


    【解决方案1】:

    这里有一些提示和代码sn-ps:

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

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

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

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

    注意:如果您使用 Matrix 构建,事情会变得有点棘手。但只要你不这样做就足够了。

    【讨论】:

    • jenkins 服务器脚本 url 的 +1 - 节点 groovy 控制台毫无价值,因为它不会导入所有类。
    • 在 groovy 控制台中,我发现完整的脚本/命令必须全部放在一行上,否则会出现各种语法错误。例如工作名称 sn-p 像这样为我工作:'''def hi = hudson.model.Hudson.instance; hi.getItems(hudson.model.Project).each {project -> println(project.displayName) }'''
    • 仅供参考;其中一些 API 方法必须获得 scriptApproval 才能在作业中运行。
    猜你喜欢
    • 1970-01-01
    • 2011-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    • 2011-11-24
    • 2011-05-22
    • 1970-01-01
    相关资源
    最近更新 更多