尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

如何用 Docker 镜像 ghcr.io/astral-sh/ruff 在容器内执行 ruff check

如何用 Docker 镜像 ghcr.io/astral-sh/ruff 在容器内执行 ruff check 如何用 Docker 镜像 ghcr.io/astral-sh/ruff 在容器内执行 ruff check【免费下载链接】ruffAn extremely fast Python linter and code formatter, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/ru/ruff当你想在容器环境里对 Python 代码做 lint而不是在宿主机上安装 ruff 时可以使用 Astral 官方发布的 Docker 镜像ghcr.io/astral-sh/ruff。它只包含ruff可执行文件distroless 镜像运行check后容器退出码会遵循 ruff 的约定0表示未发现违规或违规已全部自动修复1表示发现了违规2表示配置或命令行参数无效、内部错误等异常终止。镜像与可用标签镜像按每个 release 打 tag并保留latest指向最新发布。镜像基础分为几类见 docs/integrations.md默认 distroless 镜像ruff:latestruff:{major}.{minor}.{patch}如ruff:0.6.6ruff:{major}.{minor}如ruff:0.6该小版本下的最新 patch基于alpine:3.20ruff:alpine、ruff:alpine3.20基于debian:bookworm-slimruff:debian-slim、ruff:bookworm-slim基于buildpack-deps:bookwormruff:debian、ruff:bookworm非 distroless 镜像同样以版本 tag 发布格式为ruff:{major}.{minor}.{patch}-{base}和ruff:{major}.{minor}-{base}例如ruff:0.6.6-alpine。在容器内执行 ruff check官方给出的主路径命令是把当前项目目录挂载到容器内的/io然后执行check见 docs/installation.md$ docker run -v .:/io --rm ghcr.io/astral-sh/ruff check各部分的作用-v .:/io把宿主机当前目录挂载为容器内/io。ruff 镜像的构建文件 Dockerfile 中WORKDIR /io、ENTRYPOINT [/ruff]所以容器启动后 ruff 直接在项目目录上工作且镜像内所有路径都以/io为基准--rm任务结束后自动删除容器check追加在镜像名之后的参数会作为ruff的参数传入等价于在宿主机上执行ruff check。需要固定版本时给镜像加版本 tag 即可$ docker run -v .:/io --rm ghcr.io/astral-sh/ruff:0.3.0 check在启用 SELinux 的宿主机上文档给出的替代写法是追加:Z标志让挂载目录获得正确的 SELinux 标签$ docker run -v .:/io:Z --rm ghcr.io/astral-sh/ruff check透传 ruff 的其它选项因为镜像ENTRYPOINT就是/ruffcheck之后的任意 ruff 参数都可以原样透传。常用的例如$ docker run -v .:/io --rm ghcr.io/astral-sh/ruff check --output-formatgithub .--output-format可选值包括concise、full默认、json、json-lines、junit、grouped、github、gitlab、pylint、rdjson、azure、sarif。项目使用非默认配置文件时可以用--config指向具体的 TOML 配置文件例如$ docker run -v .:/io --rm ghcr.io/astral-sh/ruff check /io --config /io/ruff.tomlruff 会识别挂载目录中的pyproject.toml、ruff.toml、.ruff.toml不带--config时按文档描述的文件发现规则定位配置见 docs/configuration.md。验证结果命令跑完后按容器退出码判断退出码0没有违规或发现的违规全部被自动修复退出码1存在违规此时终端会列出违规明细退出码2ruff 异常终止通常是配置无效、CLI 参数错误或内部错误需要先修正参数或配置再重跑。在脚本或 CI 里可以用echo $?或 shell 判断来检查退出码。另外两个影响退出码的选项见 docs/linter.md--exit-zero即使发现违规也以0退出异常终止仍为2--exit-non-zero-on-fix发现违规即以1退出即使违规已全部自动修复。在 GitLab CI 中使用该镜像docs/integrations.md 给出了用ghcr.io/astral-sh/ruff:0.16.6-alpine作为 CI 镜像、生成 GitLab codequality 报告的示例节选自文档原文.base_ruff: stage: build interruptible: true image: name: ghcr.io/astral-sh/ruff:0.16.6-alpine before_script: - cd $CI_PROJECT_DIR - ruff --version Ruff Check: extends: .base_ruff script: - ruff check --output-formatgitlab --output-filecode-quality-report.json artifacts: reports: codequality: $CI_PROJECT_DIR/code-quality-report.json注意这条路径与docker run的写法不同在 alpine 镜像内直接调用ruff工作目录由$CI_PROJECT_DIR决定并用--output-file把报告写回项目目录以便收集为 artifact。限制默认镜像是 distroless 的只含ruff二进制构建基于 Dockerfile最终阶段FROM scratch不要在容器内假设存在 shell、Python 解释器或其它工具需要基础环境时选用 alpine 或 debian 变体 tag。容器内 ruff 能看到的文件就是你挂载的内容-v .:/io只挂载当前目录跨目录的项目结构需要在挂载时自行覆盖。【免费下载链接】ruffAn extremely fast Python linter and code formatter, written in Rust.项目地址: https://gitcode.com/GitHub_Trending/ru/ruff创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表