4. Jenkins 安装与初始配置:安装方式(WAR/Docker/K8s)、初始解锁、插件安装建议、全局工具配置(JDK/Git/Maven/Node.js)
Jenkins 作为 CI/CD 流水线的核心调度引擎,其安装方式与初始配置直接影响后续流水线的稳定性与扩展性。本章将系统讲解三种主流安装方式、首次解锁流程、插件选型策略以及全局工具链配置,帮助你在不同基础设施场景下快速搭建可用的 Jenkins 环境。
4.1 安装方式对比与选型
根据团队规模、基础设施成熟度与运维能力,Jenkins 安装可分为以下三种模式:
| 安装方式 | 适用场景 | 优势 | 劣势 |
|---|---|---|---|
| WAR 包部署 | 单机开发测试、小型团队 | 部署简单,依赖少,适合快速验证 | 扩展性差,高可用需额外配置 |
| Docker 容器 | 标准化交付、中大型团队 | 环境一致,启动快,易于迁移 | 持久化数据需挂载卷,网络配置稍复杂 |
| Kubernetes 部署 | 云原生、弹性伸缩、企业级 | 自动扩缩容,高可用,与 K8s 生态集成 | 运维门槛高,需熟悉 Helm/Operator |
选型建议: 若团队处于初期探索阶段,优先使用 Docker 方式;若已有 K8s 集群且需要动态 Agent,直接采用 K8s 部署;WAR 包方式仅推荐用于本地开发或无法使用容器化的遗留环境。
4.1.1 WAR 包安装(快速入门)
- 下载最新稳定版 WAR 包:
jenkins.war(官方镜像源或国内镜像) - 确保已安装 JDK 11 或 JDK 17
- 启动命令:
java -jar jenkins.war --httpPort=8080 - 访问
http://localhost:8080进入解锁页面
# 示例:使用 JDK 17 启动 Jenkins
java -jar jenkins.war --httpPort=8080 --prefix=/jenkins
4.1.2 Docker 容器安装(推荐)
# 拉取官方 LTS 镜像
docker pull jenkins/jenkins:lts-jdk17
# 运行容器(挂载数据卷)
docker run -d \
--name jenkins \
-p 8080:8080 \
-p 50000:50000 \
-v jenkins_home:/var/jenkins_home \
jenkins/jenkins:lts-jdk17
注意: 务必挂载
jenkins_home 卷,否则容器重启后所有配置与作业将丢失。生产环境建议使用命名卷或 NFS 持久化存储。
4.1.3 Kubernetes 部署(企业级)
使用 Helm Chart 是最推荐的 K8s 部署方式,可一键完成 Jenkins Master 与动态 Agent 的配置:
# 添加 Jenkins Helm 仓库
helm repo add jenkins https://charts.jenkins.io
helm repo update
# 安装 Jenkins(自定义 values.yaml)
helm install jenkins jenkins/jenkins \
--namespace jenkins \
--create-namespace \
-f values.yaml
以下为 K8s 部署 Jenkins 的核心架构示意:
4.2 初始解锁与插件安装
4.2.1 首次解锁流程
- 浏览器访问 Jenkins 地址,页面提示输入初始管理员密码
- 查看密码:
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword - 输入密码后进入“自定义 Jenkins”页面
- 选择“安装建议插件”或“选择插件来安装”
- 创建第一个管理员用户(建议使用强密码)
- 配置 Jenkins URL(默认使用当前访问地址)
关键路径: 解锁密码 → 插件安装 → 创建管理员 → 实例配置。此过程不可跳过,建议在安装插件时选择“建议插件”以快速获得基础能力。
4.2.2 插件安装建议(按优先级分组)
| 类别 | 插件名称 | 用途说明 |
|---|---|---|
| 核心必装 | Pipeline、Credentials Binding、Git | 流水线定义、凭据管理、代码拉取 |
| 代码仓库 | GitHub Integration、GitLab、Bitbucket | Webhook 触发、PR 构建、分支扫描 |
| 构建工具 | Maven Integration、NodeJS、Gradle | 自动安装对应工具版本,无需手动配置 |
| 容器与K8s | Docker Pipeline、Kubernetes | Docker 构建与推送、动态 Agent 管理 |
| 质量与通知 | JUnit、HTML Publisher、Email Extension、Slack | 测试报告、构建通知、结果归档 |
| 安全与权限 | Role-based Authorization Strategy、LDAP | 细粒度权限控制、企业用户集成 |
插件管理原则: 只安装必要的插件,避免冗余导致启动变慢或版本冲突。建议使用
plugins.txt 文件管理插件列表,便于版本化与重建。
4.3 全局工具配置
全局工具配置是 Jenkins 能够调用 JDK、Git、Maven、Node.js 等构建环境的前提。配置路径:Dashboard → Manage Jenkins → Tools。
4.3.1 JDK 配置
- 自动安装: 选择“Install automatically”,从 adoptium.net 或 oracle 下载
- 手动指定: 填写
JAVA_HOME路径(适用于已预装 JDK 的 Agent) - 建议: 配置 JDK 11 和 JDK 17 两个版本,分别用于不同项目
# 手动配置示例(Linux Agent)
Name: JDK17
JAVA_HOME: /usr/lib/jvm/java-17-openjdk-amd64
4.3.2 Git 配置
- 通常无需自动安装,直接使用系统 Git(路径:
/usr/bin/git) - 若 Agent 未预装 Git,可选择“Install from Apache”自动下载
- 验证命令:
git --version
4.3.3 Maven 配置
- 自动安装: 选择版本(如 3.9.6),Jenkins 自动下载并缓存
- 手动配置: 指定本地
MAVEN_HOME路径 - settings.xml: 可在“Managed files”中统一管理,避免每个项目重复配置
# 自动安装配置示例
Name: Maven-3.9
Install automatically: ✅
Version: 3.9.6
4.3.4 Node.js 配置
- 安装 NodeJS 插件后,在 Tools 中新增 NodeJS 安装
- 支持自动安装 LTS 版本(如 20.x)
- 可同时配置 npm 全局包(如 yarn、pnpm)
# NodeJS 配置示例
Name: NodeJS-20
Install automatically: ✅
Version: NodeJS 20.11.0
Global npm packages: yarn pnpm
4.4 全局工具配置架构图
以下图示展示了 Jenkins 全局工具配置与 Pipeline 执行时的调用关系:
4.5 配置验证与常见问题
4.5.1 验证工具配置是否生效
创建一个简单的 Pipeline 作业,使用以下脚本验证各工具是否可被正确调用:
pipeline {
agent any
tools {
jdk 'JDK17'
maven 'Maven-3.9'
nodejs 'NodeJS-20'
}
stages {
stage('Verify Tools') {
steps {
sh 'java -version'
sh 'git --version'
sh 'mvn --version'
sh 'node --version'
sh 'npm --version'
}
}
}
}
常见问题:
- 工具未找到: 检查 Agent 节点是否安装了对应工具,或自动安装是否成功
- 版本不匹配: 确保全局工具名称与 Pipeline 中
tool()引用的名称完全一致 - 权限不足: Jenkins 用户需对工具安装目录有读写权限
4.5.2 配置持久化与备份
全局工具配置存储在 JENKINS_HOME/config.xml 中,建议定期备份该文件。若使用 Docker 或 K8s 部署,确保 JENKINS_HOME 挂载到持久化存储,避免配置丢失。
最佳实践: 将全局工具配置纳入基础设施即代码(IaC)管理,使用 Jenkins Configuration as Code (JCasC) 插件以 YAML 文件定义所有工具配置,实现环境快速重建与版本控制。