Actions concurrency 怎样取消旧工作流
要让 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,依仓库流程完成提交或合并。

这一步的完成标志是文件页显示新提交,并能看到顶层 concurrency 及 true 值。仅在编辑框内改完、关闭页面,配置不会生效。受保护分支应按仓库要求走合入流程。
2. 在 Actions 确认旧运行进入取消状态
选择允许重复触发、可以安全中断的测试工作流。在配置生效后,对同一个分支先后触发两次运行,确保第二次到来时第一次仍未结束。进入 Actions → 左侧对应工作流,打开运行列表,比较两次运行的分支、事件和提交。

完成标志是旧运行最终显示 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
VS Code Tasks 怎样复用输入变量
- 上一篇
- VS Code Tasks 怎样复用输入变量
- 下一篇
- Responses API 怎样保存结构化输出
-
- 文章 · 软件教程 | 1小时前 | 容器 · 开发环境 · docker · 容器编排 Docker Compose profile 服务启停 Compose profiles
- Compose profiles 怎样按 profile 启停服务
- 499浏览 收藏
-
- 文章 · 软件教程 | 1小时前 |
- Draft Pull Request 怎样切换审查状态
- 418浏览 收藏
-
- 文章 · 软件教程 | 1小时前 |
- Actions artifacts 怎样设置产物保留期
- 423浏览 收藏
-
- 文章 · 软件教程 | 1小时前 | 环境变量 · vs code · 环境变量 VS Code launch.json 调试配置 IDE Run Configuration envFile
- IDE Run Configuration 怎样保存环境变量
- 459浏览 收藏
-
- 文章 · 软件教程 | 1小时前 | 容器 · docker · docker 多阶段构建 BuildKit buildx Build cache
- Build cache 怎样复用多阶段缓存
- 372浏览 收藏
-
- 文章 · 软件教程 | 1小时前 | docker · 开发工具 · Docker Compose Compose Watch 源码同步
- Compose Watch 怎样同步源码变化
- 410浏览 收藏
-
- 文章 · 软件教程 | 1小时前 |
- Codespaces 怎样调整预构建环境
- 187浏览 收藏
-
- 文章 · 软件教程 | 1小时前 |
- Dev Containers 怎样从配置打开容器
- 100浏览 收藏
-
- 文章 · 软件教程 | 1小时前 |
- VS Code 扩展怎样安装指定版本
- 490浏览 收藏
-
- 文章 · 软件教程 | 12小时前 |
- VS Code launch 怎样给调试配置传递环境文件
- 399浏览 收藏
-
- 文章 · 软件教程 | 16小时前 |
- VS Code port forwarding 怎样限制转发端口的访问范围
- 477浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 684次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 699次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 749次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 714次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 551次使用
-
- VS Code 怎么给 Go 项目配置测试任务:tasks.json 运行与结果验收
- 2026-07-09 501浏览
-
- Windows 11 如何开启 HEIF 图片支持
- 2026-05-31 501浏览
-
- TikTok用户画像与付费订阅变现方法
- 2026-05-27 501浏览
-
- 学信网学历翻译件申请方法
- 2026-05-27 501浏览
-
- Windows 11 24H2 更新失败0x80070005解决方法
- 2026-05-26 501浏览

