贡献#

感谢您为 production-stack 做出贡献!作为一名潜在的贡献者,您的想法和改进在任何时间,无论是工作日、周末还是节假日,都受到欢迎。请随时提出问题或发送 Pull Request。

提交提案#

对于重大的更改、新功能或重要的架构修改,请在贡献代码之前,使用 指定的模板proposals/ 文件夹下提交提案。这将确保您的工作与项目的目标一致,使维护者和贡献者能够及早提供反馈,并有助于避免不必要的返工。

提案提交后,将由维护者进行审查,并可能在批准前进行讨论。我们鼓励开放协作,因此请随时参与讨论并根据反馈完善您的提案。

对于如错误修复、文档更新、小优化和简单功能等小范围的更改,您可以直接创建 issue 或 PR,无需提交提案。

提交 Pull Request#

在提交您的 Pull Request 之前,请确保它符合以下标准。这将有助于维护代码质量并简化审查流程。

遵循标准的 GitHub 工作流

  1. Fork 仓库。

  2. 创建功能分支。

  3. 提交带有详细描述的 Pull Request。

PR 标题和分类#

请尝试为 PR 进行分类,以便轻松理解更改的类型。PR 标题会带有适当的前缀来指示更改的类型。请使用以下之一:

  • [Bugfix] 用于错误修复。

  • [CI/Build] 用于构建或持续集成改进。

  • [Doc] 用于文档修复和改进。

  • [Feat] 用于集群中的新功能(例如,自动扩缩容、分布式预填充等)。

  • [Router] 用于对 vllm_router 的更改(例如,路由算法、路由器可观察性等)。

  • [Misc] 用于不属于以上类别的 PR。请谨慎使用。

注意:如果 PR 涉及多个类别,请包含所有相关的标签。

代码质量和验证#

Linter 检查#

Linter 检查是我们 github 工作流的一部分。要通过所有 Linter 检查,请使用 pre-commit 来格式化您的代码。安装方法如下:

uv sync --all-extras --all-groups
uv run pre-commit install

它会在每次提交前自动运行。您也可以使用以下命令手动对所有文件运行:

uv run pre-commit run --all-files

有一部分 hook 需要额外的依赖项,您可能尚未在开发环境中安装这些依赖项(例如 Docker 和非 Python 包)。这些 hook 被配置为仅在 manual pre-commit 阶段运行。在 CI 中,它们在 pre-commit-manual 任务中运行,而在本地,您可以使用以下命令运行:

# Runs all hooks including manual stage hooks
uv run pre-commit run --all-files --hook-stage manual
# Runs only the manual stage hook shellcheck
uv run pre-commit run --all-files --hook-stage manual shellcheck

如果这些 hook 中的任何一个在 CI 中失败,但您无法在本地运行它们,您可以通过检查 Pull Request 中的 GitHub Actions 日志来确定需要更改的内容。

注意

您可以在 https://pre-commit.git-scm.cn 上阅读更多关于 pre-commit 的信息。

Github 工作流#

PR 必须通过所有 GitHub 工作流,包括:

  • Router 端到端测试

  • helm chart 的功能测试

如果任何测试失败,请检查 GitHub Actions 以获取失败的详细信息。如果您认为错误与您的 PR 无关,请在 PR 评论中解释您的理由。

添加示例和测试#

请在您的 PR 中包含充分的示例。单元测试和集成测试也受欢迎,鼓励您在未来的 PR 中贡献它们。

DCO 和 Signed-off-by#

在为本项目贡献代码时,您必须同意 DCO。提交的 commit 必须包含一个 Signed-off-by: 头部,以证明您同意 DCO 的条款。

使用 git commit-s 参数将自动添加此头部。

审核预期#

我们的目标是及时处理所有 PR。如果在 5 天内没有人审查您的 PR,请 @-mention YuhanLiu11、Shaoting-Feng 或 ApostaC。