zoukankan      html  css  js  c++  java
  • Jenkinsfile_触发器_配置定时任务

    在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加载配置,后面指令才会生效。

    我们只需要努力,然后剩下的交给时间。
  • 相关阅读:
    【亲身测试成功】windows7 32位操作系统 环境下安装 windows7 64位操作系统
    Deprecated: Function ereg_replace() is deprecated in ……【解决方法】
    20100526(开始上班咯···)
    20100608
    String与string的区别
    Jquery CheckBox全选方法
    与技术无关
    jquery之对象访问(是不是API里出错了呢?)
    工作四个月之后的小感
    关于数据库中的AK(Alternate Key)
  • 原文地址:https://www.cnblogs.com/lgj8/p/15038808.html
Copyright © 2011-2022 走看看