如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
由Megabyte Labs维护的性能优化CodeClimate引擎
该项目是https://github.com/koalaman/shellcheck https://codeclimate.com/引擎的主页。它旨在将Shellcheck结果集成到GitLab合并请求Web界面中。该项目还构建了一个轻量级的独立Shellcheck代码检查器,可与CodeClimate引擎一起使用,或在不需要CodeClimate引擎结果的情况下单独使用。
如果您有兴趣使用该工具但不需要CodeClimate集成,可以通过从镜像名称中删除"codeclimate-"字符串来获取"latest"、"slim"和版本化的镜像,而不包含CodeClimate相关代码。例如,如果镜像名为"megabytelabs/codeclimate-shellcheck",则可以使用"megabytelabs/shellcheck"镜像获取不含CodeClimate相关代码的相同镜像。有关可选镜像的完整列表,请查看https://hub.docker.com/r/megabytelabs/shellcheck。
注意:此项目的CodeClimate引擎版本的DockerHub页面位于上述DockerHub页面上,也位于https://hub.docker.com/r/megabytelabs/codeclimate-shellcheck上,前缀为"codeclimate-"。
我们所有的CodeClimate引擎项目都包含两个变体。一个是使用Docker和项目根目录中的Dockerfile创建的常规构建。另一个构建是通过DockerSlim构建的"slim"构建。如果您寻求稳定性并希望利用"slim"构建,则在引用镜像时应指定确切版本(例如,使用"megabytelabs/codeclimate-package:5.4.0-slim"而不是"megabytelabs/codeclimate-package:slim")。
只要有可能,我们会使用Docker镜像所用于的软件的相应版本来标记Docker镜像版本。例如,如果您使用ESLint CodeClimate镜像,则"megabytelabs/codeclimate-eslint:5.4.0"镜像意味着它可能包含版本为"5.4.0"的ESLint。可能会有一些例外,但这是我们努力的目标。
采用多种测试方法来确保"latest"和"slim"构建均正常工作。存储库根目录中的"Dockerfile-test.yml"文件是一个容器结构测试,用于确保每个容器都正常工作。此外,我们还对存储在"test/compare/"中的示例项目运行命令,以确保"latest"镜像的输出与"slim"镜像的输出匹配。在其他一些情况下,我们还为CodeClimate引擎编写的自定义代码包含单元测试。
如果您选择利用此项目提供的开发工具,那么您需要运行"bash start.sh"(或"npm i",它在完成后调用"bash start.sh")。"start.sh"脚本将尝试自动将构建系统上不存在的任何要求(无需sudo)安装到用户的"~/.local/bin"文件夹中。"start.sh"脚本还负责其他任务,如通过调用"Taskfile.yml"中定义的任务生成文档。有关可选要求的使用和设置的更多详细信息,请查看https://gitlab.com/megabyte-labs/docker/codeclimate/shellcheck/-/blob/master/docs/CONTRIBUTING.md指南。
准备开始开发时,运行"task --menu"以打开一个交互式对话框,帮助您了解我们已经为您设计的构建命令。
有几种不同的方式可以使用此项目提供的Docker容器。首先,您可以通过运行以下命令在本地测试该工具:
shelldocker run -it -v ${PWD}:/work -w /work --rm docker.xuanyuan.run/megabytelabs/shellcheck:latest --help
这允许您运行Shellcheck而无需在本地安装它。它还会在您完成后从系统中删除镜像。这可能对安全性有好处,因为应用程序位于容器内,并且还可以保持文件系统清洁。
您还可以将bash别名添加到"/.bashrc"文件中,以便随时运行Shellcheck命令。为此,将以下代码段添加到"/.profile"文件(或等效文件)中:
shellshellcheck() { docker run -it -v ${PWD}:/work -w /work --rm docker.xuanyuan.run/megabytelabs/shellcheck:latest "$@" }
注意:有些CLI工具在不传递任何参数的情况下运行。例如,CLI工具"ansible-lint"只需在终端中输入"ansible-lint"即可运行。我们的Docker镜像默认命令是显示版本,因此要解决这个问题,您可以运行"ansible-lint ."。
该项目的主要目的是构建可用于CI管道和GitLab CI CodeClimate分析期间的Docker容器。
CodeClimate GitLab CI示例
如果您有兴趣改进合并请求的GitLab Web界面,那么您可以查看我们的https://gitlab.com/megabyte-labs/gitlab-ci/-/raw/master/lint/codeclimate.gitlab-ci.yml。它必须在包含您要报告的所有代码检查器的单个CI阶段中运行,因为GitLab CI只接受一个CodeClimate报告工件。
CodeClimate CLI演练
如果要将CodeClimate合并到项目中,需要确保在项目根目录中正确设置了".codeclimate.yml"。至少,该文件可能如下所示:
yml--- engines: shellcheck: enabled: true exclude_paths: - 'node_modules/**'
此外,在运行CodeClimate CLI之前,需要确保此项目的CodeClimate镜像已拉取到本地缓存并为CodeClimate正确标记。您可以通过运行以下命令来完成:
shelldocker pull docker.xuanyuan.run/megabytelabs/codeclimate-shellcheck:latest docker tag megabytelabs/codeclimate-shellcheck:latest codeclimate/codeclimate-shellcheck:latest
之后,您需要通过传递"--dev"参数来调用CodeClimate CLI。这可能看起来有些不规范,但这是使用未在DockerHub上的"codeclimate"命名空间中正式托管的CodeClimate引擎的唯一方法。您的CLI命令可能如下所示:
shellbrew install codeclimate/formulae/codeclimate codeclimate analyze --dev
或者,如果您想查看HTML报告:
shellbrew install codeclimate/formulae/codeclimate codeclimate analyze --dev -f html > codeclimate-report.html
独立集成
如果要将此CI管道工具集成到GitLab CI项目中而不进行CodeClimate集成,那么第一步是在GitLab存储库的根目录中创建".gitlab-ci.yml"文件。您的".gitlab-ci.yml"文件应如下所示:
yaml--- stages: - lint include: - remote: https://gitlab.com/megabyte-labs/gitlab-ci/-/raw/master/lint/shellcheck.gitlab-ci.yml
就是这样!现在,每当您提交代码(与上面"remote:"文件中列出的参数匹配)时,Shellcheck都会运行。理想情况下,对于生产环境,您应该将上面"remote:"链接中的源代码复制到另一个位置,并将"remote:"链接更新为文件的新位置。这样,您不必担心我们团队对"remote:"文件所做的任何更改。
此CodeClimate引擎/代码检查器目前不允许任何配置。它运行Shellcheck时忽略一组硬编码的文件/目录,您可以通过查看"local/codeclimate-shellcheck"文件来查看。它还硬编码忽略某些Shellcheck错误,您也可以在"local/codeclimate-shellcheck"文件中查看。如果您想出了一种接受解析配置数据的好方法,请打开拉取请求。
yaml--- engines: shellcheck: enabled: true
您可能有需要修改我们的Docker镜像的用例。对Dockerfile进行更改后,您可以使用以下代码将自定义容器上传到Docker Hub:
shellexport DOCKERHUB_USERNAME=Your_DockerHub_Username_Here export DOCKERHUB_PASSWORD=Your_DockerHub_Password_Here docker login -u "$DOCKERHUB_USERNAME" -p "$DOCKERHUB_PASSWORD" docker.io docker build --pull -t "$DOCKERHUB_USERNAME/shellcheck:latest" . docker push "$DOCKERHUB_USERNAME/shellcheck:latest"
设置DockerHub用户名和密码后,上面的命令将构建Docker镜像并将其上传到https://hub.docker.com/,在那里它将公开可访问。您可以看到此逻辑作为GitLab CI任务在此处实现。此GitLab CI任务与此存储库根目录中的".gitlab-ci.yml"文件结合使用。
我们的一些存储库支持通过https://gitlab.com/megabyte-labs/ansible-roles/dockerslim创建轻量级构建。根据https://github.com/docker-slim/docker-slim,精简容器可以减小最终镜像大小,并通过减少***面提高镜像的安全性。为支持它的任何内容创建轻量级构建是有意义的,包括Alpine镜像。在他们的GitHub页面上,他们报告说某些镜像的大小可以减少高达448.76倍。这意味着如果您的镜像自然是**700MB**,那么它**可以减少到1.56MB**!它通过删除容器镜像中所有不必要的内容来工作。
作为一项便利功能,我们在"package.json"中包含了一个应该构建轻量级镜像的命令。在存储库根目录中运行"npm i"(或如果您没有安装Node.js,则运行"bash start.sh")后,只需运行"task docker:build"即可构建"latest"和"slim"构建。
要手动构建"slim" Dockerfile并将其发布到Docker Hub,您可以使用以下内容作为起点:
shellexport DOCKERHUB_USERNAME=Your_DockerHub_Username_Here export DOCKERHUB_PASSWORD=Your_DockerHub_Password_Here docker login -u "$DOCKERHUB_USERNAME" -p "$DOCKERHUB_PASSWORD" docker.io docker build -t "$DOCKERHUB_USERNAME/shellcheck:latest" . docker-slim build --tag $DOCKERHUB_USERNAME/shellcheck:slim {{#if (eq (typeOf dockerSlimCommand) "string")}}dockerSlimCommand}}{{/if{{#if (not (eq (typeOf dockerSlimCommand) "string"))}}dockerSlimCommand[slug]}}{{/if $DOCKERHUB_USERNAME/shellcheck:latest docker push "$DOCKERHUB_USERNAME/shellcheck:slim"
修改上面的DockerSlim命令以解决问题或比我们的命令进一步减小占用空间可能是可能的。您可以在"package.json"中"blueprint.dockerSlimCommand"下内联修改轻量级构建命令。我们的一些存储库在"Dockerfile"中有多个构建目标,因此这些存储库将有多个"dockerSlimCommands"。
如果您有改进,请打开拉取请求。同样,请确保将上面代码段中的"DOCKERHUB_USERNAME"和"DOCKERHUB_PASSWORD"替换为您的Docker Hub用户名和密码。上面代码段中的命令将构建轻量级Docker镜像并将其上传到https://hub.docker.com/,在那里它将公开可访问。
考虑到这个存储库基本上可以归结为一个Dockerfile,您可能会注意到我们有很多额外的文件。这些额外的文件旨在使团队开发更容易、可预测和愉快。如果您安装了最新版本的Node.js,可以通过在存储库根目录中运行"npm i"(或者如果您当前没有安装Node.js,则运行"bash start.sh")来开始使用我们的构建工具。之后,您可以运行"task --list"查看可用开发功能的列表。或者,您可以运行"task --menu"查看交互式菜单,该菜单将指导您完成开发过程。
注意:我们使用https://github.com/go-task/task的自定义版本,因此如果您已经安装了它,那么您应该用我们的版本替换它,或者为"task"使用不同的bin名称。
有关更多详细信息,请查看https://gitlab.com/megabyte-labs/docker/codeclimate/shellcheck/-/blob/master/CONTRIBUTING.md文件。
利用持续集成(CI)工具可以显著提高开发人员效率。它们允许您执行诸如扫描新代码以查找可能的错误并自动部署新软件等操作。
此存储库包含Docker容器的构建说明,这只是CI难题的一部分。几乎所有https://gitlab.com/megabyte-labs/dockerfile/ci-pipeline都有一个单一目的。
我们没有使用无数个公开的Docker镜像,而是内部创建它,因此我们确切知道容器中存在什么代码。我们还确保所有CI管道镜像尽可能小,以便我们的CI环境可以快速下载并运行特定任务。使用此存储库作为基础,您也可以轻松创建自己的内部CI管道容器镜像。
乍一看,您可能会注意到此存储库中有许多文件。几乎所有前面带有句点的文件和文件夹都是开发配置。这些文件和文件夹配置的工具旨在使开发更容易、更快。它们还旨在通过迫使开发人员遵循严格的标准来改进团队开发,以便在所有存储库中使用相同的设计模式。
欢迎贡献、问题和功能请求!随时查看https://github.com/megabyte-labs/codeclimate-shellcheck/issues。如果您想贡献,请查看https://github.com/megabyte-labs/codeclimate-shellcheck/blob/master/docs/CONTRIBUTING.md。
亲爱的了不起的人,
我出于热爱创建开源项目。虽然我有工作、住所和尽可能多的快餐,但被社区欣赏我花费大量时间和***的东西仍然很酷。请考虑赞助我!谁知道呢?也许我能够辞掉工作,全职发布开源项目。
此致,
Brian Zalewski
版权所有 © 2020-2021 Megabyte LLC。此项目采用https://gitlab.com/megabyte-labs/docker/codeclimate/shellcheck/-/blob/master/LICENSE许可证。
以下是 megabytelabs/shellcheck 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务