菜单

开发

相关源文件

本页面为希望贡献 act 项目的开发者提供了全面的信息。它涵盖了本地开发设置、构建过程、测试程序、CI/CD 流水线和发布工作流。有关 act 作为最终用户使用的信息,请参阅入门

设置开发环境

要为 act 做出贡献,您需要设置一个支持 Docker 的 Go 开发环境(除非您专门处理 WITHOUT_DOCKER 构建)。

先决条件

  • Go(版本在 go.mod 中指定)
  • Docker(用于运行大多数测试)
  • Git
  • Make(可选,但推荐用于开发任务)

获取源代码

来源: Makefile1-13

构建与测试

该项目包含一个全面的 Makefile,可简化常见的开发任务。

本地构建

要构建 act 二进制文件

这将编译源代码并在 dist/local/act 创建一个可执行文件。

或者,您可以使用 Go 直接构建

本地安装

要将编译后的二进制文件安装到您的系统

默认情况下,这会将二进制文件复制到 /usr/local/bin/act。您可以通过设置 PREFIX 变量来自定义安装位置

运行测试

运行测试

这将运行所有 Go 测试,并运行 act 本身以验证功能。

来源: Makefile36-40 .github/workflows/checks.yml35-64

代码格式化和 Linting

该项目通过多种代码检查工具来强制执行代码质量

来源: Makefile28-70 .golangci.yml1-57

开发工作流

贡献 act 的推荐工作流如下所示

拉取请求流程

在创建拉取请求之前

  1. 运行 make pr 以确保您的代码通过所有检查(格式化、代码检查和测试)
  2. 确保您的提交消息遵循 Conventional Commits 规范
  3. 使用多种工作流测试您的更改

来源: Makefile21-22 .github/workflows/checks.yml1-34

CI/CD 流水线

该项目使用 GitHub Actions 进行持续集成和持续交付。

CI 工作流

CI 过程在 .github/workflows/checks.yml 中定义,并在每个拉取请求上运行

CI 流水线执行以下任务

  1. 代码检查:运行 golangci-lint 和 megalinter 以强制执行代码质量和风格
  2. Linux 测试:运行单元测试并验证 act 在 Linux 上是否正常工作
  3. 主机测试:验证主机环境功能在 Windows 和 macOS 上是否正常工作
  4. 快照构建:为多种架构和平台创建快照构建

来源: .github/workflows/checks.yml1-177

测试矩阵

CI 系统在多个操作系统上测试 act

测试任务操作系统描述
test-linuxUbuntu支持 Docker 的完整测试套件
test-hostWindows、macOS主机环境测试

来源: .github/workflows/checks.yml35-87

发布流程

该项目采用系统化的版本控制和发布方法。

版本管理

版本遵循语义化版本控制,并存储在 VERSION 文件中。发布流程可以可视化为

提升发布版本

版本提升可以通过手动或通过计划的 GitHub Action 完成

  1. 手动提升

  2. 通过 GitHub Actions 自动提升(每月1日)

提升流程

  • 增加 VERSION 文件中的补丁版本号
  • 提交更改
  • 创建版本标签
  • 推送标签以触发发布

来源: Makefile87-104 .github/workflows/promote.yml1-30 VERSION1

发布产物

当版本标签被推送时,.github/workflows/release.yml 工作流将

  1. 使用 GoReleaser 为多个平台构建二进制文件
  2. 创建包含更新日志和二进制文件的 GitHub 发布
  3. 发布软件包到
    • Winget(Windows 包管理器)
    • Chocolatey(Windows)
  4. 更新 GitHub CLI 扩展

GoReleaser 配置为以下平台构建二进制文件

操作系统架构
Linuxx86_64, i386, arm64, armv6, armv7, riscv64
Windowsx86_64, i386, arm64, armv7
macOSx86_64, arm64

来源: .github/workflows/release.yml1-59 .goreleaser.yml1-52

调试与开发技巧

使用 Act 测试 Act

由于 act 旨在本地运行 GitHub Actions,您可以使用它来测试其自身的工作流

在不支持 Docker 的情况下运行

用于开发非 Docker 功能

来源: .github/workflows/checks.yml54-57

创建快照构建

若要在不创建发布版本的情况下测试打包

这会使用 GoReleaser 创建一个包含当前代码状态的快照构建。

来源: Makefile106-111 .github/workflows/checks.yml90-173