Quarto 稳定版(Patch Release)发布全流程指南:从稳定分支测试、安装包构建到多渠道分发
开发工具文档【免费下载链接】quarto-cliOpen-source scientific and technical publishing system built on Pandoc.项目地址https://gitcode.com/gh_mirrors/qu/quarto-cli点击查看免费下载Quartoquarto-cli的版本发布分为两条路径新 major/minor 版本如 1.10 → 1.11走prerelease → stable的完整周期而稳定分支v1.x上的补丁版本patch release如 1.11.5则通过本文所述的稳定版检查清单快速迭代。本文以仓库中的 checklist-make-a-new-stable-quarto-release.md 为骨架逐步骤拆解一次稳定补丁发布要执行的测试、构建、官网同步、PyPI、Chocolatey 发布与 changelog 整理并结合 create-release.yml、publish-cloudsmith.yml、test-smokes-parallel.yml 等真实工作流源码讲清每一步背后的自动化原理。读完本文你将掌握如何在 quarto-cli 仓库中完整发布一个稳定补丁版本并理解哪些环节自动完成、哪些环节必须人工介入。前置理解稳定分支上的补丁版本稳定版stable release发布与预发布prerelease发布的关键差异体现在两条清单的分工上新周期major/minor发布走 checklist-make-a-new-quarto-release.md在main上创建v1.x分支、切出 backports 脚手架、构建 prerelease、最终把预发布构建重新标记为稳定版本文的稳定版清单则处理稳定分支v1.x上的后续补丁此时分支已经存在测试、构建、发布全部在既有v1.x分支上进行create-release.yml直接以pre-releasefalse触发。一个直观的证据是仓库当前状态configuration文件中QUARTO_VERSION1.11根目录 version.txt 记录1.11.5news/changelog-1.11.md为当前版本的 changelog——这正是1.11 主版本已发布、正在稳定分支上迭代补丁的典型形态。发布稳定版的核心原则可以概括为先验证测试→ 再构建安装包→ 再分发官网/PyPI/Chocolatey/社区渠道→ 最后收尾changelog。以下按此顺序展开。第 1 步在稳定分支上运行冒烟测试发布的第一个动作是确保稳定分支上的测试全部通过。清单要求在 GitHub Actions 的 Parallel Smokes Tests 工作流中将 Use workflow from... 下拉框切换为当前的v1.x稳定分支后点击 Run Workflow。从源码看test-smokes-parallel.yml 明确支持稳定分支场景其pull_request与push触发器均覆盖v[1-9].[0-9]分支模式并注释 run also on released version branch (for patch releases)。该工作流通过./run-parallel-tests.sh -n${{ inputs.nBuckets }}把测试按历史耗时切分为多个 bucket 并行执行默认 10 个CI 中默认 20任何一个 bucket 失败都代表大范围功能受损因此它是发布前最重要的质量闸门。值得注意清单要求手工指定分支运行而不是依赖 PR 触发。原因是稳定分支通常只接收 backport 的少量提交发布前需要一次针对分支最新提交的完整回归。第 2 步构建并发布稳定版安装程序Build Installers测试通过后进入核心步骤——触发 Build Installers 工作流即 create-release.yml。在 Actions 页面选择该工作流后关键参数设置如下参数稳定版要求说明Use workflow from...当前v1.x稳定分支以稳定分支代码构建而非mainPre-release取消勾选确保未勾选决定 GitHub Release 是否标记为预发布稳定版必须为falsePublish release勾选确保已勾选决定是否真正创建 Release 并推送 tag除了这两个核心开关create-release.yml 的workflow_dispatch还暴露了更多可选输入稳定版发布一般保持默认即可osall/linux/windows/macos默认all选择构建哪些平台工作流内部有保护逻辑——当publish-releasetrue且os ! all时会直接报错退出防止单平台构建却发布正式 Releasesmoke-artifacts-only仅构建 Linux amd64 tarball 与签名后的 Windows zip 供内置版本测试使用且要求publish-releasefalse二者同时勾选会触发 Fail on publish-release smoke-artifacts-only 检查skip-auto-smoke跳过test-smokes-built.yml自动触发的内置版本冒烟测试。工作流触发后从源码可以看到一条完整的自动化流水线configure 任务读取根目录configurationQUARTO_VERSION与version.txt计算出完整版本号version_full major.minor.build_number若version.txt中的主次版本与QUARTO_VERSION一致补丁发布场景则build_number在原基础上 1生成 release note更新version.txt并提交同时打上v版本号的 Git tag并行构建 Linuxamd64/arm64 的 tarball、deb、rpm、WindowsMSI zip含代码签名、macOSpkg tar.gz含签名与公证产物对 Linux tarball、Windows zip、macOS zip 分别执行quarto check/quarto --paths/quarto --version冒烟验证publish-release 任务汇总所有产物计算 sha256 checksums通过softprops/action-gh-release创建 GitHub Releaseprerelease取值即来自pre-release输入若流程失败cleanup-when-failure任务会自动revertversion.txt的提交并删除已推送的 tag保证失败不会留下半成品版本号。工作流最后还会根据输入自动触发后续分发docker-push构建 Docker 镜像daily参数取pre-release值call-cloudsmith-publish在pre-releasefalse时调用 Cloudsmith 发布详见后文。清单在此时有一句轻松但重要的提示Take a sip of tea ☕, bask in the glory of automation.——一旦点下 Run Workflow版本号、tag、各平台安装包与 GitHub Release 均由自动化完成这也是该仓库刻意设计的无人值守体验。第 3 步触发 quarto.org 官网下载页更新新稳定版可用后需要同步 quarto.org 官网。清单要求在 quarto-dev 组织下的quarto-web仓库中运行其 Update Downloadsupdate-downloads.yml工作流分支选择main。该工作流会自动检测新 release并更新 quarto-web 中的下载页文件使官网下载链接指向新版本。清单特别提示趁官网自动化运行的间隙同步推进下一步的 PyPI 发布——两条分发链路互不阻塞可以并行操作。第 4 步发布 Python 包到 PyPI官网更新期间需要在 quarto-cli-pypi 仓库PyPI 发布专用的下游仓库完成 Python 包发布在 quarto-cli-pypi 仓库中更新version.txt为要发布的版本号并提交进入 Actions选择 Publish Quarto PyPi 工作流点击 Run Workflow通过Production Release选项控制发布目标发布测试推荐先行取消勾选Production Release发布到 test.pypi。完成后用以下命令验证清单提醒首次执行可能因包未同步而提示找不到触发缓存失效后第二次通常成功python3 -m pip install -i https://test.pypi.org/simple --extra-index-url https://pypi.org/simple quarto-cli发布生产勾选Production Release正式发布到 PyPI。发布完成后同样Take a sip of tea ☕, bask in the glory of automation.第 5 步推送 chocolatey 包前提条件必须等 quarto.org 下载页已更新为新版本后才能执行 Chocolatey 发布——否则下载页与包源不一致会导致用户装到旧版本。步骤为在 quarto-dev 组织的quarto-release-bundles仓库中打开 Build Choco package Publish 工作流点击 Run Workflow务必勾选Whether to publish or not the package on chocolatey复选框等待维护者收到邮件确认即可无需其他操作。第 6 步整理稳定版 changelogbackports 归位这是收尾步骤也是唯一涉及直接修改本仓库代码的步骤。在 news/changelog-1.x.md当前仓库中即news/changelog-1.11.md中将# v1.(x1) backports标题下的## In this release中的条目整体移动到## In previous releases小节——因为本次补丁发布后这些 backport 已经正式随补丁版本上线提交并推送到稳定的v1.x分支commit message 中必须包含[release checklist]字样方便下个月判断是否需要再次发布补丁时快速检索历史。这套 changelog 结构的来源可以追溯到分支创建与 backport 流程在 checklist-make-a-new-quarto-release.md 中创建v1.x分支时要为news/changelog-1.x.md预先铺设# v1.(x1) backports含空的## In this release与## In previous releases子节此后由 checklist-backport-a-pr.md 流程把修复提交 backport 到稳定分支并登记到## In this release。本次稳定版发布正是这条链路闭环的时刻把已登记待发的条目降级为已随本补丁发布。其他渠道自动化与社区维护的分发除上述需人工操作的分发外稳定版发布还覆盖以下渠道多数为自动化或社区维护无需额外动作CloudsmithLinux 的 DEB/RPM 包由 Build Installers 工作流自动发布无需手动操作。源码层面create-release.yml 的call-cloudsmith-publish任务条件为inputs.publish-release !(inputs.pre-release true)——即稳定版pre-releasefalse自动触发prerelease 则跳过。手动重发场景见 cloudsmith-publishing.md其中也说明了首个 stable 版本因由预发布构建重标记而来Cloudsmith 不会自动获得它需要手动发布一次conda-forge自动创建 PR 更新quarto-feedstock中的包版本社区维护仓库成员作为 PR 审阅者仅在 PR 出问题时介入Wingetwinget bot 自动向 microsoft/winget-pkgs 提交 PR社区维护无需动作Scoop自动更新 manifests 仓库中的清单为维护者个人维护项目无需动作Homebrewhomebrew bot 自动更新 homebrew-cask 中的quartocask 清单无需动作。源码视角一次补丁版本号是如何计算与落盘的最后从源码角度把构建安装程序这一步的内部逻辑看透。create-release.yml的 configure 任务是整个发布的核心调度器其版本计算逻辑对应 create-release.yml 中 Get previous version 步骤如下read_version$(cat version.txt) version$(echo $read_version | grep -o [[:digit:]]*\.[[:digit:]]* | head -1) if [ $version $QUARTO_VERSION ]; then # 补丁发布build_number 1 build_number$(($(echo $read_version | grep -o [[:digit:]]* | tail -1)1)) else # 新 major/minorbuild_number 归零并确保 changelog 文件存在 version$QUARTO_VERSION build_number0 fi version_full$version.$build_number即当version.txt如1.11.5的主次版本与configuration中QUARTO_VERSION1.11一致时本次构建就是1.11.6否则视为进入新周期build_number 重置为 0。随后工作流把version_full写入version.txt、提交并打v1.11.6tagrelease note 自动生成v1.11.5...v1.11.6的 compare 链接与 changelog 下载链接。所有平台产物构建完成后发布任务生成quarto-1.11.6-checksums.txt并在 GitHub Release 上附带全部 12 类产物源码 tarball、Linux tarball/deb/rpm 双架构、Windows MSI/zip、macOS pkg/tar.gz、changelog、checksums。这一套读版本 → 算版本 → 打 tag → 构建 → 校验 → 发布 → 失败回滚的闭环正是稳定版补丁能够以近乎一键方式落地的底层原因而清单要做的就是把自动化链条之外的三件事盯住测试分支选对、Pre-release 与 Publish release 两个开关设对、发布顺序官网 → Chocolatey不颠倒。小结稳定版发布速查步骤动作关键参数 / 约束1. 测试Parallel Smokes Tests分支选v1.x稳定分支2. 构建Build Installerspre-release取消勾选publish-release勾选分支选v1.x3. 官网quarto-web 的 update-downloads 工作流在main分支运行4. PyPIquarto-cli-pypi 的 Publish Quarto PyPi可先取消Production Release发布到 test.pypi 验证5. Chocolateyquarto-release-bundles 的 Build Choco package Publish必须等官网下载页更新后勾选发布复选框6. Changelog移动 backports 条目到## In previous releasescommit message 含[release checklist]推送到v1.x7. 其余渠道Cloudsmith / conda-forge / Winget / Scoop / Homebrew自动化或社区维护一般无需动作整个流程中人工操作的失败风险集中在分支与开关设置上版本号计算、安装包构建、GitHub Release、Docker 镜像、Cloudsmith 分发均由 create-release.yml 及其协作工作流自动完成——理解这套自动化边界就能在几分钟内安全地完成一次 Quarto 稳定版补丁发布。赞分享开发工具文档【免费下载链接】quarto-cliOpen-source scientific and technical publishing system built on Pandoc.项目地址https://gitcode.com/gh_mirrors/qu/quarto-cli点击查看免费下载相关推荐VisiData 稳定版发布全流程指南从分支合并、版本号同步到 PyPI 与多发行渠道分发VisiData 稳定版发布全流程指南从分支合并、版本号同步到 PyPI 与多发行渠道分发 本文是 VisiData 项目内部发布检查清单 dev/chec数据分析CLI数据可视化Quarto 版本发布全流程指南从分支切分到多渠道分发的完整发布清单Quarto 版本发布全流程指南从分支切分到多渠道分发的完整发布清单 Quarto 是一个构建在 Pandoc 之上的开源科学与技术出版系统参见仓库根目录开发工具文档Falcon 发布全流程指南从版本号到稳定分支的 Release Manager 实操手册Falcon 发布全流程指南从版本号到稳定分支的 Release Manager 实操手册 导读 本文以 Falcon 仓库中的 RELEASE.md htt后端Web框架API设计创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

