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=https://github.com/oleg-nenashev/job-restrictions-plugin.git -e VERSION=JENKINS-26374 jenkins/pct
批量测试 WAR 中的多个插件
若需测试 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
Docker 运行
通过 JDK_VERSION 环境变量指定 Java 版本(镜像内置 Java 17 和 11):
shellmake demo-docker JDK_VERSION=17 PLUGIN_NAME=git
完整选项可参考 https://github.com/jenkinsci/plugin-compat-tester/blob/master/Makefile%E3%80%82
| 环境变量 | 描述 |
|---|---|
ARTIFACT_ID | 待测试插件的 artifact ID。若定义 CHECKOUT_SRC 或挂载 /pct/plugin-src,镜像可自动识别该 ID |
VERSION | 待检出和测试的标签/提交/分支,默认值为 master |
CHECKOUT_SRC | 自定义 Git 克隆源(如 https://github.com/oleg-nenashev/job-restrictions-plugin.git),默认值为 https://github.com/jenkinsci/${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 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务