Github / Gitlab Actions是一种轻量级的CI(Continuous integration,持续集成),能够自动化地完成某些特定功能或功能组合。在编写Gitlab Actions时通常需要在workflow中指定运行时间,通过schedule定时执行某些工作,其中需要使用cron定义工作流的时间表。

Set cron schedule · Actions · GitHub Marketplace · GitHubSet the cron schedule for a GitHub Actionhttps://github.com/marketplace/actions/set-cron-schedule

但由于不支持秒级的定时设定,使得这一cron格式与标准的cron有所不同,在使用过程中需要注意!

Github / Gitlab Actions 中的Cron格式

该cron有五个由空格分隔的字段,每个字段代表一个时间单位。第一个数字代表分钟,第二个数字代表小时,第三个数字代表,第四个数字代表,第五个数字代表星期

此外,该cron指定的是格林尼治时间(UTC),如果需要换算成北京时间,要在该cron的基础上增加八小时得到北京时间。

例如 0 1 * * * 表示在每天 格林尼治时间的 1:00 AM,也就是在北京时间的 9:00 AM 自动运行。

on:schedule:- cron: '0 0 * * *'

Github / Gitlab Actions 中的Cron内容

关于每个部分的设定如下表:

字段 允许值
0-59
小时 0-23
日期 1-31
月份 1-12 或者 JAN-DEC
星期 0-6 或者 SUN-SAT

可以在五个字段中的任意一个字段中使用运算符:

符号 描述 示例
* 任意数值 15 * * * * 在每天的每个小时的15分运行
, 数值列表分隔符 2,10 4,5 * * * 在每天的第4和第5个小时的第2和第10分运行
- 数值范文连接 30 4-6 * * * 在每天的第4和5和6小时的30分运行
/ 步进数值 20/15 * * * * 在每天的每个小时中,从第20分钟到59分钟每隔15分钟运行一次(即20分、35分和50分运行)

注意:

  • 以上时间均为UTC标准时间,不是北京时间
  • 只要当前时间符合以上时间就会运行,可以运行多次而非仅在第一次符合时间要求时运行
  • GitHub操作不支持非标准语法@yearly、@monthly、@weekly、@daily、@hourly和@reboot。

更多用法

可以参考官方Doc中的schedule部分:

Events that trigger workflows - GitHub Docshttps://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows

和标准的Cron表达式的区别

目前注意到了两个区别,第一,是位数区别,不能设置秒;第二,是星期的允许值不同,从0开始而非从1开始。常规的Cron表达式格式如下。

特殊符号:

  • “*” 字符被用来指定所有的值。如:"*"在分钟的字段域里表示“每分钟”。
  • “?” 字符只在日期域和星期域中使用。它被用来指定“非明确的值”。当你需要通过在这两个域中的一个来指定一些东西的时候,它是有用的。看下面的例子你就会明白。 月份中的日期和星期中的日期这两个元素时互斥的一起应该通过设置一个问号来表明不想设置那个字段。
  • “-” 字符被用来指定一个范围。如:“10-12”在小时域意味着“10点、11点、12点”。
  • “,” 字符被用来指定另外的值。如:“MON,WED,FRI”在星期域里表示”星期一、星期三、星期五”。
  • “/” 字符用于指定增量。如:“0/15”在秒域意思是每分钟的0,15,30和45秒。“5/15”在分钟域表示每小时的5,20,35和50。符号“*”在“/”前面(如:*/10)等价于0在“/”前面(如:0/10)。记住一条本质:表达式的每个数值域都是一个有最大值和最小值的集合,如:秒域和分钟域的集合是0-59,日期域是1-31,月份域是1-12。字符“/”可以帮助你在每个字符域中取相应的数值。如:“7/6”在月份域的时候只有当7月的时候才会触发,并不是表示每个6月。
  • “L” 是‘last’的省略写法可以表示day-of-month和day-of-week域,但在两个字段中的意思不同,例如day-of-month域中表示一个月的最后一天。如果在day-of-week域表示‘7’或者‘SAT’,如果在day-of-week域中前面加上数字,它表示一个月的最后几天,例如‘6L’就表示一个月的最后一个星期五。
  • “W” 字符只允许日期域出现。这个字符用于指定日期的最近工作日。例如:如果你在日期域中写 “15W”,表示:这个月15号最近的工作日。所以,如果15号是周六,则任务会在14号触发。如果15好是周日,则任务会在周一也就是16号触发。如果是在日期域填写“1W”即使1号是周六,那么任务也只会在下周一,也就是3号触发,“W”字符指定的最近工作日是不能够跨月份的。字符“W”只能配合一个单独的数值使用,不能够是一个数字段,如:1-15W是错误的。
  • “L”和“W”可以在日期域中联合使用,LW表示这个月最后一周的工作日。
  • “#” 字符只允许在星期域中出现。这个字符用于指定本月的某某天。例如:“6#3”表示本月第三周的星期五(6表示星期五,3表示第三周)。“2#1”表示本月第一周的星期一。“4#5”表示第五周的星期三。
  • “C” 字符允许在日期域和星期域出现。这个字符依靠一个指定的“日历”。也就是说这个表达式的值依赖于相关的“日历”的计算结果,如果没有“日历”关联,则等价于所有包含的“日历”。如:日期域是“5C”表示关联“日历”中第一天,或者这个月开始的第一天的后5天。星期域是“1C”表示关联“日历”中第一天,或者星期的第一天的后1天,也就是周日的后一天(周一)。

