jenkins/pct Docker Image
插件兼容性测试器(Plugin Compat Tester),该Docker镜像已不再发布。
Plugin Compatibility Tester (PCT) 镜像文档
镜像概述和主要用途
Plugin Compatibility Tester (PCT) 是一个用于生成 Jenkins 插件与 Jenkins 核心版本兼容性矩阵的工具。注意:该镜像已不再发布,仅作历史参考用途。
核心功能和特性
- 生成 Jenkins 插件与 Jenkins 核心版本的兼容性矩阵
- 支持通过 Git 仓库拉取插件源码进行测试
- 支持指定自定义 Jenkins WAR 文件作为测试目标
- 支持本地插件源码挂载测试
- 提供调试模式和自定义 Maven 配置支持
使用场景和适用范围
适用于 Jenkins 插件开发者,在插件开发过程中测试插件与不同版本 Jenkins 核心的兼容性,验证插件在特定 Jenkins 版本下的功能正确性。
详细使用方法和配置说明
Docker 运行方式
基本示例
测试指定插件与最新 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 docker.xuanyuan.run/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 docker.xuanyuan.run/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 docker.xuanyuan.run/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 docker.xuanyuan.run/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 docker.xuanyuan.run/jenkins/pct
手动运行方式
PCT 提供 CLI 接口支持本地手动运行:
- 下载 PCT 源码并执行
mvn clean install - 将插件源码下载至
PLUGIN_SRC目录 - 检出插件仓库中需要测试的标签/提交/分支
- 执行
mvn clean install -DskipTests初始化 artifacts - 运行 PCT CLI(根据系统调整路径):
shelljava -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 版本需为每个插件单独执行上述步骤。
自定义 Java 版本运行
本地运行
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。
配置说明
环境变量
| 环境变量 | 描述 |
|---|---|
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
如需调试 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 docker.xuanyuan.run/jenkins/pct
Windows 环境运行 PCT Makefile
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"
有用链接
- Devoxx '11 BOF 关于 PCT 的演示文稿:[***](部分内容已过时,如 GAE 功能在新版本中已移除)
镜像拉取方式
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
DockerHub 原生拉取命令
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务