Skip to main content

常用钩子

详细教程

push - 代码提交时

1、全局匹配

on: push

所有push操作都会触发

2、指定分支

on:
push:
branches:
- 'main'
- 'master'
- 'release/**'

仅当在 main或者master分支收到推送时时才触发

3、指定文件

on:
push:
paths:
- '**.js'

4、指定tag

on:
push:
tags:
- v1.**

当有人推送以 v1. 开头的标记时,此工作流程将运行

git tag -l

git tag [tagname]

git tag v2.0.1

git push origin v2.0.1

5、指定分支同时指定文件

# 指定某分支
on:
push:
branches:
- 'release/**'
paths:
- '**.js'

仅当向名称以 releases/开头的分支发生推送,且包含 JavaScript (.js) 文件时才会运行工作流程

定时任务

Github Actions 的定时任务是根据 crontab guru语法 进行配置的,可以非常灵活的定制各种执行条件,不过需要注意的是定时任务只是表示github会在指定时间将我们的workflow加入它的执行队列,并不等于在指定时间马上执行。

on:
schedule:
- cron: '30 5 * * 1,3'
- cron: '30 5 * * 2,4'

jobs:
test_schedule:
runs-on: ubuntu-latest
steps:
- name: Not on Monday or Wednesday
if: github.event.schedule != '30 5 * * 1,3'
run: echo "This step will be skipped on Monday and Wednesday"
- name: Every time
run: echo "This step will always run"

上面脚本定义了两个setps,一个每次都会执行,一个仅在 schedule 符合条件时,当前设置了周一和周三才会执行

计划任务语法有五个字段,中间用空格分隔,每个字段代表一个时间单位。

┌───────────── minute (0 - 59)
│ ┌───────────── hour (0 - 23)
│ │ ┌───────────── day of the month (1 - 31)
│ │ │ ┌───────────── month (1 - 12 or JAN-DEC)
│ │ │ │ ┌───────────── day of the week (0 - 6 or 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 分钟)。

pull

pull-request 拉取请求时