已开启
ci: add PR quality gate workflow #1092
ci: add PR quality gate workflow #1092
已开启
luojiyin创建于 16 天前
luojiyin
16 天前

背景

当前 .github/workflows/build.yml 仅在发布 tag 推送或手动触发时运行,只执行编译和上传产物。

普通 push 和 pull request 没有任何质量检查,代码问题直到发布构建才暴露。

修改内容

新增 .github/workflows/ci.yml,在以下场景自动触发:

  • 所有 pull request
  • push 到 main 分支

包含 4 个并行 job:

Job 检查内容
fmt cargo fmt --all -- --check
clippy cargo clippy --workspace --all-targets -- -D warnings
test cargo test --workspace --all-targets
webui npm ci + npm test + npm run typecheck + npm run build

设计要点

  • 使用 concurrency 组,同一分支重复推送时自动取消旧运行
  • Rust job 使用 Swatinem/rust-cache@v2 加速编译
  • WebUI 使用 actions/setup-node@v4 + npm cache,Node 版本 22
  • 未使用 --all-features,避免 closed-source codingplan-crypto crate 导致编译失败
  • 与现有 build.yml(仅 release tag 触发)完全分离,各司其职

验证

YAML 语法校验通过。推送后可在仓库 Actions 页面确认 workflow 被正确触发。

likedislike
合并受阻
atomgit-bot
atomgit-bot成员
16 天前 评论:

变更摘要

该 PR 新增 .github/workflows/ci.yml 工作流,为仓库引入 PR 质量门禁:在所有 pull request 以及 push 到 main 分支时自动触发,运行 Rust 与 WebUI 的格式、静态检查、测试和构建检查。此前 .github/workflows/build.yml 仅在 release tag 推送或手动触发时执行编译与产物上传,普通 push/PR 没有任何质量检查,本变更将质量检查与发布构建分离,使代码问题能在合并前暴露。

主要改动

  • 新增 ci.yml 工作流并配置触发与并发控制:设置 on.pull_request 与 on.push.branches: [main] 触发条件,并通过 concurrency.group: ci-${{ github.ref }} 与 cancel-in-progress: true 实现同一分支重复推送时自动取消旧运行。
  • 新增 fmt job:使用 dtolnay/rust-toolchain@stable(含 rustfmt 组件)执行 cargo fmt --all -- --check,校验 Rust 代码格式。
  • 新增 clippy 与 test job:分别执行 cargo clippy --workspace --all-targets -- -D warnings 和 cargo test --workspace --all-targets,两者均使用 Swatinem/rust-cache@v2 加速编译缓存;未使用 --all-features 以避免 closed-source codingplan-crypto crate 导致编译失败。
  • 新增 webui job:设置 working-directory: webui,通过 actions/setup-node@v4 使用 Node 22 并启用基于 webui/package-lock.json 的 npm 缓存,依次执行 npm ci、npm test、npm run typecheck、npm run build。
likedislike
不准确?
atomgit-bot
atomgit-bot成员
16 天前 评论:

代码审查

✅ 未发现问题

likedislike
不准确?
atomgit-bot
atomgit-bot成员
16 天前 评论:

AtomGit AI 助手使用指南

在 PR 评论中使用命令即可触发。支持在普通评论和代码行评论中使用。

功能 命令 说明
代码审查 /ai review 检查代码质量、潜在问题、安全风险
PR 摘要 /ai summary 生成 PR 变更内容的结构化摘要
代码解释 /ai explain 解释代码变更的逻辑和意图
自由提问 @atomgit-bot <问题> 询问关于本 PR 的任何问题
帮助 /ai help 显示此帮助信息

免责声明

AI 助手可能存在误判,请结合自身判断。可以对评论点 👍 或 👎 帮助我们改进。

likedislike
不准确?
Lluojiyin
16 天前 推送  1 个提交:057a1d59-ci: update quality gates and action versions
atomgit-bot
atomgit-bot成员
16 天前 评论:

AtomGit AI 助手使用指南

在 PR 评论中使用命令即可触发。支持在普通评论和代码行评论中使用。

功能 命令 说明
代码审查 /ai review 检查代码质量、潜在问题、安全风险
PR 摘要 /ai summary 生成 PR 变更内容的结构化摘要
代码解释 /ai explain 解释代码变更的逻辑和意图
自由提问 @atomgit-bot <问题> 询问关于本 PR 的任何问题
帮助 /ai help 显示此帮助信息

免责声明

AI 助手可能存在误判,请结合自身判断。可以对评论点 👍 或 👎 帮助我们改进。

likedislike
不准确?
atomgit-bot
atomgit-bot成员
16 天前 评论:

变更摘要

本 PR 新增 .github/workflows/ci.yml 作为 PR 质量门禁工作流,在所有 pull request 以及 push 到 main 分支时自动触发,弥补了现有 build.yml(仅在 release tag 或手动触发时运行)缺少日常质量检查的空白。工作流通过 concurrency 组在重复推送时自动取消旧运行,并包含 Rust(fmt/clippy/test)、WebUI(webui)和 JetBrains 扩展(jetbrains)共 5 个并行 job,其中 clippy 通过 --exclude atomcode-codingplan-crypto 避开闭源 crate 以避免编译失败,与现有发布构建完全分离、各司其职。

主要改动

  • 新增 CI 工作流及触发配置:新建 .github/workflows/ci.yml,通过 on.pull_request 与 on.push.branches: [main] 定义触发条件,并设置 permissions: contents: read 最小化权限。
  • 并发取消机制:使用 concurrency.group: ci-${{ github.ref }} 与 cancel-in-progress: true,同一分支重复推送时自动取消旧运行。
  • Rust 质量检查 job:rust-fmt 通过 git diff 仅对变更的 *.rs 文件执行 rustfmt --check;rust-clippy 执行 cargo clippy --workspace --exclude atomcode-codingplan-crypto --all-targets;rust-test 执行 cargo test --workspace --all-targets,均配合 Swatinem/rust-cache@v2 缓存加速。
  • WebUI 检查 job:webui 在 webui 目录下使用 Node 22 依次执行 npm ci、npm test、npm run typecheck、npm run build,并启用 npm 缓存。
  • JetBrains 扩展检查 job:jetbrains 在 extensions/jetbrains 目录下使用 Temurin Java 21 与 Gradle 缓存执行 ./gradlew test --no-daemon(30 分钟超时限制)。
likedislike
不准确?
atomgit-bot
atomgit-bot成员
16 天前 评论:

代码审查

✅ 未发现问题

likedislike
不准确?