Jenkins插件安装与JDK、Maven、Git全局配置实战
发布时间:2026/9/1 5:02:46 作者:尧图编辑部 阅读量:1,286

这次我们来看 Jenkins 安装完成后的第二件事插件安装以及 JDK、Maven、Git 的全局配置。标题里的 2不是 Jenkins 版本号而是这个系列的第二篇。上一篇把 Jenkins 本体跑起来了这一篇把“构建环境”补齐配好之后项目提交代码就能触发自动打包构建过程也不再依赖人工在本机执行mvn package。这篇不会只停留在“点几个按钮”的程度。我会把插件安装、插件中心镜像源切换、三个全局工具配置、Git 凭证配置、Pipeline 验证脚本、REST API 调用和常见报错排查串起来。按这份流程操作最直接的收益是新建一个任务就能用上 Maven 和 Git不再出现mvn: command not found、插件下载超时、Git 认证失败这类问题。整个过程以 Linux 服务器为示例Windows 部署思路也一致只是路径和命令有区别。先说结论Jenkins 的全局工具配置本质是把服务器上已有的 JDK、Maven、Git 告诉 Jenkins并把插件装齐。配置完成之后Jenkins 就是一个真正可用的构建调度中心后续无论是做单元测试、打包镜像还是发布到远程服务器都从这套基础配置开始。1. Jenkins 插件安装与全局配置核心能力速览能力项说明项目类型Jenkins CI/CD 工具链配置教程核心功能插件管理、JDK 全局配置、Maven 全局配置、Git 全局配置、Pipeline 构建验证支持平台Linux、Windows、macOS 均可本系列以 Linux 服务器为例启动方式systemd 服务、Docker 容器、java -jar jenkins.war是否支持 API支持Jenkins REST API 可查询任务、触发构建、获取控制台输出批量任务支持构建队列、多任务并发、Pipeline 脚本化批量构建硬件要求无 GPU 需求建议给 Jenkins 分配 2GB 以上可用内存磁盘空间建议预留 10GB 以上Maven 仓库和构建产物会持续占用空间常用插件Git、Pipeline、Maven Integration、Credentials Binding、Build Timeout 等适合场景自动化打包、持续集成、发布部署、测试环境更新这里的硬件要求是通用建议。如果你的项目依赖复杂编译过程会启动多个 Maven 进程内存占用会明显上升实际配置要根据项目规模调整。2. 适用场景与使用边界这套配置最适合下面几类人已经装好 Jenkins但新建任务时发现没有 Maven 项目类型或者构建脚本里找不到mvn。团队里每次发版都靠开发同学手动在本地打包希望把“拉代码 - 编译 - 打包”固定到 Jenkins 上。准备从 Freestyle 任务切换到 Pipeline需要先理解全局工具和凭证如何管理。刚接触持续集成的运维或测试同学想把 Jenkins 的插件、JDK、Maven、Git 之间的关系理清楚。不适合什么场景如果你的项目已经有完整的 DevOps 平台或者团队不打算维护自建 CI那这套方案可以暂时不引入。另外Jenkins 本质是一台能远程执行命令的机器。给了它 Git 凭证它就能代表你拉代码给了它服务器权限它就能执行部署脚本。这里必须注意安全边界使用最小权限原则jenkins 用户只给需要访问的目录和命令权限。仓库凭证尽量使用独立的 Deploy Token 或只读 SSH Key不要把个人管理员私钥放进构建机。构建脚本不要写死明文密码优先使用 Jenkins Credentials 绑定。如果构建过程涉及第三方软件包、插件或素材需要确认许可协议与合规要求尤其是商业使用场景。3. 环境准备与前置条件3.1 操作系统与 Java 环境Jenkins 本身是 Java 应用服务器上必须先有可用的 JDK。注意这里有两个层面Jenkins 服务运行需要 Java构建任务编译项目也需要 JDK。常见部署方式是在服务器上装一个 JDK 17既给 Jenkins 用也作为构建工具链的一部分。搜索材料里也出现了 jdk 17、找不到 jdk 等高频问题说明这一环容易出岔子。先用命令确认本机 Java 是否可用java -version readlink -f $(which java)第一条命令查看版本第二条命令定位真实安装路径。后面配置 Jenkins 全局 JDK 时需要填JAVA_HOME就是第二条命令输出的目录而不是bin/java所在路径。3.2 磁盘、端口与网络Jenkins 默认端口是 8080。如果服务器上已经跑着其他服务先确认端口是否被占用ss -lntp | grep 8080磁盘方面Maven 依赖下载到本地仓库后体积增长很快建议给 Jenkins 目录预留至少 10GB 空间。安装目录和JENKINS_HOME尽量放在独立分区方便后续备份和扩容。网络方面插件中心如果访问不稳定需要在 Jenkins 里配置国内镜像源这一步在下一节详细说明。3.3 准备好仓库凭证接下来配置 Git 时需要一个可访问代码仓库的账号或 SSH Key。建议提前在 GitLab/GitHub 上创建一个 Jenkins 专用账号或者生成一对新的 SSH Key。不要把个人账号密码直接填到 Jenkins 全局配置里方便后续做权限回收。# 生成 Jenkins 专用 SSH Key在 Jenkins 所在服务器执行 ssh-keygen -t ed25519 -C jenkinsexample.com -f ~/.ssh/jenkins_ci_key生成后把公钥~/.ssh/jenkins_ci_key.pub添加到 GitLab/GitHub 的 Deploy Keys 或目标账号的 SSH Keys 中这一步就是实现“git 免密拉取”的关键。4. Jenkins 插件安装界面安装、镜像源与离线部署4.1 通过系统管理界面安装进入 Jenkins 后点击左侧的“Manage Jenkins”再进入“Plugins”或“插件管理”。在“Available plugins”里搜索需要的插件勾选后点击安装。如果没有特别需求建议选择安装后自动重启或者等待插件安装完成后再继续操作。常见基础插件包括插件用途Git Plugin支持从 Git 仓库拉取代码Pipeline支持 Jenkinsfile 流水线语法Credentials Binding在构建中安全引用凭证Maven Integration提供 Maven 项目类型Build Timeout构建超时控制Timestamper控制台日志增加时间戳Publish Over SSH构建产物发布到远程服务器Localization: Chinese (Simplified)Jenkins 界面中文化插件的 shortName 在离线安装和 Script Console 批量安装时都要用到建议记住几个核心插件的关键字git、workflow-aggregator、maven-plugin、credentials-binding。4.2 更换插件中心镜像源插件安装最常遇到的问题就是下载慢、超时。国内访问默认插件中心不稳定时可以更换插件中心镜像源。操作路径Manage Jenkins - Plugins - Advanced settings找到 “Update Site”把默认地址换成国内镜像站地址。常见镜像源包括清华、华为云等公开镜像具体地址以镜像站当前说明为准。保存后建议点击 “Check now” 重新拉取插件列表。这里有一个容易混淆的点更换 Update Site 只解决 Jenkins 插件元数据和插件包下载问题不改变 Maven 依赖仓库地址。Maven 仓库镜像需要在settings.xml里单独配置后面会写到。4.3 离线安装 hpi 插件某些内网环境无法访问外网这时候只能离线安装。先在有网的机器上下载目标插件的.hpi或.jpi文件然后上传到 Jenkins 服务器的插件目录。# Debian/Ubuntu 常见路径是 /var/lib/jenkins/plugins # 上传插件文件后修改属主并重启 Jenkins sudo cp /tmp/插件名.hpi /var/lib/jenkins/plugins/ sudo chown jenkins:jenkins /var/lib/jenkins/plugins/插件名.hpi sudo systemctl restart jenkins也可以在界面中操作Manage Jenkins - Plugins - Advanced settings在 “Deploy Plugin” 区域上传.hpi文件。离线安装的缺点是插件依赖需要手动处理如果缺少某个依赖插件启动时会在日志里报错。4.4 使用 Script Console 批量安装插件如果已经能联网但不想在界面里一个个点可以使用 Script Console 批量安装// 路径Manage Jenkins - Script Console // 插件名使用 shortName需要联网从插件中心下载 def pluginShortNames [git, workflow-aggregator, maven-plugin, credentials-binding] pluginShortNames.each { name - if (!Jenkins.instance.pluginManager.plugins.any { it.shortName name }) { println Installing: ${name} Jenkins.instance.pluginManager.install(name, false) } }执行后等待 Jenkins 下载并加载插件。如果 Jenkins 实例存在多个节点插件安装后通常需要重启才能被所有 executor 正确识别。5. 全局工具配置JDK、Maven、Git5.1 先确认服务器本机工具可用在配置 Jenkins 之前先在服务器上确认三个工具都真实可用java -version mvn -v git --version如果mvn不在 PATH 里有两种处理方式要么把 Maven 目录加入系统 PATH要么在 Jenkins 全局工具配置里直接指定MAVEN_HOME。推荐后者因为 Jenkins 可以精确控制每个任务使用哪个版本的 Maven不受系统默认版本影响。5.2 配置 JDK 全局工具路径Manage Jenkins - Tools - JDK Installations - Add JDK。添加时有两种方式自动安装Jenkins 从官方源下载 JDK。网络不好时不推荐非常慢。本地安装填写服务器上已有的 JDK 路径比如/usr/lib/jvm/java-17-openjdk-amd64。建议选择本地安装名字可以填JDK17。注意Name 字段不是随便起的后面 Pipeline 脚本tools { jdk JDK17 }就会引用这个名字需要严格对应。5.3 配置 Maven 全局工具路径Manage Jenkins - Tools - Maven Installations - Add Maven。同样的思路如果有本地 Maven就填本地路径# 示例路径实际以服务器安装位置为准 MAVEN_HOME/opt/maven/apache-maven-3.9.xName 填Maven3。也可以在 PATH 里直接使用/usr/bin/mvn但为了多版本切换更推荐在全局工具里维护。Maven 工具配置好后Freestyle 项目里就能看到 Maven 构建步骤Pipeline 里也可以使用tools { maven Maven3 }。5.4 配置 Maven 镜像仓库与构建参数Maven 默认从中央仓库下载依赖国内构建经常卡在下载阶段。常见做法是修改 Maven 的settings.xml配置国内镜像仓库。这个文件在 Maven 安装目录的conf/settings.xml或者用户目录下的~/.m2/settings.xml。下面是一个简化示例settings mirrors mirror idaliyun/id nameAliyun Maven Mirror/name urlhttps://maven.aliyun.com/repository/public/url mirrorOfcentral/mirrorOf /mirror /mirrors /settings这里以常见国内镜像为例实际使用时根据你所在网络环境选择可达的镜像地址。配好之后Maven 依赖下载速度通常会有明显改善。构建内存也建议在全局配置里预留。在全局工具配置的 Maven 安装项里可以设置MAVEN_OPTSMAVEN_OPTS-Xms512m -Xmx1536m如果项目依赖复杂可以适当调大堆内存但要结合服务器总内存来控制。5.5 配置 Git 全局工具与免密路径Manage Jenkins - Tools - Git Installations - Add Git。填 Git 可执行文件路径Linux 下通常就是/usr/bin/git。配好后Jenkins 拉取 Git 仓库时就知道该调用哪个 git 命令。“git 免密”的核心不在 Jenkins 全局配置而在于凭证。把 Jenkins 所在服务器的公钥加入 GitLab/GitHub 的 Deploy Keys 后还需要告诉 Jenkins 使用哪个私钥。路径Manage Jenkins - Credentials - Global - Add Credentials。SSH Key 方式Kind 选择 “SSH Username with private key”Username 填 Git 平台的用户名Private key 选择 “Enter directly”把之前生成的私钥内容粘贴进去用户名密码方式Kind 选择 “Username with password”Username 和 Password 填 Git 平台账号密码两种方式都支持。推荐 SSH Key因为不需要保存明文密码也更容易做权限控制。保存后会生成一个 credentialsId后面构建脚本里要用这个 ID 引用凭证。5.6 配置构建凭证Pipeline 里使用凭证的方式如下git url: https://gitlab.example.com/group/project.git, branch: main, credentialsId: jenkins-ci-keyFreestyle 项目里在 Git 配置页面选择对应的 Credentials 即可。如果凭证过期只需要更新 Credentials所有引用该 credentialsId 的任务都会生效不需要逐个改任务配置。6. 功能测试用一个构建任务验证配置6.1 新建 Pipeline 任务配置完成后立刻验证是否真的可用。最简单的办法是新建一个 Pipeline 任务在脚本里同时调用 JDK、Maven 和 Git。路径New Item - 输入任务名 - 选择 “Pipeline” - OK。然后在 Pipeline 区域粘贴脚本pipeline { agent any tools { jdk JDK17 maven Maven3 } stages { stage(Checkout) { steps { git url: https://gitlab.example.com/group/demo.git, branch: main, credentialsId: jenkins-ci-key } } stage(Build) { steps { sh mvn clean package -DskipTests } } stage(Archive) { steps { archiveArtifacts artifacts: target/*.jar, fingerprint: true } } } }注意三点tools块里的JDK17和Maven3必须与全局工具配置里的 Name 完全一致。credentialsId必须与 Credentials 里保存的 ID 一致。Git 仓库地址要换成真实可访问的地址。6.2 查看控制台输出点击 “Build Now” 后进入构建记录打开 Console Output。整个流程可以分为三段来观察Checkout 阶段是否成功克隆代码。如果失败重点检查 credentialsId 和网络连通性。Build 阶段Maven 是否开始下载依赖是否编译通过。这里最容易卡在依赖下载上。Archive 阶段构建产物是否被 Jenkins 归档。6.3 判断标准构建成功的标志很简单页面左侧构建记录显示蓝色圆点。Console Output 末尾能看到Finished: SUCCESS。Archive 阶段后在任务页面能看到target/*.jar产物。如果脚本里把mvn写死而任务没有配置 tools 指令可能会看到mvn: command not found。这一点记得优先排查构建脚本里的命令是否真的存在于 Jenkins executor 的 PATH 中还是只存在于你手动登录的 shell 中。7. Jenkins API 与批量任务扩展全局配置完成后Jenkins 就可以作为自动化构建中心对外提供接口服务。Jenkins 原生 REST API 支持查询任务、触发构建、获取控制台输出方便接到内部平台或脚本里。7.1 查询任务信息JENKINS_URLhttp://127.0.0.1:8080 JENKINS_USERadmin JENKINS_TOKEN你的API_TOKEN curl -s -u ${JENKINS_USER}:${JENKINS_TOKEN} \ ${JENKINS_URL}/job/demo-build/api/json | jq .displayName, .lastBuild.resultAPI Token 在 Jenkins 页面右上角点击用户名 - Configure - API Token 中生成。注意 API Token 等同于密码不要把 Token 写入公共仓库或明文配置。7.2 远程触发构建新版 Jenkins 默认开启 CSRF 防护直接 POST 触发构建需要先获取 crumbJENKINS_URLhttp://127.0.0.1:8080 JENKINS_USERadmin JENKINS_TOKEN你的API_TOKEN JOB_NAMEdemo-build # 获取 CSRF crumb需要安装 jq CRUMB$(curl -s -u ${JENKINS_USER}:${JENKINS_TOKEN} \ ${JENKINS_URL}/crumbIssuer/api/json | jq -r .crumb) # 触发构建 curl -X POST \ -u ${JENKINS_USER}:${JENKINS_TOKEN} \ -H Jenkins-Crumb: ${CRUMB} \ ${JENKINS_URL}/job/${JOB_NAME}/build如果任务配置了“远程触发构建”的 Token也可以用build?token远程触发Token的方式触发这个方式可以不依赖 crumb但 Token 字段要合理保管。7.3 批量触发与排队机制Jenkins 自带构建队列。多个任务同时触发时会按照 executor 数量排队执行。批量触发最常见的做法是在外部脚本里循环调用 APIfor job in service-a service-b service-c; do echo Trigger ${job} curl -X POST \ -u ${JENKINS_USER}:${JENKINS_TOKEN} \ -H Jenkins-Crumb: ${CRUMB} \ ${JENKINS_URL}/job/${job}/build sleep 2 done批量触发时要注意控制频率。如果一下子触发几十个任务构建队列会瞬间积压Maven 依赖下载和代码拉取也会抢占服务器带宽。建议分批触发并且在任务里配置 Build Timeout。7.4 批量任务稳定性建议每个 Pipeline 任务增加超时控制避免某个依赖卡住后永久占用 executor。构建历史设置自动清理策略比如保留最近 20 次构建。日志保留策略单独设置防止控制台输出占满磁盘。批量任务之间不要写死全局唯一的资源比如固定端口、固定文件路径尽量用构建工作目录隔离。8. 资源占用与性能观察8.1 Jenkins 本体与构建进程如何占资源Jenkins 主进程空闲时内存占用并不高通常几百 MB 就能运行。真正吃资源的是构建过程。一个 Maven 构建会启动 Java 编译进程如果还涉及前端 npm 打包、Docker 镜像构建CPU 和内存会明显上升。并发构建不是越多越好。executor 数量设置为 CPU 核数的 1 到 2 倍然后根据项目实际耗时调整。如果是多模块 Java 项目建议并发构建数设为 2 或 3避免大量并发导致 Maven 进程互相争抢内存。8.2 常用观察命令在 Jenkins 所在服务器上可以用下面命令观察资源占用# 查看内存占用 free -h # 查看 Jenkins 主进程与 Maven 子进程 top -c -u jenkins # 查看 JENKINS_HOME 占用空间 du -sh /var/lib/jenkins du -sh ~/.m2/repository重点观察两个目录/var/lib/jenkins是 Jenkins 配置和构建记录~/.m2/repository是 Maven 本地仓库。构建记录和 Maven 依赖是磁盘增长的主要来源。8.3 降低资源占用的做法丢弃旧的构建记录在任务配置里设置 Discard Old Builds。Maven 依赖使用本地仓库缓存避免每次构建重复下载。减少 executor 数量控制并发峰值。将 Jenkins 服务和构建产物放在独立分区避免写满系统盘。如果是 Docker 部署给容器设置内存上限防止构建进程把宿主机内存耗尽。9. 常见问题与排查方法插件安装和全局配置阶段最容易踩坑下面列出高频问题问题现象可能原因排查方式解决方案插件中心加载慢或超时默认 Update Site 访问不稳定查看插件管理页面错误信息更换插件中心镜像源或离线安装 hpi安装插件后提示 Unable to find valid certification path当前 JDK 的 cacerts 不信任目标站点证书使用keytool -list检查证书链更新 JDK/CA给 JVM 导入可信证书避免使用不可信中间源全局工具里找不到 JDK 版本JAVA_HOME 路径填写错误执行readlink -f $(which java)使用真实 JDK 安装目录构建提示 mvn: command not found构建脚本依赖系统 PATH但 executor 环境缺少 Maven查看 Console Output 的 PATH 信息在 Pipeline/Freestyle 中使用 tools 指令或把 Maven 加入服务器 PATHGit clone 失败 Authentication failed凭证未配置或已过期查看控制台输出的 HTTP 状态码在 Credentials 中更新账号/SSH Key重新构建构建队列一直卡住executor 数量为 0 或任务等待锁查看 Build Executor Status确认节点在线增加 executor 数量插件安装后页面还是英文未安装中文语言包检查已安装插件列表安装 Localization: Chinese (Simplified) 插件8080 端口被占用其他服务已监听 8080ss -lntp查看监听进程修改 JENKINS_PORT 或 Docker 端口映射Maven 下载依赖极慢中央仓库网络链路不稳定查看 Maven 日志下载源地址配置国内镜像仓库 settings.xmlPipeline 中 tools 名称报错全局工具 Name 不一致对比 tools 块名称和全局工具配置统一名称比如 JDK17、Maven310. 最佳实践与使用建议全局工具配置好之后建议按下面方式维护 Jenkins优先在全局工具里声明工具版本由 Jenkins 统一管理构建环境不依赖个人机器的 PATH。凭证统一存放在 Credentials 中不要在 Jenkinsfile 或构建命令里写明文密码。每个任务加上构建历史清理策略和超时时间避免任务无限制占资源。Pipeline 脚本尽量写成 Jenkinsfile 入库管理而不是只写在任务配置里方便评审和追溯。定期备份JENKINS_HOME下的config.xml、jobs目录和 Credentials 配置防止实例损坏。更新插件前先在测试环境验证不要在正式环境直接升级大版本。构建机权限最小化jenkins 用户只给必要的目录写权限。涉及生产发布时建议在 Pipeline 中增加人工审批节点例如input步骤或外部审批系统。// Pipeline 中的人工审批示例 stage(Deploy Approval) { input message: 确认发布到生产环境, ok: 确认 }这样可以把自动化效率和安全控制同时保留日常构建全自动生产发布前增加一道确认。11. 总结与下一步整套流程验证下来最值得先做的一件事是把 JDK、Maven、Git 三个全局工具配好然后跑通一个最简单的 Pipeline。这个 Pipeline 能自动拉代码、编译、归档产物说明基础链路已经打通。之后再去扩展远程部署、邮件通知、多分支流水线都是在同一套基础上加阶段。最容易踩的坑集中在三处插件中心镜像源没换导致安装超时JDK 的 JAVA_HOME 路径填错Git 凭证没有配置导致 clone 失败。这三个问题排查清楚Jenkins 日常使用就会顺手很多。下一步可以尝试的方向把mvn clean package替换成 Docker 镜像构建通过 Publish Over SSH 把产物发布到测试服务器或者接入 SonarQube 做代码质量检查。Jenkins 本身的扩展能力很强但前提是基础配置足够稳固。建议把这篇的验证 Pipeline 保存为一个模板后续新任务都基于它起步。