Ruff 如何接入 CI/CD 与 pre-commitGitHub Action 自动化检查实战教程【免费下载链接】ruffAn extremely fast Python linter and code formatter, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/ru/ruffRuff 是一款用 Rust 编写的极速 Python linter代码检查器与代码格式化工具比 Flake8、Black 快 10~100 倍。本文带你把 Ruff 接入 CI/CD 流水线与 pre-commit 提交钩子通过 GitHub Action 实现自动化检查利用内置缓存提速构建让代码质量在每次提交时都有保障。为什么要把 Ruff 接入 CI/CD手动跑 linter 容易忘记CI 自动检查则零遗漏。Ruff 接入 CI 的三大好处⚡️快扫描整个仓库通常只需零点几秒几乎不增加 CI 耗时️稳统一团队代码规范未通过检查的代码无法合入自动修复配合--fix自动修正未使用的 import 等常见问题Ruff 通过pyproject.toml配置文件驱动详见 docs/tutorial.mdCI 中会自动读取同一份配置本地与远端行为完全一致。一分钟安装 RuffCI 环境里最简单的安装方式是pip install ruff完整安装方式见 docs/installation.md$ pip install ruff $ ruff check # 检查当前目录 $ ruff format # 格式化当前目录也可以在本地项目中以开发依赖方式安装uv add --dev ruff或pip install ruff之后用ruff check与ruff format两条命令即可完成检查与格式化。GitHub Action 自动化检查一键配置官方推荐的 CI 配置极其简单完整示例来自 docs/integrations.md。在仓库中创建.github/workflows/ruff.ymlname: CI on: push jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - name: Install Python uses: actions/setup-pythonv5 with: python-version: 3.11 - name: Install dependencies run: | python -m pip install --upgrade pip pip install ruff # 使用 github 输出格式实现自动行内注解 - name: Run Ruff run: ruff check --output-formatgithub .关键参数--output-formatgithub的妙用ruff check支持concise、json、junit、github、gitlab、sarif等多种输出格式。指定--output-formatgithub后Ruff 会输出 PR 检查标注annotations每条 lint 错误都会直接显示在 Pull Request 对应代码行的旁边无需翻看日志定位问题——这是新手最容易忽略、却最省时间的一个参数。更简单的方式ruff-action官方还提供现成的 GitHub Actionastral-sh/ruff-action只需两行即可接入name: Ruff on: [push, pull_request] jobs: ruff: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - uses: astral-sh/ruff-actionv3ruff-action支持通过with:传递参数version固定 Ruff 版本、args自定义命令行默认check、src指定检查路径默认.和src例如- uses: astral-sh/ruff-actionv3 with: version: 0.8.0 args: check --select B src: ./src默认它以通过/失败测试运行确保仓库没有 lint 违规由于底层直接安装并运行 ruff 二进制任何支持的命令如ruff check --fix都可以执行。pre-commit 提交钩子在本地提前拦截问题CI 是最后一道防线pre-commit 钩子则是第一道防线——在git commit时本地自动检查坏代码根本提交不出去。最快配置方法先安装钩子框架pip install pre-commit然后在仓库根目录的.pre-commit-config.yaml中注册 Ruff示例引自 docs/integrations.md- repo: https://github.com/astral-sh/ruff-pre-commit # Ruff version. rev: v0.16.5 hooks: # 运行 linter - id: ruff-check # 运行 formatter - id: ruff-format开启自动修复给钩子加上--fix- repo: https://github.com/astral-sh/ruff-pre-commit rev: v0.16.5 hooks: - id: ruff-check args: [ --fix ] - id: ruff-format两个新手常踩的坑官方文档特别提醒顺序使用--fix时ruff-check钩子必须放在ruff-format以及 Black、isort 等其它格式化工具之前因为修复可能产生需要重新格式化的代码排除 Notebook若项目不涉及 Jupyter给钩子加types_or: [ python, pyi ]即可跳过.ipynb文件进阶技巧让 CI 更快更省心1. 用缓存跳过未变更文件Ruff 内置缓存机制源码位于 crates/ruff_cache/src/lib.rs会自动跳过内容未变化的文件。在 CI 中指定缓存目录可让增量检查更明显对应参数$ ruff check --cache-dir ~/.cache/ruff .2. 固定版本保证可复现ruff-action默认安装最新版 Ruff。建议在.pre-commit-config.yamlrev:与 Actionversion:中固定版本号避免某天新版本启用新规则后 CI 突然变红。本项目自身使用的规则集配置可参考 pyproject.toml 中的[tool.ruff.lint]部分是了解规则选择的良好范例。3. 多流水线平台GitLab CI 与 DockerGitLab CI使用--output-formatgitlab并输出code-quality-report.json即可生成 GitLab 代码质量报告详见 docs/integrations.mdDocker 运行官方发布ghcr.io/astral-sh/ruff镜像含 alpine、debian 等变体在容器化 CI 中可零依赖直接执行ruff check总结场景命令 / 配置效果GitHub Action 基础接入ruff check --output-formatgithub .错误直接标注在 PR 代码行极简接入uses: astral-sh/ruff-actionv3两行配置开箱即用本地提交拦截pre-commit 钩子ruff-checkruff-format坏代码无法提交自动修复钩子加args: [ --fix ]提交前自动修好 import 等CI 提速--cache-dir指定缓存目录跳过未变更文件Ruff 的速度意味着它几乎不会成为 CI 的瓶颈把它装进流水线和提交钩子团队就能以极低成本获得统一的 Python 代码质量保障。下一步可以阅读官方文档完善规则集例如 docs/linter.md 与 docs/configuration.md让检查规则贴合你的项目风格。【免费下载链接】ruffAn extremely fast Python linter and code formatter, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/ru/ruff创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考