Kubernetes Contribution

https://github.com/kubernetes/community/blob/master/contributors/guide/contributor-cheatsheet/README-zh.md

创建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

配置开发环境

https://github.com/kubernetes/community/blob/master/contributors/devel/README.md#setting-up-your-dev-environment-coding-and-debugging

可以在docker里面编译,也可以直接在操作系统上编译。

在docker里面编译

https://github.com/kubernetes/kubernetes/blob/ae9ca48f01ddb03731e7903cfe91ef3db9ce8990/build/README.md

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
...

在操作系统上编译

https://github.com/kubernetes/community/blob/master/contributors/devel/development.md#building-kubernetes-on-a-local-osshell-environment

安装依赖

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

http://slack.k8s.io/

https://discuss.kubernetes.io/

选取修改的CL

从github选取一个Issue进行修改。

推荐新手从“good first issue" 开始。

也可以通过sig或者kind标签过滤。

https://github.com/kubernetes/kubernetes/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22

提交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结果:

https://build.golang.org/

查看自己的patch的review情况:

https://go-review.googlesource.com/dashboard/self

显示随时间变化的历史测试结果:

https://testgrid.k8s.io/

显示pow中的自动化测试情况:

https://prow.k8s.io/

查看所有PR:

https://gubernator.k8s.io/pr/all

把相似的失败聚合在一起以便排除故障:

https://storage.googleapis.com/k8s-triage/index.html