Actions Runner Controller 项目开发与贡献指南
项目概述
Actions Runner Controller 是一个 Kubernetes 控制器,用于在 Kubernetes 集群中管理和自动扩展 GitHub Actions 运行器。它允许用户在 Kubernetes 环境中运行 GitHub Actions 工作流,提供弹性伸缩能力,并支持多种认证方式。
开发环境准备
在开始贡献代码前,需要确保本地开发环境已配置以下工具:
- Go 语言环境(建议使用最新稳定版)
- Docker 或 Podman 容器运行时
- Kubernetes 集群(本地可使用 kind 或 minikube)
- Helm 包管理工具(用于测试图表变更)
- golangci-lint 代码检查工具
代码贡献流程
1. 问题讨论与规划
在开始编码前,建议:
- 对于新功能或重大变更,先在问题跟踪系统中创建讨论
- 复杂功能需要编写架构决策记录(ADR)
- 确认问题未被分配后再开始工作
2. 控制器开发指南
控制器开发可采用快速迭代方式:
# 设置环境变量
. hack/make-env.sh
# 构建并部署变更
VERSION=controller1 \
RUNNER_TAG=runner1 \
make acceptance/pull acceptance/kind docker-buildx acceptance/load acceptance/deploy
此命令会:
- 构建控制器和运行器镜像
- 加载到 kind 集群
- 部署更新后的组件
3. 运行器开发指南
运行器开发需要注意:
- 提供了多种基础镜像(Ubuntu 20.04/22.04,带/不带Docker)
- 可使用专用 Makefile 构建运行器镜像
# 构建并推送运行器镜像
NAME=$DOCKER_USER/actions-runner make \
-C runner docker-{build,push}-ubuntu
测试策略
1. 单元测试与集成测试
项目使用 Ginkgo 测试框架:
# 运行完整测试套件
make test-with-deps
# 选择性运行特定测试
GINKGO_FOCUS='[It] should create a new Runner resource' \
go test -v -run TestAPIs
2. 端到端测试
端到端测试验证完整功能流程:
# 完整测试(使用kind集群)
DOCKER_USER=yourname \
GITHUB_TOKEN=yourtoken \
make acceptance
# 针对特定测试组合重试
ACCEPTANCE_TEST_DEPLOYMENT_TOOL=helm \
ACCEPTANCE_TEST_SECRET_TYPE=token \
make acceptance/run
3. 非kind集群测试
对于已有Kubernetes集群:
KUBECONFIG=path/to/config \
DOCKER_USER=yourname \
GITHUB_TOKEN=yourtoken \
make docker-build acceptance/setup acceptance/deploy acceptance/tests
代码规范与质量保证
提交前请确保:
- 运行
go mod tidy
整理依赖 - 使用
gofmt
格式化代码 - 通过
make lint
执行静态检查 - 更新相关文档(如有必要)
发布流程说明
项目维护者负责以下发布工作:
- 控制器镜像发布
- Helm 图表更新
- 运行器镜像构建
- 版本标签管理
发布流程分为多个独立工作流,分别处理不同组件的构建和发布。
测试PR构建
社区成员可帮助测试PR构建:
- 检出PR分支
- 构建自定义镜像
- 部署到测试环境
- 提供反馈
gh pr checkout PR_NUMBER
NAME=$DOCKER_USER/actions-runner-controller VERSION=canary make docker-build docker-push
最佳实践建议
- 小步提交:保持每个PR专注于单一功能或修复
- 充分测试:提供测试证据证明变更有效
- 文档更新:随代码变更更新相关文档
- 及时沟通:开发过程中保持与维护者沟通
通过遵循这些指南,您可以高效地为项目做出贡献,并确保您的代码能够顺利合并到主分支。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考