如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
XWiki Build 镜像为XWiki项目定制,主要用于为 [***] 生成Jenkins代理,同时也支持在任何安装Docker的机器上构建XWiki项目。该镜像基于Jenkins官方提供的 https://hub.docker.com/r/jenkinsci/ssh-slave 基础镜像构建,补充了XWiki构建所需的特定工具链。
在 jenkins/ssh-slave 基础镜像之上,该镜像添加了以下XWiki构建必需的工具:
该镜像通过 https://hub.docker.com/r/xwiki/build 自动构建。
1.1 ci.xwiki.org配置
前置条件: 在代理机器上需存在以下文件/目录(详见下方说明):
/home/hudsonagent/.m2/settings.xml/home/hudsonagent/.sshDocker云配置:
tcp://<代理主机IP>:2376xwiki/build卷挂载说明:/var/run/docker.sock:/var/run/docker.sock /home/hudsonagent/.m2/settings.xml:/root/.m2/settings.xml /home/hudsonagent/.ssh:/tmp/xwiki/.ssh:ro /home/hudsonagent/.xwiki:/root/.xwiki
/var/run/docker.sock:/var/run/docker.sock:允许Docker外的Docker(DOOD),支持功能测试中使用Docker容器/home/hudsonagent/.m2/settings.xml:/root/.m2/settings.xml:提供Maven仓库配置(用于获取非中央仓库 artifacts)及插件所需凭据/home/hudsonagent/.ssh:/tmp/xwiki/.ssh:ro:支持Jenkins流水线(如Clover)向网络中其他机器发布输出(如向 maven.xwiki.org 发布Clover报告),ro 表示只读/home/hudsonagent/.xwiki:/root/.xwiki:存储XWiki Docker测试框架的缓存文件,避免频繁从DockerHub拉取镜像(DockerHub有每6小时100-200次的拉取限制)/rootroot1.2 CI代理上的手动执行
若需登录CI代理节点复现问题并手动执行构建,步骤如下:
bashdocker run -d --rm -v /var/run/docker.sock:/var/run/docker.sock -v /home/hudsonagent/.m2/settings.xml:/root/.m2/settings.xml -v /home/hudsonagent/.ssh:/tmp/xwiki/.ssh:ro xwiki/build
bashdocker exec -it <容器ID> bash -l
bashgit clone https://github.com/xwiki/xwiki-platform.git
bashcd xwiki-platform/<具体路径>; mvn clean install
~/xwiki-platform/xwiki-platform-core/xwiki-platform-annotation/xwiki-platform-annotation-test/xwiki-platform-annotation-test-docker 中执行:
bashmvn clean integration-test -Dxwiki.checkstyle.skip=true -Dxwiki.surefire.captureconsole.skip=true -Dxwiki.revapi.skip=true -Dmaven.build.dir=target/mysql-5.7-5.1.45-tomcat-8.5-chrome -Dxwiki.test.ui.database=mysql -Dxwiki.test.ui.databaseTag=5.7 -Dxwiki.test.ui.jdbcVersion=5.1.45 -Dxwiki.test.ui.servletEngine=tomcat -Dxwiki.test.ui.servletEngineTag=8.5 -Dxwiki.test.ui.browser=chrome -Dxwiki.test.ui.verbose=true
bashvncserver :1 -geometry 1280x960 -localhost -nolisten tcp export DISPLAY=:1
bashdocker stop <容器ID>
本地使用适用于复现CI问题或搭建本地XWiki构建环境,仅需安装Docker。
2.1 所有操作系统通用
2.1.1 交互模式
适用于最小化构建配置,模拟CI代理环境:
bashdocker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock --entrypoint "/bin/bash" xwiki/build
进入容器后操作:
bashgit clone https://github.com/xwiki/xwiki-platform.git
注意:
Caused by: org.openqa.selenium.WebDriverException: invalid argument: can't kill an exited process)2.1.2 脚本模式
一次性执行完整构建流程(示例:构建整个XWiki Platform,含功能测试):
bashdocker run --rm -v /var/run/docker.sock:/var/run/docker.sock --entrypoint "/bin/bash" xwiki/build -c " \ git clone https://github.com/xwiki/xwiki-platform.git && \ cd xwiki-platform && \ export MAVEN_OPTS='-Xmx2048m -Xms512m' && \ vncserver :1 -geometry 1280x960 -localhost -nolisten tcp && \ export DISPLAY=:1 && \ /home/hudsonagent/maven/bin/mvn --no-transfer-progress install -Plegacy,integration-tests,docker,snapshot \ "
2.2 macOS系统
以下步骤配置GUI显示(需先参考 教程 安装必要工具):
bashsocat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
bashopen -a Xquartz
bashIP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
bashdocker run -d --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $HOME/.m2:/root/.m2:delegated \ -v $HOME/.git-credentials:/root/.git-credentials \ -v $HOME/.git-gitconfig:/root/.git-gitconfig \ -v $HOME/.gitconfig:/root/.gitconfig \ -v $HOME/.gitignore_global:/root/.gitignore_global \ -v $HOME/.ssh:/tmp/xwiki/.ssh:ro \ -v $HOME/.gnupg:/root/.gnupg \ -v `pwd`:/root/`basename \`pwd\``:delegated \ -e DISPLAY=$IP:0 -p 8080:8080 --privileged xwiki/build
参数说明:
delegated:优化macOS下卷挂载性能(参考 Docker for Mac文档)/var/run/docker.sock:/var/run/docker.sock:支持Docker-in-Docker$HOME/.m2:/root/.m2:delegated:复用本地Maven仓库,避免重复下载依赖.git* 挂载:映射本地Git配置至容器$HOME/.ssh:/tmp/xwiki/.ssh:ro:映射SSH密钥(容器启动脚本会自动复制至 /root/.ssh 并设置权限)$HOME/.gnupg:/root/.gnupg:映射GPG密钥(用于Maven发布等场景)-e DISPLAY=$IP:0:转发显示至本地XQuartz-p 8080:8080:映射端口,允许本地访问容器内XWiki实例--privileged:特权模式(部分场景可能需要)2.3 Linux系统
与macOS类似,但需添加X11转发参数以支持GUI显示:
bashsudo docker run --rm -it \ -v /var/run/docker.sock:/var/run/docker.sock \ -v $HOME/.m2:/root/.m2:delegated \ -v $HOME/.git-credentials:/root/.git-credentials \ -v $HOME/.git-gitconfig:/root/.git-gitconfig \ -v $HOME/.gitconfig:/root/.gitconfig \ -v $HOME/.gitignore_global:/root/.gitignore_global \ -v $HOME/.ssh:/tmp/xwiki/.ssh:ro \ -v $HOME/.gnupg:/root/.gnupg \ -v `pwd`:/root/`basename \`pwd\``:delegated \ -p 8080:8080 \ -v /tmp/.X11-unix:/tmp/.X11-unix \ -v $XAUTHORITY:/root/.Xauthority \ -e DISPLAY \ --net=host \ --entrypoint "/bin/bash" \ xwiki/build
X11转发必需参数(支持容器内Firefox窗口显示):
-v /tmp/.X11-unix:/tmp/.X11-unix \ -v $XAUTHORITY:/root/.Xauthority \ -e DISPLAY \ --net=host \
2.3.1 构建示例
执行单个Selenium测试类(如"Flavor Test - UI"步骤,Firefox窗口通过X11转发显示):
bash# 进入测试模块目录 cd ~/xwiki-platform/xwiki-platform-distribution/xwiki-platform-distribution-flavor/xwiki-platform-distribution-flavor-test/xwiki-platform-distribution-flavor-test-ui # 执行测试 mvn clean install -Plegacy,integration-tests,jetty,hsqldb,firefox -Dpattern=UserClassFieldTest
执行"Flavor Test - Upgrade"测试:
bash# 进入升级测试模块目录 cd ~/xwiki-platform/xwiki-platform-distribution/xwiki-platform-distribution-flavor/xwiki-platform-distribution-flavor-test/xwiki-platform-distribution-flavor-test-upgrade/xwiki-platform-distribution-flavor-test-upgrade-1011 # 执行测试 mvn clean install -Plegacy,integration-tests,jetty,hsqldb,firefox
执行Docker测试(Firefox运行于Docker-in-Docker容器,需通过VNC客户端连接容器内VNC服务器查看):
bash# 进入Docker测试模块目录 cd ~/xwiki-platform/xwiki-platform-core/xwiki-platform-flamingo/xwiki-platform-flamingo-theme/xwiki-platform-flamingo-theme-test/ # 执行测试 mvn clean install -Plegacy,integration-tests,snapshot,docker -Dxwiki.checkstyle.skip=true -Dxwiki.surefire.captureconsole.skip=true -Dxwiki.revapi.skip=true
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


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