github - 为什么“发布”事件也会生成“推送”事件?
问题描述
我已阅读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
?
解决方案
推送事件不是被推送到分支的提交,而是被推送到的标签refs/tags/<tag>
。有意创建发布会同时生成 arelease
和push
事件。
如果您不希望on: push
工作流在标签上触发,您可以添加一个branches
过滤器,该过滤器将导致标签事件被忽略,如此处所述。
name: Release Actions
on:
push:
paths:
- '**.csproj'
- '**.cs'
- '**.css'
- '**.cshtml'
- '**.dll'
- '**.js'
- '**.sln'
- '**.yml'
branches:
- '**'
release:
types: [published, prereleased]
推荐阅读
- python - Python - TypeError:元组索引必须是整数或切片,而不是 numpy.float64
- php - if 语句如何处理从 PHP 方法返回的数据?
- spring - Spring Data:获取 Spring bean 的 Target Class 对象和自定义接口类型
- python-3.x - 通过 python 实现自动化
- node.js - 如何复制 Google 表格并获得数据验证以保持完整?
- excel-formula - excel中最大值数组的总和?
- python - I'm trying to switch frames in Selenium using Xpath, but haven't had any success so far
- python - 不明白这个“对象不可调用”错误
- html - SQL HTML 电子邮件列格式而不是行格式
- google-cloud-platform - 列出由特定 Google Cloud Platform API 管理的资源