Kubernetes Contribution
创建google账号
推荐申请一个google邮箱。
在开发机配置git
$ git config --global user.email name@gmail.com
$ git config user.email name@gmail.com
签CLA并阅读CoC
个人开发者需要签署CLA, 选择individual contributors并用github账号登陆,然后去邮箱授权;之后重新进入,再去邮箱签字。
https://identity.linuxfoundation.org/projects/cncf
读一下CoC和CV
https://github.com/cncf/foundation/blob/master/code-of-conduct-languages/zh.md
https://github.com/kubernetes/community/blob/master/values.md
配置开发环境
可以在docker里面编译,也可以直接在操作系统上编译。
在docker里面编译
build/run.sh make 只编译linux平台
build/run.sh make cross 编译所有平台
build/run.sh make kubectl KUBE_BUILD_PLATFORMS=darwin/amd64 编译指定平台的指定组件
build/run.sh make test 单元测试
build/run.sh make test-integration 集成测试
build/run.sh make test-cmd 命令行测试
build/copy-output.sh 将编译的binary从_output/dockerized/bin拷贝到本地
build/make-clean.sh 清空_output
build.shell.sh 交互模式进入编译的container
build/release.sh 编译,测试,打包,kubernetes.tar.gz
...
在操作系统上编译
安装依赖
sudo apt-get update
sudo apt-get install build-essential
// apt: docker, rsync, jq, go,
// python: pyyaml,
// 安装etcd用于集成测试
./hack/install-etcd.sh
export PATH="$GOPATH/src/k8s.io/kubernetes/third_party/etcd:${PATH}"
编译和测试
make all 全部编译
make WHAT=cmd/kubectl 指定编译组件
make cross 编译所有平台
make cross KUBE_BUILD_PLATFORMS=windows/amd64 编译指定平台
make verify presubmission verification测试
make test 单元测试
make test-integration 集成测试依赖etcd
https://github.com/kubernetes/test-infra
了解社区
https://github.com/kubernetes/community
因为项目组件很多,所以通过特别兴趣小组来分类。
- SIG: Special Interest Groups
- WG: Working Group
- UG: User Group
KEP: Kubernetes Enhancement Proposal
对于功能和API的修改需要在KEP提交议案讨论。
https://github.com/kubernetes/enhancements
https://discuss.kubernetes.io/
选取修改的CL
从github选取一个Issue进行修改。
推荐新手从“good first issue" 开始。
也可以通过sig或者kind标签过滤。
提交patch
github用户直接fork到自己账号,clone下来即可。
git clone https://github.com/kubernetes/kubernetes.git
创建开发分支并修改代码
git checkout -b canux_dev
...
git add -A
git commit -m "..."
git push ...
code review
提交之后trybots会自动构建,可以通过build dashboard查看各个平台build结果:
查看自己的patch的review情况:
https://go-review.googlesource.com/dashboard/self
显示随时间变化的历史测试结果:
显示pow中的自动化测试情况:
查看所有PR:
https://gubernator.k8s.io/pr/all
把相似的失败聚合在一起以便排除故障: