跳到主要内容

Jenkins 配置管理

Jenkins 的配置散落在插件、全局工具、系统设置和 Job 中。用代码管理这些配置,才能保证环境可复现、可迁移。

本篇目标:会安装与升级插件、配置 JDK/Maven/Node 等全局工具、调整系统级参数,并接入国内镜像源。


1. 插件管理​

1.1 插件生命周期​

操作路径说明
安装插件Manage Jenkins → Plugins → Available搜索后勾选安装,可勾选"安装后重启"
更新插件Manage Jenkins → Plugins → Updates有可用更新时提示,谨慎批量更新
卸载插件Manage Jenkins → Plugins → Installed卸载后建议重启清理
更新插件的风险

一次全量更新可能破坏现有 Job 或引入不兼容。推荐策略:先备份 $JENKINS_HOME,在测试实例验证,再逐步更新(每周一次,重启观察日志)。

1.2 国内镜像源​

插件更新中心在国内访问慢是常见问题。将 Update Center 指向清华镜像:

Manage Jenkins → Plugins → Advanced settings
Update Site URL: https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

也可以用 plugins.txt 声明插件列表(Docker 镜像自定义构建时用):

# plugins.txt 示例
pipeline
kubernetes
docker-workflow
gitlab
credentials-binding
timestamper
blueocean

2. 全局工具(Global Tools)​

JDK、Maven、Node 等工具在 Manage Jenkins → Tools 中配置,供流水线通过工具名引用。

2.1 配置方式对比​

方式适用特点
自动安装(官网下载)简单、工具版本固定每次 Agent 首次使用时下载,慢且依赖外网
解压目录 / 本机路径已有安装包路径需 Agent 上也存在
自定义安装(shell 脚本)内网环境灵活,可走内部源
// 流水线中通过工具名引用
pipeline {
agent any
tools {
maven 'Maven-3.9'
jdk 'JDK-17'
}
stages {
stage('Build') {
steps {
sh 'mvn -version && java -version'
}
}
}
}
工具名 vs 版本

给工具起稳定的逻辑名(如 JDK-17),不要在流水线里写死路径。换版本时只改 Tools 配置,流水线不用动。

2.2 内网环境的工具安装​

生产环境往往无法访问官网下载工具。自定义安装 + 内部源:

// 自定义安装:从内网镜像下载并解压
sh '''
cd $WORKSPACE
curl -sO http://mirror.internal/tools/maven-3.9.tar.gz
tar xzf maven-3.9.tar.gz
'''

3. 系统配置要点(Manage Jenkins → System)​

配置项建议值 / 说明
Jenkins URL设置成用户真实访问地址(含 HTTPS)
Executors 数量(内置节点)设为 0,构建全走 Agent
全局属性集中定义环境变量,如 IMAGE_REGISTRY、ENV
时区Asia/Shanghai,否则构建日志时间错乱
日志保留控制台输出与构建记录保留策略,防磁盘暴涨
并发构建无资源限制时可勾选"并发生成(并发执行)"按需

4. 用代码管理配置​

生产环境应尽量减少手工在 UI 的配置。几种代码化手段:

手段作用适用
Jenkins as Code(JCasC)用 YAML 声明系统配置、安全、Agent平台级配置基线
plugins.txt声明插件清单Docker 镜像构建
Groovy Init 脚本启动时执行配置脚本复杂初始化
共享库(第 8 篇)复用流水线逻辑应用层流水线

4.1 JCasC 示例​

# jenkins.yaml(需要 configuration-as-code 插件)
jenkins:
systemMessage: "Managed by Jenkins as Code"
numExecutors: 0 # 内置节点不跑构建
globalNodeProperties:
- envVars:
env:
- key: "IMAGE_REGISTRY"
value: "registry.company.com"
views:
- global: {}
security:
globalMatrixAuthorizationStrategy:
permissions:
- "Overall/Administer:admin"
- "Overall/Read:viewer"
- "Job/Read:viewer"
tool:
jdk:
installations:
- name: "JDK-17"
home: "/usr/lib/jvm/java-17"
maven:
installations:
- name: "Maven-3.9"
home: "/opt/maven/apache-maven-3.9"
# 启动时挂载,Jenkins 加载该配置
docker run -v /path/jenkins.yaml:/var/jenkins_home/casc_configs/jenkins.yaml ...
JCasC 是基线,不是全部

JCasC 适合"系统配置"这种静态基线;Job 本身建议用流水线定义在代码仓库里(Pipeline as Code),两者职责不同,不要混。


5. 练习与验收​

练习 A

  1. 配置国内插件镜像源,安装 Blue Ocean 插件
  2. 在 Tools 中配置 JDK/Maven,用 tools {} 在流水线中引用
  3. 在 System 中设置时区和 IMAGE_REGISTRY 全局变量,在流水线中 echo env.IMAGE_REGISTRY

练习 B

  1. 编写一份 JCasC YAML,包含"内置节点 0 执行器"和两个环境变量,重启验证生效
  2. 用 plugins.txt 构建一个自定义 Jenkins 镜像(可选)

验收清单

  • 会安装、更新、卸载插件,知道更新前先备份验证
  • 能配置国内镜像源解决插件下载慢
  • 会在 Tools 中配置工具并通过逻辑名在流水线引用
  • 了解 JCasC、plugins.txt 等配置代码化手段
  • 会调整系统级参数(URL、时区、日志保留)

下一篇:用户与权限管理。