如何限制Github Action在Release触发时仅执行一次?
解决GitHub Action在Release操作时重复触发的问题
当你使用on: release时,GitHub会响应Release相关的所有动作事件(比如创建、发布、标记预发布、编辑、删除等),所以创建预发布版时会同时触发created、prereleased、published多个事件,导致Workflow多次运行。要实现每次用户交互仅触发一次,可以通过以下两种方式处理:
方法一:指定监听的Release事件类型
直接在release事件下配置types,只监听你需要的特定动作,避免触发重复事件。比如你想在发布(含正式版/预发布版)、编辑、删除时各触发一次,可配置如下:
name: Test on: release: types: [published, edited, deleted] # 根据需求选择合适的事件类型 workflow_dispatch: jobs: #... 你的任务内容
常用的Release事件类型说明:
published: 发布Release(包括草稿转为正式/预发布,或直接发布正式/预发布版),此事件在用户完成发布操作后仅触发一次created: 创建Release(包括草稿、预发布、正式版的初始创建)edited: 编辑Release的信息(如标题、描述等)deleted: 删除Release
如果只需要在用户完成预发布/正式发布操作时触发一次,仅保留published即可,这样就能避免创建过程中的多次触发。
方法二:在Job中添加条件判断
保留原有的on: release配置,但在具体Job中通过if条件过滤,只在特定动作事件下执行任务:
name: Test on: release: workflow_dispatch: jobs: your-job: runs-on: ubuntu-latest # 仅当事件动作为published时执行,可替换为你需要的其他动作类型 if: github.event.action == 'published' steps: #... 你的步骤内容
这种方式更灵活,适合需要监听多个事件但部分Job仅需响应特定动作的场景。
内容的提问来源于stack exchange,提问作者Fory
相关产品推荐
相关产品推荐

