十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何把ShellCheck加进CI流水线:pre-commit、GitHub Actions等4种部署方法全解析

如何把ShellCheck加进CI流水线:pre-commit、GitHub Actions等4种部署方法全解析 如何把ShellCheck加进CI流水线pre-commit、GitHub Actions等4种部署方法全解析【免费下载链接】shellcheckShellCheck, a static analysis tool for shell scripts项目地址: https://gitcode.com/gh_mirrors/sh/shellcheckShellCheck是一款面向 bash/sh 脚本的静态分析lint工具能在运行前帮你揪出引号缺失、变量未加引号等典型隐患。本文介绍把 ShellCheck 接入 CI 流水线的 4 种部署方法pre-commit 本地钩子、GitHub Actions、通用构建步骤和 Docker 容器化检查并给出版本锁定、输出格式等实用配置技巧。为什么要在 CI 里跑 ShellCheckShellCheck 遵循标准的退出码约定见 shellcheck.1.md退出码含义0全部文件扫描通过无问题1扫描成功但发现问题2部分文件无法处理如文件不存在3 / 4调用语法或参数有误这意味着你只需要在流水线里追加一条shellcheck命令有告警就会让构建失败天然适合作为质量门禁。方法一pre-commit 钩子在提交前本地拦截最适合个人的方案。在仓库根目录的.pre-commit-config.yaml中添加官方 shellcheck-precommit 钩子repo字段填入 shellcheck-precommit 仓库地址repos: - repo: shellcheck-precommit 仓库地址 rev: v0.11.0 hooks: - id: shellcheck # args: [--severitywarning] # 可选只报告 error 和 warning要点必须锁定rev版本号避免新版本的 ShellCheck 带来新告警导致提交突然失败用--severitywarning降低噪音只关心真正的错误和警告官方配置说明可参考 README.md这样每次git commit时改动过的脚本都会先过一遍 ShellCheck问题在离开本机前就被拦截。方法二GitHub Actions 一键集成GitHub 的 Linux Runner预装了 ShellCheck无需任何安装步骤直接写工作流即可name: shellcheck on: [push, pull_request] jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - name: Run ShellCheck run: | shellcheck --severitywarning scripts/*.sh小贴士虽然 Runner 自带但官方仍建议手动安装并锁定特定版本如v0.4.7或stable防止上游升级悄悄改变你的构建结果。方法三Makefile / 自建 CI 步骤如果你用 GitLab CI、Travis 或任何自托管流水线只需把 ShellCheck 作为一步构建检查。最典型的写法是 Makefile官方示例见 README.mdcheck-scripts: # Fail if any of these files have warnings shellcheck myscripts/*.sh在 GitLab CI 中则是一个简单的 joblint-shell: image: alpine:latest before_script: - apk add --no-cache shellcheck xz script: - shellcheck -S warning **/*.shShellCheck 支持SHELLCHECK_OPTS环境变量注入默认参数如--shellbash --excludeSC2016适合在多项目中统一配置。方法四Docker 容器化检查不想碰构建机环境时用官方镜像跑一次性检查最省心docker run --rm -v $PWD:/mnt koalaman/shellcheck:stable \ /mnt/scripts/*.sh:stable表示最新稳定版也可换成:v0.4.7之类锁定版本多平台构建镜像的方式可参考 Dockerfile.multi-arch若想在 CI 镜像里预装 ShellCheck可用shellcheck-alpine基础镜像4 个让 CI 检查更顺手的技巧输出格式对接报告系统-f json1、-f checkstyleXML和-f gcc三种格式可分别接入 Web 应用、CI 报告和编辑器实现见 src/ShellCheck/Formatter/自动修复-f diff输出统一 diff可管道给git apply自动应用修复建议精确忽略单行用# shellcheck disableSC2086全局用.shellcheckrc配置文件--rcfile可指定路径只查关键问题--severitywarning过滤掉 style/info 级别的建议让门禁更清爽总结场景推荐方式核心命令个人本地开发pre-commit 钩子git commit自动触发GitHub 项目Actions预装shellcheck *.sh任意 CI 平台Makefile / job 步骤shellcheck -S warning隔离环境Docker 容器docker run koalaman/shellcheck无论选哪种方式核心原则一致锁定版本、按需过滤严重级别、让退出码 1 阻断构建。把 ShellCheck 变成流水线上的常驻关卡脚本质量从此有底线保障。【免费下载链接】shellcheckShellCheck, a static analysis tool for shell scripts项目地址: https://gitcode.com/gh_mirrors/sh/shellcheck创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表