Plugin Compatibility Tester (PCT) 是一个用于生成 Jenkins 插件与 Jenkins 核心版本兼容性矩阵的工具。注意:该镜像已不再发布,仅作历史参考用途。
适用于 Jenkins 插件开发者,在插件开发过程中测试插件与不同版本 Jenkins 核心的兼容性,验证插件在特定 Jenkins 版本下的功能正确性。
测试指定插件与最新 Jenkins 核心
克隆插件仓库并针对最新 Jenkins 核心版本运行 PCT:
shelldocker run -ti --rm -v maven-repo:/root/.m2 -v $(pwd)/out:/pct/out -e ARTIFACT_ID=ssh-slaves -e VERSION=ssh-slaves-1.24 jenkins/pct
测试指定插件与自定义 Jenkins WAR
针对指定 Jenkins WAR 文件(支持 SNAPSHOT 构建)测试插件最新版本:
shelldocker run -ti --rm -v maven-repo:/root/.m2 -v $(pwd)/out:/pct/out -v my/jenkins.war:/pct/jenkins.war:ro -e ARTIFACT_ID=ssh-slaves jenkins/pct
测试自定义 Jenkins 和插件版本
通过卷挂载自定义 Jenkins WAR 和插件源码进行测试:
shelldocker run -ti --rm -v maven-repo:/root/.m2 -v $(pwd)/out:/pct/out -v my/jenkins.war:/pct/jenkins.war:ro -v my/plugin:/pct/plugin-src:ro jenkins/pct
测试自定义仓库分支
针对自定义 Git 仓库的特定分支运行 PCT:
shelldocker run --rm -v maven-repo:/root/.m2 -v $(pwd)/out:/pct/out -e CHECKOUT_SRC=[***] -e VERSION=JENKINS-26374 jenkins/pct
若需测试 WAR 文件(如通过 Custom War Packager 生成)中包含的多个插件,可使用以下配置避免为每个插件启动新容器:
shelldocker run -ti --rm -v maven-repo:/root/.m2 -v $(pwd)/out:/pct/out -v my/jenkins.war:/pct/jenkins.war:ro -e ARTIFACT_ID=ssh-slaves,credentials -e DO_NOT_OVERRIDE_PCT_CHECKOUT=true jenkins/pct
PCT 提供 CLI 接口支持本地手动运行:
mvn clean installPLUGIN_SRC 目录mvn clean install -DskipTests 初始化 artifactsshelljava -jar target/plugins-compat-tester-cli.jar \ --working-dir $(pwd)/tmp/work \ --include-plugins ${PLUGIN_ARTIFACT_ID} \ --war jenkins.war --local-checkout-dir ${PLUGIN_SRC} \ --mvn ${PATH_TO_MAVEN}
执行 java -jar target/plugins-compat-tester-cli.jar -help 获取完整选项列表。
注意:目前同时测试多个插件需确保插件已发布,测试 SNAPSHOT 版本需为每个插件单独执行上述步骤。
shellmake demo TEST_JDK_HOME=${YOUR_JDK_HOME} PLUGIN_NAME=git
通过 JDK_VERSION 环境变量指定 Java 版本(镜像内置 Java 17 和 11):
shellmake demo-docker JDK_VERSION=17 PLUGIN_NAME=git
完整选项可参考 Makefile。
| 环境变量 | 描述 |
|---|---|
ARTIFACT_ID | 待测试插件的 artifact ID。若定义 CHECKOUT_SRC 或挂载 /pct/plugin-src,镜像可自动识别该 ID |
VERSION | 待检出和测试的标签/提交/分支,默认值为 master |
CHECKOUT_SRC | 自定义 Git 克隆源(如 [***]),默认值为 [***]{ARTIFACT_ID}-plugin.git |
JAVA_OPTS | 传递给 PCT CLI 的 Java 选项 |
DEBUG | 布尔标志,启用远程调试模式(端口 5000) |
M2_SETTINGS_FILE | 自定义 Maven 配置文件路径(需配合卷挂载使用) |
INSTALL_BUNDLED_SNAPSHOTS | 是否将 JAR 和插件快照安装到本地仓库,默认值为 true |
SKIP_LOCAL_SNAPSHOT_INSTALLATION | 若存在,将不安装 WAR 快照(核心和插件);若不存在,将安装 WAR 快照 |
DO_NOT_OVERRIDE_PCT_CHECKOUT | 让 PCT CLI 而非 run-pct 脚本检出插件版本,确保测试所有插件 |
JDK_VERSION | Docker 运行时指定 Java 版本(支持 17 或 11) |
| 卷路径 | 描述 |
|---|---|
/pct/plugin-src | 插件源码目录,若未指定将自动检出源码 |
/pct/jenkins.war | 用于测试的 Jenkins WAR 文件 |
/pct/m2-settings.xml | 自定义 Maven 配置文件(可选)。若指定 M2_SETTINGS_FILE,则优先使用该变量指定的路径 |
/pct/out | PCT 输出目录,所有报告将存储于此 |
/pct/tmp | 临时目录,可挂载用于分析运行失败 |
/root/.m2 | Maven 仓库目录,可用于传递 settings.xml 或缓存 artifacts |
注意:若未提供 WAR 文件,PCT 镜像的入口脚本会在调用 PCT 前尝试检出插件源码。对于依赖
PreCheckoutHooks的插件(如多模块项目),标准 docker run 会因入口脚本未运行PreCheckoutHooks而失败。此时可通过以下方式解决:使用 WAR 文件、挂载插件源码、覆盖入口点手动运行 PCT 或手动运行 PCT。
如需调试 Docker 环境中的 PCT 实例,使用 -e DEBUG=true -p 5005:5005 标志,然后通过 IDE 的远程调试器连接容器:
shelldocker run --rm -v maven-repo:/root/.m2 -v $(pwd)/out:/pct/out -e ARTIFACT_ID=job-restrictions -e DEBUG=true -p 5005:5005 -i jenkins/pct
PCT 本身支持 Windows,但开发 Makefile 可能需要特殊配置。需安装 Make 和 Maven(如通过 Chocolatey 包管理器)并正确设置环境变量:
batchset JAVA_HOME=... make demo PLUGIN_NAME=artifact-manager-s3 WAR_PATH=test-wars/mywar.war MVN_EXECUTABLE="C:\ProgramData\chocolatey\bin\mvn.exe"
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429