
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
!Build Status
状态:孵化中
SDCLI 是一个 Docker 镜像,作为 Atlassian 安全开发团队的命令行工具(CLI),用于仓库管理。它集成了项目创建、测试执行、CI 自动化等工具,旨在保持仓库构建流程的一致性。通过容器化方式提供统一的开发环境,确保团队成员使用相同版本的工具链,简化开发流程并提高协作效率。
SDCLI 提供以下核心功能模块,涵盖多语言项目管理、代码质量保障及仓库标准化配置:
bashsdcli go # Go 项目管理工具 dep # 安装 Go 项目依赖 lint # 执行标准 Go 代码检查 test # 运行单元测试 integration # 运行集成测试 coverage # 生成测试覆盖率报告 repo # 仓库标准化工具 all # 通用仓库工具 add-oss # 添加开源许可证及贡献指南文件 audit-contract # 验证仓库是否符合团队规范 go # Go 仓库专用工具 add-docker # 添加 Dockerfile add-layout # 生成标准项目结构 add-lint # 添加代码检查配置 add-travis # 添加 Travis CI 配置 create # 生成完整 Go 项目(基于模板) build # 启动交互式构建流程 python # Python 项目管理工具 dep # 安装 Python 项目依赖 lint # 使用 flake8 执行代码检查 test # 运行单元测试 coverage # 生成测试覆盖率报告 yaml # YAML 文件检查工具 lint # 对当前目录所有 YAML 文件执行 yamllint 检查 version # 列出 SDCLI 中安装的语言及工具版本
SDCLI 适用于 Atlassian 安全开发团队的日常开发与仓库管理,主要场景包括:
go dep)、Python(python dep)项目依赖,避免环境差异。go lint、python lint、yaml lint)、测试(go test、python test)及覆盖率分析。repo all audit-contract),确保开源合规性(repo all add-oss)。SDCLI 以 Docker 镜像形式分发,首先拉取最新版本:
bashdocker pull asecurityteam/sdcli:v1
通过 docker run 执行 SDCLI 命令,需挂载本地项目目录及 SSH 认证代理(如需 Git 操作)。以下为通用命令模板:
Linux 系统(需挂载 SSH 认证代理)
bashexport cwd=$(pwd) export project_path=${cwd#"${GOPATH}/src/"} # 提取 GOPATH 相对路径 docker run -ti \ # 挂载 SSH 认证代理(用于 Git 仓库访问) --mount src="${SSH_AUTH_SOCK}",target="/ssh-agent",type="bind" \ --env SSH_AUTH_SOCK=/ssh-agent \ # 挂载当前项目目录到容器内 GOPATH --mount src="$(pwd -L)",target="/go/src/${project_path}",type="bind" \ # 设置容器工作目录为项目路径 -w "/go/src/${project_path}" \ # 执行具体命令(示例:运行 Go 单元测试) asecurityteam/sdcli:v1 go test
Mac 系统(无需 SSH 挂载)
省略 SSH 代理挂载参数:
bashexport cwd=$(pwd) export project_path=${cwd#"${GOPATH}/src/"} docker run -ti \ --mount src="$(pwd -L)",target="/go/src/${project_path}",type="bind" \ -w "/go/src/${project_path}" \ asecurityteam/sdcli:v1 go test # 示例命令
为简化命令输入,可将以下函数添加到 .bashrc 或 .bash_profile,自动处理路径与挂载:
bashsdcli() { local cwd local gopath cwd="$(pwd)" gopath="${GOPATH:-~/go}" # 默认 GOPATH 为 ~/go(如未显式设置) # 提取项目在 GOPATH 中的相对路径 local project_path=${cwd#"${gopath}/src/"} docker run -ti --rm \ # Linux 需保留以下两行,Mac 需删除 --mount src="${SSH_AUTH_SOCK}",target="/ssh-agent",type="bind" \ --env "SSH_AUTH_SOCK=/ssh-agent" \ # 挂载项目目录并设置工作目录 --mount src="$(pwd -L)",target="/go/src/${project_path}",type="bind" \ -w "/go/src/${project_path}" \ asecurityteam/sdcli:v1 "$@" # 传递用户输入的命令参数 }
配置后即可直接通过 sdcli <命令> 调用,例如:
bashsdcli go lint # 执行 Go 代码检查 sdcli python dep # 安装 Python 依赖 sdcli yaml lint # 检查 YAML 文件
fish Shell 函数定义
创建 ~/.config/fish/functions/sdcli.fish(权限设为 755):
bashfunction sdcli set cwd (pwd) set gopath "$GOPATH" if test -z "$gopath" set gopath ~/go # 默认 GOPATH end set project_path (string replace "$gopath/src/" "" $cwd) # 提取相对路径 docker run --rm \ --mount src="$cwd",target="/go/src/$project_path",type="bind" \ -w "/go/src/$project_path" \ asecurityteam/sdcli:v1 $argv end
解决交互式命令问题
非 bash Shell(如 fish)可能因 TTY 配置导致交互式命令失败(如提示“no TTY for interactive shell”)。可通过以下两种方式解决:
bashsdcli repo go create -- project_name="myproject" project_description="描述" --no-input
bashdocker run -it \ --entrypoint "/bin/bash" \ --mount src="$cwd",target="/go/src/$project_path",type="bind" \ -w "/go/src/$project_path" \ asecurityteam/sdcli:v1 # 容器内执行命令 /usr/bin/sdcli go test
SDCLI 基于 cookiecutter 模板生成项目,支持交互式(默认)和非交互式两种模式。推荐非交互式模式以简化输入:
bashsdcli repo go create -- \ project_name="我的项目" \ project_description="这是一个基于 SDCLI 生成的 Go 项目" \ --no-input # 禁用交互提示,直接使用参数生成
省略 --no-input 及参数,通过终端提示输入项目信息:
bashsdcli repo go create # 按提示输入 project_name、project_description 等
SDCLI 支持通过添加可执行文件扩展命令。命令命名规则为:子命令通过下划线连接,例如 sdcli my feature 会调用容器内 /commands/sdcli_my_feature 可执行文件。
./commands 目录中创建可执行文件,命名格式为 sdcli_<子命令1>_<子命令2>...(如 sdcli_demo_cmd)。chmod +x)。sdcli demo cmd 调用。| 参数/环境变量 | 作用 | 示例值 |
|---|---|---|
SSH_AUTH_SOCK | SSH 认证代理路径,用于容器内 Git 操作 | /run/user/1000/keyring/ssh |
GOPATH | Go 项目路径,用于计算容器内挂载路径 | ~/go |
project_path | 项目在 GOPATH 中的相对路径 | github.com/asecurityteam/myproj |
--mount | 挂载本地目录/文件到容器 | src="$(pwd)",target="/go/src/...",type="bind" |
-w/--workdir | 设置容器工作目录 | /go/src/github.com/asecurityteam/myproj |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


来自真实用户的反馈,见证轩辕镜像的优质服务