github action格式
github action的workflow文件格式十分简洁
首先是工作流的名称,是允许空格的,换行应该不行,yaml格式没有这么强的兼容能力
name: workflow name
然后需要声明工作流的触发方式
on:
push:
workflow_dispatch
schedule:
上面是比较常用的几种触发方式
触发方式
push
这个方式最简单的应用就是限制某一些分支,一有push动作,就触发工作流
on:
push:
branches:
- 'main'
- 'test'
还有两个比较冷门但是也十分好用的选项
比如当位于某个分支并且某个文件改动时,触发
on:
push:
branches:
- 'main'
paths:
- "*.md"
或者有一个tag为v* . * . * 格式的tag被上传
on:
push:
tags:
- "v*.*.*"
这里需要说明,虽然branches和paths的关系可以为&,但是tag这个概念本身是给commit用的,因此如果指定了tag,那么branches和paths就无法和其进行&运算
workflow_dispatch
这个的英文很幽默,但是它确实是手动触发的方式
on:
workflow_dispatch:
inputs:
logLevel:
description: 'Log level'
required: true
default: 'warning'
type: choice
options:
- info
- warning
- debug
tags:
description: 'Test scenario tags'
required: false
type: boolean
environment:
description: 'Environment to run tests against'
type: environment
required: true
inputs下面的一级名称是很有用的,在后面的工作流描述中,可以通过inputs.logLevel类似的方式访问这些变量
schedule
这个对于那些定时任务十分好用,用起来也是十分简单
on:
schedule
- cron: "12 13 22 9 *" //每年的9月22号的13:12
- cron: "0 12 * * 0" //每周天12:00
需要了解一下cron的格式
其他的方式可以参考events-that-trigger-workflows
工作流描述
...
一些github平台的冷知识
- 触发方式的作用范围
当workflow_dispatch方式在默认分支的时候,github会出现专门的按钮来方便你填入参数触发,但是不在默认分支的话,这个方式就没有用了
这时候还要引入一个东西,就是触发方式的作用范围,push的方式作用范围是自定义程度比较高的,但是有很多方式会限定在默认分支,具体的参考github官方文档
- ci的status页面
当你不在默认分支的时候,你创建了workflow文件,上传之后会发现。Actions界面不会显示你的工作流情况。这时候你将workflow文件先merge进默认分支或者用一些方式触发工作流运行一次,你的status界面就会出现那个工作流的详情

