本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

Pipeline Components: Shellcheck 是一个包含 Shellcheck 工具的 Docker 镜像,专为 GitLab CI/CD 流水线设计。Shellcheck 是一款开源的 Shell 脚本静态分析工具,可检测脚本中的语法错误、常见陷阱、不符合最佳实践的代码等问题。本镜像的主要用途是在 GitLab CI/CD 流程中集成 Shell 脚本的自动化 linting 检查,提升脚本质量和可靠性。
.sh 文件扩展名、Shebang 声明)。xargs -P 实现多进程并行检查,提升大型项目的检查效率。linting 阶段,在代码构建或测试前对 Shell 脚本进行自动化检查。在 GitLab CI 配置文件(.gitlab-ci.yml)中添加如下阶段,对项目中所有 .sh 文件执行 Shellcheck 检查:
shellcheck: stage: linting # 属于 linting 阶段 image: registry.gitlab.com/pipeline-components/shellcheck:latest # 使用本镜像 script: - | # 查找所有 .sh 文件(排除 .git 目录),并逐个执行 shellcheck find . -name .git -type d -prune -o -type f -name \*.sh -print0 | xargs -0 -r -n1 shellcheck
说明:
find . -name .git -type d -prune:排除 .git 目录,避免检查版本控制相关文件。-name \*.sh:匹配所有 .sh 扩展名的文件。xargs -0 -r -n1 shellcheck:通过 xargs 传递文件路径给 shellcheck,-0 处理含空格的文件名,-r 无文件时不执行,-n1 每次处理 1 个文件。以下配置支持并行处理以加速检查,并自动识别带有 Shebang(如 #!/bin/bash)的非 .sh 文件:
shellcheck: stage: linting image: registry.gitlab.com/pipeline-components/shellcheck:latest script: # 检查所有 .sh 文件(并行处理) - | find . -name .git -type d -prune -o -type f -name \*.sh -print0 | xargs -0 -P $(nproc) -r -n1 shellcheck # -P $(nproc) 按 CPU 核心数并行处理 # 检查带有 Shebang 的非 .sh 文件(如无扩展名但以 #!/bin/sh 开头的脚本) - | find . -name .git -type d -prune -o -type f -regex '.*/[^.]*$' -print0 | # 匹配无扩展名的文件 xargs -0 -P $(nproc) -r -n1 sh -c 'FILE="$0"; if head -n1 "$FILE" |grep -q "^#\\! \?/.\+\(ba|d|k\)\?sh" ; then shellcheck "$FILE" ; else /bin/true ; fi '
说明:
-P $(nproc):使用 nproc 获取 CPU 核心数,实现并行检查,提升效率。head -n1 "$FILE" |grep -q "^#\\! \?/.\+\(ba|d|k\)\?sh" 匹配 Shebang(如 #!/bin/bash、#!/dash 等),对符合条件的文件执行 Shellcheck。除 CI/CD 集成外,可通过 docker run 在本地直接运行镜像检查脚本:
# 检查当前目录下的 script.sh 文件(挂载本地目录到容器内 /app) docker run --rm -v $(pwd):/app pipelinecomponents/shellcheck shellcheck /app/script.sh # 检查当前目录下所有 .sh 文件(使用 find 命令) docker run --rm -v $(pwd):/app pipelinecomponents/shellcheck sh -c "find /app -name '*.sh' -print0 | xargs -0 shellcheck"
参数说明:
--rm:容器退出后自动删除。-v $(pwd):/app:将当前工作目录挂载到容器内 /app 目录,使容器可访问本地脚本文件。若需通过 Docker Compose 管理(适用于固定检查任务),可创建 docker-compose.yml:
version: '3' services: shellcheck: image: pipelinecomponents/shellcheck volumes: - ./:/app # 挂载本地目录到容器 /app command: sh -c "find /app -name '*.sh' -print0 | xargs -0 shellcheck" # 检查所有 .sh 文件
运行检查:
docker-compose up
本项目采用语义化版本控制(Semantic Versioning),版本号格式为 MAJOR.MINOR.PATCH,具体规则参见 Semantic Versioning。
本项目欢迎代码贡献和使用反馈,贡献指南详见 贡献文档。
本项目基于 MIT 许可证 开源,由 Robbert Müller 维护。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429