开发者指南¶
项目管理¶
我们使用 GitHub 问题和项目仪表板来管理此项目的 TODO 列表
标记为good first issue
和help wanted
的问题特别适合首次贡献。
我们使用里程碑来跟踪我们发布的进度。这些里程碑通常根据它们代表的semver发布版本标签进行标记,这意味着我们通常只关注序列中的下一个发布版本,直到它关闭并完成发布。只有网关 API 维护者才能创建里程碑并将问题附加到里程碑。
我们使用优先级标签来帮助指示解决问题的时间重要性,或者问题是否需要其创建者或社区的更多支持才能被优先考虑。这些标签可以使用/priority command in PR and issue comments进行设置。例如,/priority important-soon
。
先决条件¶
在开始使用网关 API 开发之前,我们建议您安装以下先决条件
请注意,Kind 和我们的许多构建任务也依赖于 Docker 或 Podman。
构建、测试和部署¶
克隆存储库
mkdir -p $GOPATH/src/sigs.k8s.io
cd $GOPATH/src/sigs.k8s.io
git clone https://github.com/kubernetes-sigs/gateway-api
cd gateway-api
此项目使用 Go 模块;您也可以选择在 $GOPATH 之外设置您的环境。
构建代码¶
该项目使用make
来驱动构建。make
将运行代码生成器,并对代码运行静态分析,并生成 Kubernetes CRD。您可以从顶层 makefile 启动整体构建
make generate
添加实验性字段¶
对 API 的所有添加都必须从实验性发布渠道开始。实验性字段必须在 Go 类型定义中用<gateway:experimental>
注释标记。网关 API CRD 生成只会将这些字段包含在实验性 CRD 集中。
如果实验性字段被移除或重命名,则应从 go 结构体中移除原始字段名,并使用墓碑注释(example)确保不会重复使用字段名。
提交拉取请求¶
网关 API 遵循与Kubernetes类似的拉取请求流程。合并拉取请求需要完成以下步骤,然后拉取请求才会自动合并。
验证¶
在提交更改之前,请确保您对存储库运行了静态分析。如果验证失败,Prow presubmit将不会让您的更改合并。
make verify
文档¶
网站文档使用 Markdown 编写,并使用mkdocs进行编译。每个 PR 将自动包含一个Netlify部署预览。当新代码合并时,它将自动使用 Netlify 部署到gateway-api.sigs.k8s.io。如果您想在本地手动预览文档更改,则可以安装 mkdocs 并运行
make docs
为了方便使用正确的 mkdocs 版本,有一个.venv
目标来创建一个包含 mkdocs 的 Python 虚拟环境。要使用 mkdocs 实时预览服务器,您可以在编辑时从虚拟环境运行 mkdocs
$ make .venv
Creating a virtualenv in .venv... OK
To enter the virtualenv type "source .venv/bin/activate", to exit type "deactivate"
(.venv) $ source .venv/bin/activate
(.venv) $ mkdocs serve
INFO - Building documentation...
...
有关如何编写文档的更多信息,请参阅我们的文档风格指南.
一致性测试¶
要开发或运行一致性测试,请参阅一致性测试文档.