GitHub Action可以捕获Github的一些事件(不是所有)

通常分两部分:

  • 通过某些事件触发workflow
  • 在jobs\steps获取事件参数

第一部分算是比较简单的:

1
2
3
4
5
6
7
name: XXX

# 设置一些触发条件
on:
  workflow_run:
    workflows: [ "CI And CD" ]
    types: [ completed ]

github官方文档有叙述


第二部分,可能有些小问题,但总体问题不大:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
name: Test Event Catch

# 在workflows "CI And CD"完成时触发这个workflow
on:
  workflow_run:
    workflows: [ "CI And CD" ]
    types: [ completed ]

jobs:
  update-badge:
    runs-on: ubuntu-latest

    # 获取事件参数
    env:
      pte_check_suite_url: ${{ github.event.workflow_run.check_suite_url }}

    steps:
      - name: Print event result
        run: echo ${pte_check_suite_url}

注意: github.event后不能直接获取事件的work load。还需要加上事件类型:

1
2
3
4
5
6
7
8
9
# 错误的做法
jobs:
  env:
    pte_check_suite_url: ${{ github.event.check_suite_url }}

# 正确的做法
jobs:
  env:
    pte_check_suite_url: ${{ github.event.workflow_run.check_suite_url }}

关于事件所携带的数据和可以使用的事件,可以见GitHub 官方文档:

https://docs.github.com/en/actions/learn-github-actions/events-that-trigger-workflows

完.