注意:除了{日期}和{星期}可以使用"?"来实现互斥,表达无意义的信息之外,其他占位符都要具有具体的时间含义,且依赖关系为:年->月->日期(星期)->小时->分钟->秒数。

在线Cron表达式设置工具

推荐两个好用的表达式生成工具,第二个可以给出运行时间进行人类可读的验证。需要注意将该表达式调整位数和星期的设置,以应用在 Github / Gitlab Actions 中。

Cron - 在线Cron表达式生成器

在线Cron表达式生成器

参考教程:

https://www.jianshu.com/p/e9ce1a7e1ed1

Github / Gitlab Actions 中的 cron 格式 和设置方法相关推荐

  1. Android解析xml的方法,Android中解析XML格式数据的方法

    XML介绍:Extensible Markup Language,即可扩展标记语言 一.概述 Android中解析XML格式数据大致有三种方法: SAX DOM PULL 二.详解 2.1 SAX S ...

  2. java中if条件格式_Java 设置Excel条件格式示例代码(高亮条件值、应用

    概述 在Excel中,应用条件格式功能可以在很大程度上改进表格的设计和可读性,用户可以指定单个或者多个单元格区域应用一种或者多种条件格式.本篇文章,将通过Java程序示例介绍条件格式的设置方法,设置条 ...

  3. dw怎么修改html框架的宽度,Dreamweaver (dw)cs6中div标签宽度和高度设置方法

    很多用户给小编留言说dw cs6中div标签宽度和高度怎么设置?Dreamweaver cs6中div标签想要设置高度和宽度,该怎么设置呢?今天脚本之家小编就给大家带来Dreamweaver (dw) ...

  4. C#中Winfrom默认输入法的设置方法

    本文实例讲述了C#中Winfrom默认输入法的设置方法.分享给大家供大家参考.具体分析如下: 在WINFORM中我们经常遇到文本输入框中输入法被禁用或老是变全角输入法等问题,经查阅相关资料,现小结如下 ...

  5. php中session时间,php中session过期时间的设置方法

    php中session过期时间的设置方法 发布时间:2020-04-22 10:21:19 来源:亿速云 阅读:140 作者:小新 今天小编给大家分享的是php中session过期时间的设置方法,相信 ...

  6. 中琅条码软件连续打印设置方法

    在日常工作中,除了一些固定内容的标识标签,大多数时候还是会用到连续打印这种功能,很多电子产品出厂时都会贴上其串码,也就是pn或者sn码,今天我们就来简单看一下使用中琅条码软件如何进行连续打印这些pn以 ...

  7. VS2005 中动态链接库引入库的设置方法

    http://blog.163.com/link_xc/blog/static/6615796320122319438641/ 在利用VS2005开发需要隐式调用动态链接库的应用程序时,必须对引入库的 ...

  8. GitHub/GitLab/Gitee中项目互拷贝后仍保留历史提交记录的方法

    GitHub.GitLab.Gitee等在同一个网站中执行复制或拷贝一个已有项目到一个新项目比较简单,因为它们在每一个项目上都有一个Fork按钮,直接点击此Fork按钮即可,Fork后的新项目会保留原 ...

  9. linux(centos)中的cron计划任务配置方法

    这里志文工作室要为您介绍的cron来源于希腊单词chronos(意为"时间"),指linux系统下一个自动执行指定任务的程序(计划任务). 1. crontab命令选项 #cron ...

最新文章

  1. React学习手记5-细说组件state
  2. 前后端完全分离出现跨域、无法访问后台解决方案
  3. 模拟实现strstr
  4. Ubuntu 18.04 固定ip 设置方法
  5. [Qt教程] 第17篇 2D绘图(七)涂鸦板
  6. 《操作系统实现之路》源代码下载路径及求助途径
  7. PHP 多参数方法的重构
  8. OpenHub框架进行的异步通信
  9. dreamweaver 正则表达式为属性值加上双引号_PHP正则表达式核心技术完全详解 第2节...
  10. 提升有监督学习效果的实战解析
  11. leetcode--single number.
  12. 使用idea工具进行反编译
  13. bp神经网络数据预测实例,bp网络神经预测模型
  14. hbase的快速下载
  15. understand 代码解析工具的使用
  16. java socket保活_gb28181简单实现sip信令服务器(java版基于springboot):四、sip摄像头心跳保活、推流(tcp/udp)和结束推流...
  17. sublime全解:从菜鸟到大师
  18. 为什么对偶问题一定是凸优化问题?
  19. vue+element-ui 实现上传前图片压缩功能
  20. Guitar Pro8吉他打谱下载自学制作教程

热门文章

  1. 微信小程序手机号-springboot
  2. 光学瞄准镜测距之数学原理
  3. 海尔对话 Unity:作为数字转型的高阶形态,数字孪生发展前景不可逆
  4. 股票内参|港股暴力拉升 恒生科技指数大涨
  5. python入门学习(excel导入mysql)
  6. Android换肤功能实现与换肤框架QSkinLoader使用方式介绍
  7. 百度网盘——下载限速问题解决方案(油猴(Tampermonkey)+百度网盘直链下载助手+IDM)
  8. 使用Kotlin配合RxJava网络请求
  9. javascript音乐播放器
  10. Java常用基础知识点总结(最全)