Skip to content

Jenkins 全局工具 JDK17(国内镜像 + Linux / Mac ARM 双平台)

仲灏2026-04-18约 1 分钟

场景

  • Adoptium 插件 / GitHub 在构建机上下 JDK 时出现 Connection reset 或超时。
  • 同一套流水线 tools { jdk 'jdk-17' },希望在 Linux amd64macOS 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 x64https://mirrors.huaweicloud.com/openjdk/17.0.2/openjdk-17.0.2_linux-x64_bin.tar.gzjdk-17.0.2linux && amd64
macOS Apple Siliconhttps://mirrors.huaweicloud.com/openjdk/17.0.2/openjdk-17.0.2_macos-aarch64_bin.tar.gzjdk-17.0.2.jdk/Contents/Homeosx && aarch64

说明:

  • 解压目录必须指向压缩包解压后 bin/java 所在目录;Mac 常见为 .jdk/Contents/Home。若与上表不符,在节点上执行 tar tzf <包名> | head -8 核对后改填。
  • Label 必须与 Manage Jenkins → Nodes 里该 Agent 的 Labels 一致;linux && amd64 表示节点需 同时 带有 linuxamd64 两个标签(在节点配置里用空格添加多个标签即可)。
  • 若全局工具页出现 「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

讨论区

欢迎留下想法与补充