本页面为希望贡献 act 项目的开发者提供了全面的信息。它涵盖了本地开发设置、构建过程、测试程序、CI/CD 流水线和发布工作流。有关 act 作为最终用户使用的信息,请参阅入门。
要为 act 做出贡献,您需要设置一个支持 Docker 的 Go 开发环境(除非您专门处理 WITHOUT_DOCKER 构建)。
来源: Makefile1-13
该项目包含一个全面的 Makefile,可简化常见的开发任务。
要构建 act 二进制文件
这将编译源代码并在 dist/local/act 创建一个可执行文件。
或者,您可以使用 Go 直接构建
要将编译后的二进制文件安装到您的系统
默认情况下,这会将二进制文件复制到 /usr/local/bin/act。您可以通过设置 PREFIX 变量来自定义安装位置
运行测试
这将运行所有 Go 测试,并运行 act 本身以验证功能。
来源: Makefile36-40 .github/workflows/checks.yml35-64
该项目通过多种代码检查工具来强制执行代码质量
来源: Makefile28-70 .golangci.yml1-57
贡献 act 的推荐工作流如下所示
在创建拉取请求之前
make pr 以确保您的代码通过所有检查(格式化、代码检查和测试)来源: Makefile21-22 .github/workflows/checks.yml1-34
该项目使用 GitHub Actions 进行持续集成和持续交付。
CI 过程在 .github/workflows/checks.yml 中定义,并在每个拉取请求上运行
CI 流水线执行以下任务
act 在 Linux 上是否正常工作来源: .github/workflows/checks.yml1-177
CI 系统在多个操作系统上测试 act
| 测试任务 | 操作系统 | 描述 |
|---|---|---|
| test-linux | Ubuntu | 支持 Docker 的完整测试套件 |
| test-host | Windows、macOS | 主机环境测试 |
来源: .github/workflows/checks.yml35-87
该项目采用系统化的版本控制和发布方法。
版本遵循语义化版本控制,并存储在 VERSION 文件中。发布流程可以可视化为
版本提升可以通过手动或通过计划的 GitHub Action 完成
手动提升
通过 GitHub Actions 自动提升(每月1日)
提升流程
来源: Makefile87-104 .github/workflows/promote.yml1-30 VERSION1
当版本标签被推送时,.github/workflows/release.yml 工作流将
GoReleaser 配置为以下平台构建二进制文件
| 操作系统 | 架构 |
|---|---|
| Linux | x86_64, i386, arm64, armv6, armv7, riscv64 |
| Windows | x86_64, i386, arm64, armv7 |
| macOS | x86_64, arm64 |
来源: .github/workflows/release.yml1-59 .goreleaser.yml1-52
由于 act 旨在本地运行 GitHub Actions,您可以使用它来测试其自身的工作流
用于开发非 Docker 功能
来源: .github/workflows/checks.yml54-57
若要在不创建发布版本的情况下测试打包
这会使用 GoReleaser 创建一个包含当前代码状态的快照构建。