首页 > 解决方案 > 为什么“发布”事件也会生成“推送”事件?

问题描述

我已阅读Github Actions 文档,但无法弄清楚为什么在发布新版本时几乎同时发生事件push 触发GitHub Action 工作流。 release换句话说,我的工作流 yaml 文件是这样开始的,指定它应该为推送和发布事件运行:

name: Release Actions

on:
  push:
    paths:
    - '**.csproj'
    - '**.cs'
    - '**.css'
    - '**.cshtml'
    - '**.dll'
    - '**.js'
    - '**.sln'
    - '**.yml'
  release:
    types: [published, prereleased]

当我发布一个新版本(标签)时,我希望它执行一次。然而,我看到两个事件几乎同时触发(相隔约 5-10 秒):

在此处输入图像描述

现在,该release事件确实触发了push我的 repo,但唯一正在更新的文件是我的package.json文件。并且事件的paths定义没有将 **.json 列为路径之一,所以我不希望推送事件触发它。push

那么,什么可以解释正在发生的第二个事件push

标签: githubgithub-actions

解决方案


推送事件不是被推送到分支的提交,而是被推送到的标签refs/tags/<tag>。有意创建发布会同时生成 areleasepush事件。

如果您不希望on: push工作流在标签上触发,您可以添加一个branches过滤器,该过滤器将导致标签事件被忽略,如此所述。

name: Release Actions

on:
  push:
    paths:
    - '**.csproj'
    - '**.cs'
    - '**.css'
    - '**.cshtml'
    - '**.dll'
    - '**.js'
    - '**.sln'
    - '**.yml'
    branches:
    - '**'
  release:
    types: [published, prereleased]

推荐阅读