【问题标题】:Why does a "release" event generate a "push" event as well?为什么“发布”事件也会生成“推送”事件?
【发布时间】:2020-01-26 09:42:30
【问题描述】:

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

name: Release Actions

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

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

现在,release 事件确实 触发了 push 到我的存储库,但唯一要更新的文件是我的 package.json 文件。 pathspush 事件的定义确实 not 将 **.json 列为路径之一,所以我不希望推送事件触发它。

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

【问题讨论】:

    标签: github github-actions


    【解决方案1】:

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

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

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

    【讨论】:

    • 感谢您的回复。起初我很兴奋,因为这确实解决了release 上发生的两个事件的问题。但是,现在我的代码 push 事件(推送新代码提交)都不再触发该操作。我所做的只是添加tags-ignore- '**' 行,就像你展示的那样。
    • 我已经用我测试过的替代解决方案更新了答案。它似乎适用于代码push,并且仅在创建发布时触发release(不是push)。
    猜你喜欢
    • 2021-11-20
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多