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平台的冷知识

  1. 触发方式的作用范围
    当workflow_dispatch方式在默认分支的时候,github会出现专门的按钮来方便你填入参数触发,但是不在默认分支的话,这个方式就没有用了

这时候还要引入一个东西,就是触发方式的作用范围,push的方式作用范围是自定义程度比较高的,但是有很多方式会限定在默认分支,具体的参考github官方文档
Pasted image 20260128214030.png|338x607

  1. ci的status页面
    当你不在默认分支的时候,你创建了workflow文件,上传之后会发现。Actions界面不会显示你的工作流情况。这时候你将workflow文件先merge进默认分支或者用一些方式触发工作流运行一次,你的status界面就会出现那个工作流的详情
    image.png

reference

github官方文档
events-that-trigger-workflows
阮一峰的网络日志