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.只接受固定分支的触发请求,语法如下:
- sourceBranchRegex:定义期望的通过正则表达式限制的分支规则。
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_配置定时任务的更多相关文章
- 在SpringBoot中配置定时任务
前言 之前在spring中使用过定时任务,使用注解的方式配置很方便,在SpringBoot中的配置基本相同,只是原来在spring中的xml文件的一些配置需要改变,在SpringBoot中也非常简单. ...
- SpringBoot 配置定时任务
SpringBoot启用定时任务,其内部集成了成熟的框架,因此我们可以很简单的使用它. 开启定时任务 @SpringBootApplication //设置扫描的组件的包 @ComponentScan ...
- LINUX 配置定时任务,每天凌晨1点定时备份数据库
一.安装定时任务如果本地没有安装包,在能够连网的情况下可以在线安装 yum install vixie-cronyum install crontabs 查看crond服务是否运行: pgrep cr ...
- 第12章 Linux配置定时任务详解
12.1 配置定时任务 首先需弄清的概念: (1).crond是一个daemon类程序,路径为/usr/sbin/crond.默认会以后台方式启动,service或systemd方式启动crond默认 ...
- springboot整合Quartz实现动态配置定时任务
前言 在我们日常的开发中,很多时候,定时任务都不是写死的,而是写到数据库中,从而实现定时任务的动态配置,下面就通过一个简单的示例,来实现这个功能. 一.新建一个springboot工程,并添加依赖 & ...
- 基于Django+celery二次开发动态配置定时任务 ( 一 )
需求: 前端时间由于开发新上线一大批系统,上完之后没有配套的报表系统.监控,于是乎开发.测试.产品.运营.业务部.财务等等各个部门就跟那饥渴的饿狼一样需要 各种各样的系统数据满足他们.刚开始一天一个还 ...
- 基于Django+celery二次开发动态配置定时任务 ( 二)
一.需求 结合上一篇,使用djcelery模块开发定时任务时,定时任务的参数都保存在djcelery_periodictask表的args.kwargs字段里,并且是json格式.那么,当定时任务多了 ...
- Spring+Quartz配置定时任务
一.Quartz介绍 在企业应用中,我们经常会碰到时间任务调度的需求,比如每天凌晨生成前天报表,每小时生成一次汇总数据等等.Quartz是出了名的任务调度框架,它可以与J2SE和J2EE应用程序相结合 ...
- spring利用xml配置定时任务
在开发中会经常遇到做定时任务的需求,例如日志定时清理与处理,数据信息定时同步等需求. 1.在spring中利用xml配置定时任务,如下 <!-- ftpiptv信息同步接口定时任务配置--> ...
- Django + Celery 实现动态配置定时任务
哈喽,今天给大家分享一篇Django+Celery实现动态配置定时任务,因为最近也是无意间看到一位大佬关于这块的文章,然后自己觉得不错,也想学习写一下,然后最终实现功能是在前端页面统一管理计划任务,大 ...
随机推荐
- Mac port 443: Connection refused
MAC 安装brew raw.githubusercontent.com port 443: Connection refused 本人亲自认证过,踩过多种方案,最终认证的解决方案 原因:由于某些你懂 ...
- 认识webRTC
什么是 WebRTC 2010 年 5 月,谷歌收购了 Global IP Solutions(简称 GIPS),这是一家专注于 VoIP 和视频会议软件的公司,已开发出 RTC 所需的多项关键组件, ...
- Unity开发Hololens2—环境配置
博客地址:https://www.cnblogs.com/zylyehuo/ 配置如下: win11 专业版 Unity2018.4.26f1 / 2019.4.11f1 Hololens2 VS20 ...
- 懂了 OpenLDAP
轻型目录访问协议(英文: LightweightDirectoryAccessProtocol,缩写: LDAP)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目 ...
- RabbitMQ持久化+消息执行优先级
持久化 channel.QueueDeclare(queue:"hello",//队列名 durable:true,//持久化 exclusive:false,//排他性,该 ...
- 探秘Transformer系列之(20)--- KV Cache
探秘Transformer系列之(20)--- KV Cache 目录 探秘Transformer系列之(20)--- KV Cache 0x00 概述 0x01 自回归推理的问题 1.1 请求的生命 ...
- halcon 入门教程(三) 边缘检测
原文作者:aircraft 原文链接:halcon 入门教程(三) 边缘检测 有兴趣可以多看其他的halcon教程 halcon 学习教程目录 本篇讲一下边缘检测(边缘提取),因为这个我发现也是比较常 ...
- DPDI(Dispatch PDI)kettle调度管理平台升级预告
亲爱的DPDI用户们,久等了!Dispatch PDI全新升级,焕然一新的UI页面计划于2025.03.23正式上线.这一次,我们精心打磨每一个细节,只为给您带来前所未有的丝滑体验,让每一次浏览都成为 ...
- s2-061(CVE-2020-17530)漏洞复现+利用+getshell工具。
声明 本文仅用于技术交流,请勿用于非法用途 由于传播.利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者不为此承担任何责任. 文章作者拥有对此文章的修改和解释权.如 ...
- Maven版本号管理规范:为何父POM是统一依赖版本的最佳实践?
结论先行 在Maven多模块项目中,依赖的版本号应集中定义在父POM的<dependencyManagement>中,子模块通过继承父POM来引用版本号,通常无需在子POM中重复声明.这能 ...