arcentra 仓库根目录执行。
工具链
- Go 1.25 及以上(与
go.mod一致)。 - Buf:Protobuf / gRPC 代码生成。
make buf-install会按需安装。 - Wire:编译期依赖注入。
make wire-install会按需安装。 - golangci-lint v2:
make lint会自动安装到bin/。 - staticcheck(可选):
make staticcheck会安装并执行。 - addlicense(可选):
make addlicense为 Go 文件添加 Apache 2.0 头。 - Docker(可选):
make docker-build、make docker-buildx必备。
常用 Make 目标
make help 会列出全部目标,最常用的是:
仓库默认包含两个二进制:
arcentra(控制平面)与 arcentra-agent。cmd/
下的任何子目录都可通过 make build TARGET=<dirname> 编译。
代码生成
构建系统串联两个生成器:- Buf 在
api/<service>/v1下生成 Go message 与 gRPC 代码。 - Wire 在
cmd/arcentra/与cmd/arcentra-agent/下生成wire_gen.go。
.proto 或 wire.go 后请执行 make codegen。
测试
go test -race ./internal/path/...。
开发期配置
conf.d/ 下的示例配置面向本地开发场景:
conf.d/config.toml:控制平面。conf.d/agent.toml:Agent。conf.d/plugins.toml:插件与 builtin。
make run 会基于这些默认配置启动控制平面,也可以使用
go run ./cmd/arcentra -conf <path> 与
go run ./cmd/arcentra-agent -conf <path> 直接运行。
每个段的字段说明见 配置。
版本与发布
Arcentra 使用 YY.Major.Minor.Patch 四段式版本号:YY:2 位年份(25代表 2025,26代表 2026)。Major:架构变更或破坏式 API 升级。Minor:向后兼容的新功能。Patch:Bug 修复或小改动。
构建时选择版本
Makefile 按以下优先级解析版本:
- 环境变量
VERSION。 - 仓库根目录的
VERSION文件。 - 精确匹配的 git tag(去掉前缀
v)。 - 缺省值:当前 2 位年份 +
.0.0.0。
打 Tag
vYY.Major.Minor.Patch。
在代码中读取版本
贡献
完整流程参见CONTRIBUTING.md
(中文版 CONTRIBUTING_zh_CN.md)。简要要求:
- 从
main分支拉出特性分支。 - 提交 PR 前在本地跑
make codegen、make lint、make test。 - 任何对外可见的改动同步更新本文档站点。
- 关联 Issue,并遵循项目的 commit 与 PR 约定。
SECURITY.md
中的私有渠道反馈。