使用GitHub Actions时,可以在表达式中访问contexts。上下文之一是github
上下文。它具有属性github.event
,它是一个对象。
github.event
对象具有哪些属性?我该如何区分推送事件和标签创建事件?
答案 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.ref
和github.event.ref
不同:
github.ref == 'refs/tags/v1.2.5'
github.event.ref == 'v1.2.5'