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

Jenkinsfile_配置定时任务的更多相关文章

  1. 在SpringBoot中配置定时任务

    前言 之前在spring中使用过定时任务,使用注解的方式配置很方便,在SpringBoot中的配置基本相同,只是原来在spring中的xml文件的一些配置需要改变,在SpringBoot中也非常简单. ...

  2. SpringBoot 配置定时任务

    SpringBoot启用定时任务,其内部集成了成熟的框架,因此我们可以很简单的使用它. 开启定时任务 @SpringBootApplication //设置扫描的组件的包 @ComponentScan ...

  3. LINUX 配置定时任务,每天凌晨1点定时备份数据库

    一.安装定时任务如果本地没有安装包,在能够连网的情况下可以在线安装 yum install vixie-cronyum install crontabs 查看crond服务是否运行: pgrep cr ...

  4. 第12章 Linux配置定时任务详解

    12.1 配置定时任务 首先需弄清的概念: (1).crond是一个daemon类程序,路径为/usr/sbin/crond.默认会以后台方式启动,service或systemd方式启动crond默认 ...

  5. springboot整合Quartz实现动态配置定时任务

    前言 在我们日常的开发中,很多时候,定时任务都不是写死的,而是写到数据库中,从而实现定时任务的动态配置,下面就通过一个简单的示例,来实现这个功能. 一.新建一个springboot工程,并添加依赖 & ...

  6. 基于Django+celery二次开发动态配置定时任务 ( 一 )

    需求: 前端时间由于开发新上线一大批系统,上完之后没有配套的报表系统.监控,于是乎开发.测试.产品.运营.业务部.财务等等各个部门就跟那饥渴的饿狼一样需要 各种各样的系统数据满足他们.刚开始一天一个还 ...

  7. 基于Django+celery二次开发动态配置定时任务 ( 二)

    一.需求 结合上一篇,使用djcelery模块开发定时任务时,定时任务的参数都保存在djcelery_periodictask表的args.kwargs字段里,并且是json格式.那么,当定时任务多了 ...

  8. Spring+Quartz配置定时任务

    一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是出了名的任务调度框架,它可以与J2SE和J2EE应用程序相结合 ...

  9. spring利用xml配置定时任务

    在开发中会经常遇到做定时任务的需求,例如日志定时清理与处理,数据信息定时同步等需求. 1.在spring中利用xml配置定时任务,如下 <!-- ftpiptv信息同步接口定时任务配置--> ...

  10. Django + Celery 实现动态配置定时任务

    哈喽,今天给大家分享一篇Django+Celery实现动态配置定时任务,因为最近也是无意间看到一位大佬关于这块的文章,然后自己觉得不错,也想学习写一下,然后最终实现功能是在前端页面统一管理计划任务,大 ...

随机推荐

  1. 入口函数与包初始化:Go程序的执行次序

    前言 我们可能经常会遇到这样一个问题:一个 Go 项目中有数十个 Go 包,每个包中又有若干常量.变量.各种函数和方法,那 Go 代码究竟是从哪里开始执行的呢?后续的执行顺序又是什么样的呢? 事实上, ...

  2. Dockerfile 语法与常用命令

    转发请注明出处: 一.Dockerfile 核心语法规则 指令大写:所有指令必须大写(如 FROM, RUN) 顺序执行:指令按顺序从上到下执行 分层构建:每条指令生成一个镜像层,修改上层不会影响下层 ...

  3. Panabit 流控软件的使用教程

    Flow control software-Panabit Howto Version 1.0.0 Date 2010-11-21 Author ipcpu Website http://www.ip ...

  4. cxDBTreeList:最简单的节点图标添加方法

    先在窗体上放ImageList关联到cxDBTreeList,在cxDBTreeList的GetNodeImageIndex事件中写如下: procedure cxDBTreeList1GetNode ...

  5. 一个属性同时使用Autowired和Resource注解会发生什么?

    首发于公众号:BiggerBoy 右侧图片wx扫码关注有惊喜 欢迎关注,查看更多技术文章 如题,如果在同一个属性上使用@Autowired注解注入bean1,然后使用@Resource注解注入bean ...

  6. Try .NET & Github Gist

    Try .NET Try .NET 是微软最近推出的在线 C# 运行环境,不用安装 Visual Studio 等,就可以直接上手写 C# 代码. 可以先进来写两行代码看看 https://try.d ...

  7. 支付系统扩展:ZKmall开源商城支持跨境多币种结算的开发实践

    于跨境电商平台而言,多币种支付是满足全球消费者支付需求的关键.不同国家和地区的消费者习惯使用各自的货币进行支付,如果平台不支持多币种交易,将极大地限制用户的购买意愿和支付便利性.因此,跨境电商平台必须 ...

  8. 7. RabbitMQ 消息队列——延时队列(Spring Boot + 安装message_exchange"延迟插件" 的详细配置说明)的详细讲解

    7. RabbitMQ 消息队列--延时队列(Spring Boot + 安装message_exchange"延迟插件" 的详细配置说明)的详细讲解 @ 目录 7. Rabbit ...

  9. spring项目使用EMQX,使用@Autowired注入失败报错空指针问题记录

    目录 java客户端使用MQTT订阅消息大致流程 MQTTConnect部分代码 MQTTListener部分代码 问题分析 问题原因 解决方法 总结 参考 java客户端使用MQTT订阅消息大致流程 ...

  10. ReadWriteLock:读写锁

    一. /* * 1. ReadWriteLock : 读写锁 * * 写写/读写 需要"互斥" * 读读 不需要互斥 * */ public class TestReadWrite ...