MySQL IN查询数据量大性能差?四种优化方案对比与实战

MySQL IN查询数据量大性能差?四种优化方案对比与实战

最近后台接连收到几条留言,都在问同一个问题:MySQL里IN查询碰到几百上千甚至上万的数据量时,业务又不能拆、不能让用户等,到底怎么优化?这个问题我太有感触了。前两年做某个后台权限和数据筛选功能,业务逻辑…

2026/10/11 22:01:46 阅读更多 →
Python机器学习水稻病虫害识别系统:从图像分类到模型训练实战

Python机器学习水稻病虫害识别系统:从图像分类到模型训练实战

简介:围绕水稻病虫害自动识别任务,提供一套基于Python机器学习并结合Java/Vue前后端技术的完整源码与配套数据,主要面向计算机、人工智能、自动化等专业的学生、教师及从业者,既适用于毕业设计、期末大作业,也可作为小…

2026/10/11 22:01:46 阅读更多 →
Flash 免费、Pro 更强、旧模型退役:DeepSeek 这套「弃车保帅」组合拳你看懂了吗

Flash 免费、Pro 更强、旧模型退役:DeepSeek 这套「弃车保帅」组合拳你看懂了吗

Flash 免费、Pro 更强、旧模型退役:DeepSeek 这套「弃车保帅」组合拳你看懂了吗 【免费下载链接】DeepSeek-V4-Flash-0731 项目地址: https://ai.gitcode.com/hf_mirrors/deepseek-ai/DeepSeek-V4-Flash-0731 2026 年 4 月 24 日,DeepSeek 正式发…

