当前位置:首页 > 文章列表 > 文章 > 软件教程 > Actions concurrency 怎样取消旧工作流

Actions concurrency 怎样取消旧工作流

来源:17golang原创 2026-10-25 11:51:29 0浏览 收藏

要让 GitHub Actions 在同一分支再次提交时取消旧工作流,需要在工作流顶层设置 concurrency,为同类运行生成相同的 group,并开启 cancel-in-progress: true。只写并发组通常只会限制同时运行数量,不能等同于取消正在执行的旧运行。

官方地址:https://github.com/

旧运行为什么没有被取消

常见现象是连续推送后,旧构建仍在执行,新构建显示 Pending。先分清“已经运行”和“等待运行”:默认并发策略会替换同组已有的待运行项;要请求取消正在运行的项,还需要取消选项。已经完成的历史运行不会因此删除。

本文面向 GitHub.com 的普通测试或预览构建,以虚构仓库 demo-team/preview-demo 说明操作。所有配图均为原创界面示意,代码是配置片段,没有实际执行或修改仓库。涉及不可中断的生产发布时,应先评估部署恢复过程,再决定取消策略。

1. 修改工作流并提交取消选项

进入仓库 Code → .github → workflows,打开实际运行的 YAML 文件,点击文件右上角铅笔图标。把下列内容加入顶层,与 jobs 同级。不要放在 steps 里,也不要在已有顶层 concurrency 之外重复添加第二份。

# 添加到工作流顶层,与 jobs 同级;保留现有触发器和任务
concurrency:
  # 固定业务前缀,并按工作流名称与分支或标签引用划分组
  group: preview-build-${{ github.workflow }}-${{ github.ref }}
  # 同组新运行到来时,请求取消仍在运行的旧任务
  cancel-in-progress: true

保留原来的 on 与 jobs 内容。这里的 preview-build 是业务前缀,github.workflow 区分不同工作流,github.ref 区分触发引用。需要相互取消的两次运行必须计算出同一个组名;若把 github.run_id 拼入组名,每次运行都会分到不同组。

编辑后点击 Preview 检查改动范围,再点击 Commit changes...,填写简短说明并选择提交分支。默认分支建议通过新分支和拉取请求合入;只有配置实际进入用于触发的版本后,后续运行才会使用它。最后点击 Commit changes 或 Propose changes,依仓库流程完成提交或合并。

原创操作示意:工作流文件的Commit changes对话框与提交分支选项
图1:操作示意图,确认修改被提交到预期分支;不是实际账号截图。

这一步的完成标志是文件页显示新提交,并能看到顶层 concurrency 及 true 值。仅在编辑框内改完、关闭页面,配置不会生效。受保护分支应按仓库要求走合入流程。

2. 在 Actions 确认旧运行进入取消状态

选择允许重复触发、可以安全中断的测试工作流。在配置生效后,对同一个分支先后触发两次运行,确保第二次到来时第一次仍未结束。进入 Actions → 左侧对应工作流,打开运行列表,比较两次运行的分支、事件和提交。

原创结果示意:同一测试分支旧运行Cancelled,新运行In progress
图2:结果示意图,旧运行取消、新运行继续的预期状态;图中编号为虚构示例。

完成标志是旧运行最终显示 Cancelled,新运行继续排队或执行。取消请求到状态更新需要时间,不能要求新提交一出现旧进程就瞬间消失。如果第一次已完成,这次观察不能证明取消选项是否起作用,应使用仍在执行的测试运行进行观察。

不要把“编号较小”当成唯一依据,要确认它确实属于同一工作流与同一引用。push 与 pull_request 事件的 github.ref 可能不同,因此同一开发分支对应的两种事件不一定进入同一个组。

不生效时检查分组与权限

表现优先检查调整方式
旧运行继续,新运行等待是否缺少 cancel-in-progress 或值为 false在正确层级开启 true
两次运行都执行组名是否每次变化移除 run_id 等唯一值,核对事件引用
其他工作流被取消是否共用了同一个固定组在组名中加入工作流名称或业务标识
修改后没有任何变化文件是否已提交、配置是否在触发版本中确认提交与合入状态,再观察新运行

取消整个运行就使用顶层 concurrency;如果写在 jobs 下某个任务中,作用范围是该任务。组名不区分大小写,因此只把大小写改掉不能隔离两个组。

手动取消需要仓库写入权限。若旧运行本身使用的是旧配置、需要先清理一次,可进入 Actions → 对应工作流 → 处于 queued 或 in progress 的运行,在右上角点击 Cancel workflow。等它显示取消状态再继续。这个操作用于当次运行,不会替代持久的 concurrency 配置。

需要回退时保留排队能力

只想排队,不想中断怎么办?保留组名,把 cancel-in-progress 改为 false 并提交。默认策略仍可能替换待运行项,不能把它理解成保存每一次等待运行。

设置会取消其他仓库的运行吗?本文讨论的是同一仓库内的并发组。先核对本仓库中的工作流是否共用组名,避免把全局资源竞争与这里的运行分组混为一谈。

取消后会自动撤销部署吗?不要依赖这种假设。工作流取消不等于外部系统事务回滚。对于已经触发的外部发布,应按部署系统的恢复机制处理。

如果改动造成意外中断,按团队流程回退本次提交或将取消选项设为 false,再提交生效。保留工作流与分支两层分组,可以继续限制重复构建,同时减少不同任务互相影响。

并发配置文档:https://docs.github.com/en/actions/how-tos/write-workflows/choose-when-workflows-run/control-workflow-concurrency

文件编辑文档:https://docs.github.com/en/repositories/working-with-files/managing-files/editing-files

手动取消文档:https://docs.github.com/en/actions/how-tos/manage-workflow-runs/cancel-a-workflow-run

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
VS Code Tasks 怎样复用输入变量VS Code Tasks 怎样复用输入变量
上一篇
VS Code Tasks 怎样复用输入变量
Responses API 怎样保存结构化输出
下一篇
Responses API 怎样保存结构化输出
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    684次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    699次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    749次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    714次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    551次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码