标准Go项目布局
0.序言
0.1 本文的目录
0.2 阅读本文可以给你带来什么
了解 Standard Go Project Layout,顺便了解下 K8s 的 Layout。
1. 背景
平时工作也会看K8s代码,但是说实话对了K8s的目录设计不是很明白,不是特别明白每个目录文件下面存放什么内容,最近看了Kubernetes源码剖析,才了解到 Standard Go Project Layout。
官网介绍: https://github.com/golang-standards/project-layout/blob/master/README_zh.md
2. Kubernetes Project Layout
Kubernetes源码版本:master分支,应该算1.20
/api:OpenAPI/Swagger 规范,JSON 模式文件,协议定义文件。
/build:打包和持续集成,存放构建相关文件。
/CHANGELOG:存放每个版本的变动(.md格式)。
/cluster:存放一些脚步和yaml信息,该目录将会被弃用,已经进入维护模式,不会接受新的providers。
/cmd:本项目的主干,存放可执行文件的入口代码,不会在这个目录放太多的代码,每个可执行文件都会对应一个 main 函数。
/docs:设计和用户文档。
/hack:存放与构建、测试等相关的脚本。
/LICENSES:证书信息。
/logo:logo。
/pkg:核心库代码,可被项目内或外部直接使用。
/plugin:存放k8s插件目录,例如准入、认证、授权
/staging:此目录是已拆分到各自库。这里的内容将定期发布给各自k8s.io库。存放部门核心库的暂存目录。
/test:测试工具以及测试数据。
/third_party:第三方工具、代码或脚本。
/translations:存放国际化语言包相关文件。
/vendor:存放项目依赖的库代码,第三方库代码。
3. 本文总结
本文简单介绍了Standard Go Project Layout,以及kubernetes的Layout设计。
参考
Kubernetes源码剖析
Standard Go Project Layout 官网介绍