场景
- Adoptium 插件 / GitHub 在构建机上下 JDK 时出现
Connection reset或超时。 - 同一套流水线
tools { jdk 'jdk-17' },希望在 Linux amd64 与 macOS ARM64 两类 Agent 上都能自动装对的 JDK。
结论:一个 JDK 名 + 两条「解压 *.tar.gz」+ 节点 Label
全局工具里 JDK 名称固定 jdk-17,勾选自动安装,添加 两条「解压 .zip/.tar.gz」安装器;Jenkins 按 当前节点是否匹配 Label 选用对应包。流水线 不用写 if/分支。
华为云 OpenJDK 17.0.2 直链(示例)
镜像目录索引:openjdk/17.0.2
| 平台 | 下载 URL | 解压目录(子目录) | Label |
|---|---|---|---|
| Ubuntu / Linux x64 | https://mirrors.huaweicloud.com/openjdk/17.0.2/openjdk-17.0.2_linux-x64_bin.tar.gz | jdk-17.0.2 | linux && amd64 |
| macOS Apple Silicon | https://mirrors.huaweicloud.com/openjdk/17.0.2/openjdk-17.0.2_macos-aarch64_bin.tar.gz | jdk-17.0.2.jdk/Contents/Home | osx && aarch64 |
说明:
- 解压目录必须指向压缩包解压后
bin/java所在目录;Mac 常见为.jdk/Contents/Home。若与上表不符,在节点上执行tar tzf <包名> | head -8核对后改填。 - Label 必须与 Manage Jenkins → Nodes 里该 Agent 的 Labels 一致;
linux && amd64表示节点需 同时 带有linux与amd64两个标签(在节点配置里用空格添加多个标签即可)。 - 若全局工具页出现 「No agent matches this label」 黄条:当前没有节点满足表达式,去节点上补标签,或暂时改成与现有一致的表达式(例如仅
built-in时仅限本机平台,多平台时仍建议显式打标签)。
不要用的 URL
adoptium.net/.../download?link=...感谢页:返回 HTML,不是tar.gz二进制,Jenkins 解压会失败。
版本与仓库同步
- 上表为 17.0.2,仍为 Java 17;若需更新补丁,可换镜像路径或改用国内 Adoptium
.tar.gz直链(勿用感谢页)。 - 与 zh-cloud-service 仓库流水线约定同步的说明见:
script/jenkins/README.md§2.3。
相关
- 从 Mac mini 迁到 amd64 Ubuntu 后
JENKINS_HOME/tools架构错乱 导致Exec format error:清理tools下对应目录并让 Jenkins 按当前平台重装;详见 zh-cloud-service 仓库内计划文档jenkins_mcp_与_tools_迁移_45055a48.plan.md。

讨论区
欢迎留下想法与补充