本文档介绍了创建和发布 Fira Code 新版本的流程。它涵盖了版本管理、构建自动化和分发到各种平台。有关构建过程本身的信息,请参阅 构建过程。
Fira Code 使用一种半自动化的发布流程,通过创建特定版本格式的 Git 标签来触发。该流程通过 GitHub Actions 工作流处理版本号更新、字体构建、打包和分发到多个平台。
来源:.github/workflows/build.yml1-27 script/release.py64-73
Fira Code 使用语义化版本控制,格式为 major.minor(例如 6.2)。版本号存储在两个地方:
FiraCode.glyphs),其中包含 versionMajor 和 versionMinor 属性当触发发布时,版本号会自动从 Git 标签中提取并更新到字体定义文件中。
来源:script/update_version.py1-21 script/common.py1-17
新版本的发布通过创建匹配模式 [0-9]+.[0-9]+ 的 Git 标签来触发(例如:6.2)。
来源:.github/workflows/build.yml1-27
GitHub Actions 工作流定义在 .github/workflows/build.yml 中,并在以下情况下激活:
[0-9]+.[0-9]+ 的标签(用于发布).github/workflows/**FiraCode.glyphsscript/**工作流在一个 Docker 容器(tonsky/firacode:latest)中运行,该容器包含所有必需的构建依赖项。
| 工作流步骤 | 操作 | 目的 |
|---|---|---|
| 1 | 检出代码 | 获取仓库内容 |
| 2 | 运行 update_version.py | 更新 FiraCode.glyphs 中的版本(仅针对标签) |
| 3 | 运行 build.sh | 构建字体文件 |
| 4 | 创建 hash 变量 | 为工件命名做准备 |
| 5 | 上传工件 | 使构建的字体可供下载 |
| 6 | 运行 release.py | 创建 GitHub 发布并分发(仅针对标签) |
来源:.github/workflows/build.yml12-27
构建过程运行 script/build.sh,该脚本负责字体生成,分发文件存储在 distr 目录中。有关构建过程的更多详细信息,请参阅 构建过程。
构建完成后,发布脚本执行以下操作:
Fira_Code_vX.Y.zip 的 ZIP 存档发布脚本包含分发到其他包管理器和平台的功能,但它们目前被标记为“跳过”。
| 平台 | 状态 | 描述 |
|---|---|---|
| GitHub Releases | 激活 | 主要分发方式 |
| NPM | 已跳过 | JavaScript 包管理器 |
| Homebrew | 已跳过 | macOS 包管理器 |
| Scoop | 已跳过 | Windows 包管理器 |
| Google Fonts | 已跳过 | Google 的网络字体存储库 |
对于 Google Fonts,在 googlefonts-qa/scripts/move-check.sh 中定义了一个单独的流程,该流程准备用于 Google Fonts 拉取请求的文件并运行质量检查。
来源:script/release.py47-64 googlefonts-qa/scripts/move-check.sh1-90
让我们从头到尾看看完整的发布流程。
来源:.github/workflows/build.yml1-27 script/release.py14-73
要创建 Fira Code 的新版本,请执行以下操作:
确保所有期望的更改都已提交到主分支
创建一个带有期望版本号的新标签
git tag 6.2 # Replace with your version
git push origin 6.2
GitHub Actions 工作流将自动执行以下操作:
如果需要更新包管理器(Homebrew、NPM 等),则必须手动或通过单独的自动化来处理。
对于提交到 Google Fonts,存在一个单独的流程,该流程会:
此流程有助于为 Google Fonts 存储库准备拉取请求。
来源:googlefonts-qa/scripts/move-check.sh1-90
发布流程依赖于几个协同工作的 Python 脚本:
| 脚本 | 目的 |
|---|---|
common.py | 提供实用函数,包括版本检测 |
update_version.py | 更新 glyphs 文件中的版本 |
release.py | 打包和分发发布 |
版本检测通过以下方式工作:
--version 参数来源:script/common.py1-17 script/update_version.py1-21 script/release.py1-73
Fira Code 的发布流程设计得简单且自动化,只需最少的手动干预。通过创建格式正确的 Git 标签,大部分发布工作都可以通过 GitHub Actions 自动完成。
对于 Fira Code 的开发者来说,理解这个发布流程对于创建新版本并确保它们能正确分发给用户至关重要。