GitHub Workflow中的github.event有哪些属性?

时间:2019-12-16 02:37:04

标签: continuous-integration webhooks github-actions

使用GitHub Actions时,可以在表达式中访问contexts。上下文之一是github上下文。它具有属性github.event,它是一个对象。

github.event对象具有哪些属性?我该如何区分推送事件和标签创建事件?

1 个答案:

答案 0 :(得分:0)

要区分不同的事件,您始终可以检查github.event_name

jobs:
  test:
    runs-on: ubuntu-18.04
    if: github.event_name == 'push'

github.event的属性取决于触发的事件类型。它们记录在REST API v3 documentation的“事件类型和有效负载”部分中。 “ Events that trigger workflows”文档的“ Webhook事件”部分包含指向“ Webhook事件有效负载”列中每个对象的链接。

示例

您有一个create事件,因此有github.event_name == 'create'。您可以在workflow.yml中访问以下属性(如Event Types & Payload / CreateEvent中所述)

  • ${{ github.event.ref_type }}
  • ${{ github.event.ref }}
  • ${{ github.event.master_branch }}
  • ${{ github.event.description }}

完整的工作流程示例

这是一个单一的工作流程,根据它是由推送还是标签创建事件触发的,它可以运行不同的工作。

  • 对推送和标记创建进行测试
  • 将应用程序打包在任何标签上
  • 当标签以v开头时部署应用程序
name: CI

on:
  push:
    branches:
      - master
  create:
    tags:

jobs:

  test:
    runs-on: ubuntu-18.04

    steps:
      - <YOUR TESTSTEPS HERE>

  dist:
    runs-on: ubuntu-18.04
    if: github.event_name == 'create'

    steps:
      - <YOUR BUILDSTEPS HERE>
      - name: Upload artifact
        uses: actions/upload-artifact@v1
        with:
          name: mypackage
          path: dist

  deploy:
    needs: dist
    runs-on: ubuntu-18.04
    if: github.event_name == 'create' && startsWith(github.ref, 'refs/tags/v')
    # This does the same:
    # if: github.event_name == 'create' && github.event.ref_type == 'tag' && startsWith(github.event.ref, 'v')

    steps:
      - name: Download artifact
        uses: actions/download-artifact@v1
        with:
          name: mypackage
      - <YOUR DEPLOY STEPS HERE>

请注意,github.refgithub.event.ref不同:

  • github.ref == 'refs/tags/v1.2.5'
  • github.event.ref == 'v1.2.5'