菜单

发布流程

相关源文件

本文档描述了用于构建、测试和发布 act 工具官方版本的自动化流程。它涵盖了版本发布的触发方式、生成的工件以及包分发的平台。

概述

act 项目使用 GitHub Actions 和 GoReleaser 来管理其发布流程。版本发布采用版本标签,遵循语义化版本控制,并在新版本标签推送到仓库时自动构建和发布。

来源:.github/workflows/release.yml .github/workflows/promote.yml .goreleaser.yml

发布触发

act 项目有两个主要的发布相关工作流:

  1. 标准发布:当带有 v* 前缀的标签被推送到仓库时触发。
  2. 定期发布:每月定期运行或可手动触发,有助于保持稳定的发布节奏。

标准发布流程

当与模式 v* 匹配的标签(例如 v0.2.24)被推送到仓库时,发布工作流会自动触发。

来源:.github/workflows/release.yml2-5

定期发布流程

定期发布流程每月定期运行(每月第一天),也可手动触发。它有助于保持稳定的发布节奏。

来源:.github/workflows/promote.yml2-5

构建配置

构建过程由 GoReleaser 管理,它被配置为为多种操作系统和架构创建二进制文件。

支持的平台

act 工具支持以下平台:

操作系统架构备注
Linuxx86_64 (amd64), i386, arm64, armv6, armv7, riscv64完全支持
Windowsx86_64 (amd64), i386, arm64, armv7不支持 armv6
macOS (Darwin)x86_64 (amd64), arm64有限的架构支持

来源:.goreleaser.yml5-22

构建流程

来源:.goreleaser.yml1-48

产出生成

每次发布都会生成多个工件:

  1. 所有受支持平台的二进制文件
  2. 归档文件(Linux/macOS 为 .tar.gz,Windows 为 .zip)
  3. 校验和文件 (checksums.txt)
  4. 根据提交信息自动生成的更新日志

变更日志生成

GoReleaser 通过根据约定式提交前缀将提交分类到组中来自动生成更新日志:

分组提交前缀模式优先级
新功能feat0 (最高优先级)
Bug修复fix1
文档更新docs2
其他(所有其他提交)999 (最低优先级)

来源:.goreleaser.yml37-48

分发渠道

act 工具通过多个渠道分发,以便各种用户都能访问。

来源:.github/workflows/release.yml24-58

GitHub 发布

主要的发行渠道是 GitHub 发布。GoReleaser 会自动创建一个新的 GitHub 发布,上传所有工件,并附带生成的更新日志。

来源:.goreleaser.yml49-51

Chocolatey 包管理器

对于 Windows 用户,会创建一个 Chocolatey 包并发布到 Chocolatey Gallery。此过程使用一个自定义的 GitHub Action,它会:

  1. 从 Git 标签中提取版本号
  2. 准备包文件
  3. 使用 Chocolatey CLI 创建包
  4. 如果在发布工作流中运行,则将包推送到 Chocolatey Gallery

来源:.github/actions/choco/entrypoint.sh9-31 .github/workflows/release.yml36-41

Windows 包管理器 (Winget)

发布流程还包括使用 vedantmgoyal2009/winget-releaser action 发布到 Windows 包管理器 (Winget)。

来源:.github/workflows/release.yml30-35

GitHub CLI 扩展

作为发布流程的一部分,会在 nektos/gh-act 仓库中创建一个相应的标签,该仓库包含 act 的 GitHub CLI 扩展。

来源:.github/workflows/release.yml42-58

快照构建

除了官方版本发布外,每次拉取请求都会通过 checks.yml 工作流创建快照构建。这些快照:

  1. 在快照模式下使用 GoReleaser 构建所有二进制文件
  2. 将二进制文件作为 GitHub Actions 工件上传
  3. 不发布到任何分发渠道

快照对于在正式发布前测试更改很有用。

来源:.github/workflows/checks.yml90-174

发布版本控制

act 项目遵循语义化版本控制原则。官方发布版本号从 Git 标签中提取。对于 Chocolatey 包,版本号会格式化以符合 Chocolatey 的版本控制要求。

来源:.github/actions/choco/entrypoint.sh9-18

结论

act 的发布流程是完全自动化的,由 Git 标签触发,并为多个平台和架构生成二进制文件。GoReleaser、GitHub Actions 和自定义 action 的使用确保了跨多个分发渠道的一致且可靠的发布。