本文档描述了用于构建、测试和发布 act 工具官方版本的自动化流程。它涵盖了版本发布的触发方式、生成的工件以及包分发的平台。
act 项目使用 GitHub Actions 和 GoReleaser 来管理其发布流程。版本发布采用版本标签,遵循语义化版本控制,并在新版本标签推送到仓库时自动构建和发布。
来源:.github/workflows/release.yml .github/workflows/promote.yml .goreleaser.yml
act 项目有两个主要的发布相关工作流:
v* 前缀的标签被推送到仓库时触发。当与模式 v* 匹配的标签(例如 v0.2.24)被推送到仓库时,发布工作流会自动触发。
来源:.github/workflows/release.yml2-5
定期发布流程每月定期运行(每月第一天),也可手动触发。它有助于保持稳定的发布节奏。
来源:.github/workflows/promote.yml2-5
构建过程由 GoReleaser 管理,它被配置为为多种操作系统和架构创建二进制文件。
act 工具支持以下平台:
| 操作系统 | 架构 | 备注 |
|---|---|---|
| Linux | x86_64 (amd64), i386, arm64, armv6, armv7, riscv64 | 完全支持 |
| Windows | x86_64 (amd64), i386, arm64, armv7 | 不支持 armv6 |
| macOS (Darwin) | x86_64 (amd64), arm64 | 有限的架构支持 |
每次发布都会生成多个工件:
GoReleaser 通过根据约定式提交前缀将提交分类到组中来自动生成更新日志:
| 分组 | 提交前缀模式 | 优先级 |
|---|---|---|
| 新功能 | feat | 0 (最高优先级) |
| Bug修复 | fix | 1 |
| 文档更新 | docs | 2 |
| 其他 | (所有其他提交) | 999 (最低优先级) |
act 工具通过多个渠道分发,以便各种用户都能访问。
来源:.github/workflows/release.yml24-58
主要的发行渠道是 GitHub 发布。GoReleaser 会自动创建一个新的 GitHub 发布,上传所有工件,并附带生成的更新日志。
对于 Windows 用户,会创建一个 Chocolatey 包并发布到 Chocolatey Gallery。此过程使用一个自定义的 GitHub Action,它会:
来源:.github/actions/choco/entrypoint.sh9-31 .github/workflows/release.yml36-41
发布流程还包括使用 vedantmgoyal2009/winget-releaser action 发布到 Windows 包管理器 (Winget)。
来源:.github/workflows/release.yml30-35
作为发布流程的一部分,会在 nektos/gh-act 仓库中创建一个相应的标签,该仓库包含 act 的 GitHub CLI 扩展。
来源:.github/workflows/release.yml42-58
除了官方版本发布外,每次拉取请求都会通过 checks.yml 工作流创建快照构建。这些快照:
快照对于在正式发布前测试更改很有用。
来源:.github/workflows/checks.yml90-174
act 项目遵循语义化版本控制原则。官方发布版本号从 Git 标签中提取。对于 Chocolatey 包,版本号会格式化以符合 Chocolatey 的版本控制要求。
来源:.github/actions/choco/entrypoint.sh9-18
act 的发布流程是完全自动化的,由 Git 标签触发,并为多个平台和架构生成二进制文件。GoReleaser、GitHub Actions 和自定义 action 的使用确保了跨多个分发渠道的一致且可靠的发布。