集成
GitHub Actions
GitHub Actions 提供了开箱即用运行 Ruff 所需的一切功能
name: CI
on: push
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install ruff
# Update output format to enable automatic inline annotations.
- name: Run Ruff
run: ruff check --output-format=github .
Ruff 也可以通过 ruff-action 作为 GitHub Action 使用。
默认情况下,ruff-action 作为通过/失败测试运行,以确保给定的存储库根据其 配置 不包含任何 lint 规则违规。然而,从底层来看,ruff-action 直接安装并运行 ruff,因此它可以用来执行任何受支持的 ruff 命令(例如 ruff check --fix)。
ruff-action 支持所有 GitHub 托管的运行器,并可与任何已发布的 Ruff 版本(即 PyPI 上提供的任何版本)一起使用。
要使用 ruff-action,请在您的存储库中创建一个文件(例如 .github/workflows/ruff.yml),内容如下:
name: Ruff
on: [ push, pull_request ]
jobs:
ruff:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/ruff-action@v3
或者,您可以将 ruff-action 作为步骤包含在任何其他工作流文件中:
ruff-action 通过 with: 接受可选的配置参数,包括:
version:要安装的 Ruff 版本(默认:最新)。args:传递给 Ruff 的命令行参数(默认:"check")。src:传递给 Ruff 的源路径(默认:[".", "src"])。
例如,要使用 Ruff 版本 0.8.0 运行 ruff check --select B ./src:
GitLab CI/CD
您可以将以下配置添加到 .gitlab-ci.yml,以并行运行 ruff format 和 ruff check,并与 GitLab 的 codequality 报告兼容。
.base_ruff:
stage: build
interruptible: true
image:
name: ghcr.io/astral-sh/ruff:0.15.7-alpine
before_script:
- cd $CI_PROJECT_DIR
- ruff --version
Ruff Check:
extends: .base_ruff
script:
- ruff check --output-format=gitlab --output-file=code-quality-report.json
artifacts:
reports:
codequality: $CI_PROJECT_DIR/code-quality-report.json
Ruff Format:
extends: .base_ruff
script:
- ruff format --diff
pre-commit
Ruff 可以通过 ruff-pre-commit 作为 pre-commit 钩子使用。
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.15.7
hooks:
# Run the linter.
- id: ruff-check
# Run the formatter.
- id: ruff-format
要启用 lint 修复,请将 --fix 参数添加到 lint 钩子中:
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.15.7
hooks:
# Run the linter.
- id: ruff-check
args: [ --fix ]
# Run the formatter.
- id: ruff-format
要避免在 Jupyter Notebook 上运行,请从允许的文件类型列表中删除 jupyter:
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.15.7
hooks:
# Run the linter.
- id: ruff-check
types_or: [ python, pyi ]
args: [ --fix ]
# Run the formatter.
- id: ruff-format
types_or: [ python, pyi ]
在使用 --fix 运行时,Ruff 的 lint 钩子应放置在 Ruff 的格式化程序(formatter)钩子之前,并位于 Black、isort 和其他格式化工具之前,因为 Ruff 的修复行为可能会产生需要重新格式化的代码更改。
如果不使用 --fix,Ruff 的格式化程序钩子可以放置在 Ruff 的 lint 钩子之前或之后。
(只要您的 Ruff 配置避免了任何 linter 与格式化程序之间的不兼容性,ruff format 就绝不会引入新的 lint 错误,因此在 ruff check --fix 之后运行 Ruff 的格式化钩子是安全的。)
mdformat
mdformat 能够格式化 Markdown 中的代码块。mdformat-ruff 插件使 mdformat 能够使用 Ruff 格式化 Python 代码块。
Docker
Ruff 提供了一个包含 ruff 二进制文件的无发行版(distroless)Docker 镜像。发布了以下标签:
ruff:latestruff:{major}.{minor}.{patch},例如ruff:0.6.6ruff:{major}.{minor},例如ruff:0.6(最新的补丁版本)
此外,ruff 还发布了以下镜像:
- 基于
alpine:3.20 ruff:alpineruff:alpine3.20- 基于
debian:bookworm-slim ruff:debian-slimruff:bookworm-slim- 基于
buildpack-deps:bookworm ruff:debianruff:bookworm
与无发行版镜像一样,每个镜像都发布了 ruff 版本标签,格式为 ruff:{major}.{minor}.{patch}-{base} 和 ruff:{major}.{minor}-{base},例如 ruff:0.6.6-alpine。