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

    我们只需要努力,然后剩下的交给时间。
  • 相关阅读:
    再次或多次格式化导致namenode的ClusterID和datanode的ClusterID之间不一致的问题解决办法
    Linux安装aria2
    POJ 3335 Rotating Scoreboard 半平面交
    hdu 1540 Tunnel Warfare 线段树 区间合并
    hdu 3397 Sequence operation 线段树 区间更新 区间合并
    hud 3308 LCIS 线段树 区间合并
    POJ 3667 Hotel 线段树 区间合并
    POJ 2528 Mayor's posters 贴海报 线段树 区间更新
    POJ 2299 Ultra-QuickSort 求逆序数 线段树或树状数组 离散化
    POJ 3468 A Simple Problem with Integers 线段树成段更新
  • 原文地址:https://www.cnblogs.com/lgj8/p/15038808.html
Copyright © 2011-2022 走看看