2026/10/11 22:01:46 阅读更多 →

最新新闻

PgQue 监控实战:5 个必须告警的队列健康指标 + 如何揪出卡住的消费者

PgQue 监控实战:5 个必须告警的队列健康指标 + 如何揪出卡住的消费者

【免费下载链接】PgQue PgQue – Zero-bloat Postgres queue built on top of on battle-proven Skypes PgQ. One SQL file to install, pg_cron to tick https://pgque.dev 项目地址: https://gitcode.com/gh_mirrors/pg/PgQue 点击查看 免费下载 PgQue 是一个零膨…

2026/10/11 22:49:35 阅读更多 →
农行银企直联全链路实战:从密钥申请到转账对账的Java避坑指南

农行银企直联全链路实战:从密钥申请到转账对账的Java避坑指南

简介:这份资源面向使用 Java 对接农业银行银企直联的开发者,聚焦企业财务系统与银行系统之间的电子数据交换场景,帮助解决转账、余额查询、支付等业务自动化处理中的接口开发与安全控制问题。压缩包共 20 个文件,约 23KB&#xff…

2026/10/11 22:49:35 阅读更多 →
从需求到建库:工厂物资管理数据库系统设计实战

从需求到建库:工厂物资管理数据库系统设计实战

简介:《工厂物资管理数据库系统》是一份面向高校数据库课程设计、毕业设计及物资管理项目初学者的完整设计报告。文档围绕工厂物资采购、入库、领用、库存盘点与报废处理全流程,按设计任务说明、需求分析、概念模型设计、逻辑模型设计、物理模型设计和数…

2026/10/11 22:49:35 阅读更多 →
Java实现人体姿态识别与动作评分:ONNX Runtime与DTW实战指南

Java实现人体姿态识别与动作评分:ONNX Runtime与DTW实战指南

简介:基于Java的人体姿态识别与动作评分系统,以动态捕捉画面中人体关键点为入口,在双侧肩、肘、髋、膝八个关节处同步生成角度数据,并融合姿态评估、实时语音提示和训练后多维分析,可服务于运动康复、体态矫正等专业场…

2026/10/11 22:49:35 阅读更多 →
从多智能体到提示注入:awesome-ai-agent-papers 5大核心分类全解析

从多智能体到提示注入:awesome-ai-agent-papers 5大核心分类全解析

【免费下载链接】awesome-ai-agent-papers A curated collection of AI agent research papers released in 2026, covering agent engineering, memory, evaluation, workflows, and autonomous systems. 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-ai-…

2026/10/11 22:49:35 阅读更多 →
Vscode插件推荐——智能切换输入法(Smart IME)与TaoToken配置实践

Vscode插件推荐——智能切换输入法(Smart IME)与TaoToken配置实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 22:48:31 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →