• Jenkinsfile_配置定时任务


    triggers

    在jenkinsfile来定义流水线时,常规情况下,项目都是基于手动点击部署,这种策略尤其适用于线上环境,但在测试环境,乃至于预发环境,应该对自动构建有更高的集成度,使开发者只关注于开发,而不必过多纠结构建的过程。这里使用triggers来定义流水线触发的机制和条件。

    目前流水线支持的触发器有三种:crob、pollSCM和upstream。

    • cron
      这里采用和Linux系统一样的定时任务管理方案,加入一些简单的参数项,以应对某些需要定期执行的场景。

      pipeline {
          agent any
          triggers {
              cron('* * * * *')
          }
          stages {
              stage('cron job') {
                  steps {
                      echo 'cron job test'
                  }
              }
          }
      }
      

      这里参数可以参考linux cron来配置。

    • pollSCM
      这里表示定期对代码仓库进行检测,如果有变化,则自动触发构建。

      pipeline {
          agent any
          triggers {
              pollSCM('* * * * *')
          }
          stages {
              stage('cron job') {
                  steps {
                      echo '每一小时检测一次仓库的变化'
                  }
              }
          }
      }
      
    • upstream
      当B项目的执行依赖A项目的执行结果是,A就是B的上游项目,在Jenkins2.22以上的版本中,可以通过upstream关键字进行这种关系的表示。

      triggers { 
            // job1,job2都是任务名称
            upstream(upstreamProjects: 'job1,job2', threshold: hudson.model.Result.SUCCESS) 
      }
      

      hudson.model.Result是一个枚举用于指示上游项目状态,包含以下指令:

      • ABORTED:任务被手动终止。
      • FAILURE:构建失败。
      • SUCCESS:构建成功。
      • UNSTABLE:存在一些错误,但不至于构建失败。
      • NOT_BUILT:再多阶段构建时,前面阶段的问题导致后面阶段无法执行。
    • gitlab事件触发
      这个场景应用较多,大多时候,我们都默认将项目配置为,开发者提交某些分支,然后自动触发对应的构建。传统方式下,需要比较复杂的几步配置,但是在pipeline中也可以通过代码形式对这种触发器进行配置。
      注意:gitlab触发Jenkins的构建需要依赖Gitlab插件,而并不需要插件当中列出来的所谓的gitlab hook。

      pipeline {
          agent any
          triggers{
              gitlab( triggerOnPush: true,
                      triggerOnMergeRequest: true,
                      branchFilterType: 'All',
                      secretToken: "xxxxxxxx")
              }
          stages {
              stage('build') {
                  steps {
                       echo '提交代码触发构建'
                  }
              }
          }
      } 
      

      对于触发器用到的参数:

      • triggerOnPush:当Gitlab触发push事件时,是否执行构建。
      • triggerOnMergeRequest:当Gitlab触发mergeRequest事件时,是否执行构建。
      • branchFilterType:只有符合条件的分支才会触发构建,必选,否则无法实现触发。
        可选参数如下:
      • NameBasedFilter:基于分支名进行过滤,多个分支名使用逗号分隔。
        • includeBranchesSpec:基于branchFilterType值,输入期望包括的分支的规则。
        • excludeBranchesSpec:基于branchFilterType值,输入期望排除的分支的规则。
      • RegexBasedFilter:基于正则表达式对分支名进行过滤。
        • sourceBranchRegex:定义期望的通过正则表达式限制的分支规则。
          这里举几个示例进行说明:
          1.只接受固定分支的触发请求,语法如下:
      triggers{
      gitlab( triggerOnPush: true,
      triggerOnMergeRequest: true,
      branchFilterType: "NameBasedFilter",
      includeBranchesSpec: "release",
      secretToken: "${env.git_token}")
      }
      

      2.通过正则匹配到某些分支触发

      triggers{
      gitlab( triggerOnPush: true,
      triggerOnMergeRequest: true,
      branchFilterType: "RegexBasedFilter",
      sourceBranchRegex: "test.*",
      secretToken: "${env.git_token}")
      }
      

    注意:所有对于jenkinsfile的配置都需要手动执行一次,将jenkins加载配置,后面指令才会生效。

    参考文档链接:http://www.eryajf.net/3298.html

  • 相关阅读:
    hdu 2586 How far away ?
    zoj 3195 Design the city
    hust 1022 K-diff subsequence
    poj 2253 Frogger
    poj 1470 Closest Common Ancestors
    poj 2553 The Bottom of a Graph
    poj 1236 Network of Schools
    poj 3694 Network
    uva 10131 Is Bigger Smarter ? (简单dp 最长上升子序列变形 路径输出)
    2014年百度之星程序设计大赛
  • 原文地址:https://www.cnblogs.com/yuhaohao/p/13448176.html
Copyright © 2020-2023  润新知