听说软件开发最怕的就是“在我这儿是好的”,而Jenkins正是这个问题的终极杀手。
01 Jenkins的前世今生:从Hudson到自动化巨头
作为一名开发者,你是否经常遇到这样的场景:深更半夜被电话吵醒,线上环境又双叒叕挂了,而罪魁祸首竟是一句“在我本地明明是好的啊”!这就是Jenkins要解决的核心问题——它就像一个不知疲倦的质检员,每次代码提交后都会自动检查,确保一切正常。
Jenkins的主要开发者是川口耕介,它的“出生证明”上写着一个非常开放的语言:MIT许可证,这意味着你可以自由地使用、修改和分发它。
Jenkins最初的名字是Hudson,在2011年2月2日正式以“Jenkins”的身份亮相。名字变了,但核心目标没变:让开发者的生活更轻松。
想象一下,当你的团队有多个开发人员在同一个项目上工作时,每个人都在修改代码,这些修改可能会相互冲突,导致软件无法构建或运行。Jenkins的核心价值在于它支持“持续集成”和“持续交付”(简称CI/CD)。
用大白话说,它就是软件开发流水线上的自动化工长,监督从代码到成品的每一个环节。
02 初识Manage Jenkins:控制中心的全景地图
当你第一次登录Jenkins,面对密密麻麻的菜单选项,很容易感到迷茫。别担心,Manage Jenkins(管理Jenkins)就是整个Jenkins的控制中心,相当于你新手机的“设置”应用。
大多数标准管理任务都可以从Manage Jenkins部分执行。
为什么说Manage Jenkins如此重要?
因为它包含了系统配置、安全设置、插件管理、节点管理等核心功能,基本上,所有让Jenkins听话的开关都在这里。就像是一个智能家居的中控面板,你可以控制所有的连接设备。
找到入口很简单:登录Jenkins后,点击左侧菜单的"Manage Jenkins"即可进入。如果你有权限,还可以在URL后直接加上/manage快速访问。
界面的秘密:Manage Jenkins页面的顶部可能包含“监视器”,当有新版本的Jenkins软件或安全更新时,它会发出警报。每个监视器都包含它报告的问题的描述以及指向有关该问题的更多信息的链接。
而且,大多数Manage Jenkins页面都提供内联帮助。要访问帮助,选择每个字段右侧的?图标。再次点击?图标可隐藏帮助文本。
03 系统配置组:Jenkins的大脑与神经
系统配置组是Manage Jenkins中最关键的部分,它包含了配置资源的核心屏幕。想象一下,这就像是给Jenkins安装操作系统和必备软件。
System(系统配置)
系统配置页面允许你配置全局设置和路径,相当于Jenkins的大脑。
在这里你可以设置:
- 系统消息:在Jenkins主页上方显示的描述信息,比如维护通知。
- 执行者数量:控制Jenkins主节点同时能并行执行几个job的数量。
- 标签:给节点设置别名,方便任务分配。
设置标签的好处很实际:比如你有6台子节点可用,其中3台只能用于编译Java代码,另3台只能编译C#代码。
那么你可以给6台节点分别打上Java或者C#的标签,配置job执行时,Java代码就可以选择用标签为Java的执行,Jenkins会随机选择对应标签中任意一台空闲的机器。
Tools(工具配置)
这里可以配置工具、它们的位置和自动安装程序。对于需要特定构建工具的项目来说,这里非常重要。
你可以配置JDK、Git、Gradle、Ant、Maven、Docker的安装路径和版本。每个工具都可配置多个路径下的不同版本,而且在Windows和Linux下的安装路径肯定是不一致的。
在Jenkins的job中需要用到这些工具时,都可以下拉选择对应版本。
Plugins(插件管理)
Jenkins的强大得益于它庞大的插件生态系统。这些插件让Jenkins能够与各种开发工具无缝对接,如版本控制系统Git、构建工具Maven等。
在插件管理页面,你可以:
- 添加、更新、移除、禁用/启用插件
- 配置插件更新地址
- 在线或离线安装其他插件
插件选择秘诀:不是插件越多越好,只安装必需的插件可以减少维护负担和安全风险。定期检查并移除不再使用的插件。
Nodes and Clouds(节点与云)
这个页面用于添加、移除、控制和监视用于运行构建任务的agent节点。当你需要扩展Jenkins的处理能力时,可以在这里添加更多的构建节点。
Configuration as Code(配置即代码)
这是一个可选功能,只有当相应的插件安装在控制器上时,才会出现在这个组中。它允许你使用人类可读的YAML文件而不是UI来配置Jenkins控制器。
传统上,经验丰富的Jenkins管理员创建Apache Groovy init脚本来自动化控制器的配置。这种方法虽然有效,但需要深入了解Jenkins API和编写Groovy脚本的能力。
JCasC提供了在不使用UI的情况下配置控制器的便利性和灵活性。
04 安全组:Jenkins的安保系统
安全组包含用于为Jenkins控制器配置安全功能的屏幕。这就像是给Jenkins配备的安保系统,确保只有授权人员才能访问特定资源。
Security(安全配置)
设置保护Jenkins控制器的配置参数。在这里你可以配置:
- 认证方式:决定用户如何登录(LDAP/AD、Jenkins用户数据库等)
- 授权策略:控制用户登录后能做什么
- 安全域:配置多个认证源
最佳实践:始终使用基于角色的权限控制,遵循最小权限原则,只授予用户完成工作所必需的权限。
Manage Credentials(管理凭据)
配置与Jenkins交互的第三方站点和应用程序的凭据。凭据管理是Jenkins安全的关键环节,它允许你安全地存储密码、API密钥、SSH密钥等敏感信息。
凭据类型包括:
- 用户名和密码
- SSH用户名与私钥
- 机密文件
- 机密文本
Credential Providers(凭据提供者)
配置凭据提供者和类型。这允许你扩展Jenkins的凭据存储能力,例如使用外部凭据管理系统。
Users(用户管理)
管理Jenkins用户数据库中定义的用户。如果你使用不同的安全域(如LDAP或AD),则不会使用此功能。
05 状态信息与故障排除:Jenkins的体检中心
状态信息组提供关于Jenkins环境的实时数据和历史记录,而故障排除组则提供了处理异常情况的工具。
System Information(系统信息)
显示关于Jenkins环境的信息。这里可以看到Java版本、操作系统信息、插件版本等,相当于Jenkins的体检报告。
System Log(系统日志)
包含所有与Jenkins相关的java.util.logging输出的Jenkins日志。当Jenkins出现异常时,这里应该是你第一个查看的地方。
Load Statistics(负载统计)
显示Jenkins控制器上的资源利用情况信息。通过这个页面,你可以了解Jenkins的负载情况,决定是否需要增加构建节点。
About Jenkins(关于Jenkins)
提供Jenkins控制器的版本和许可证信息。在排查问题时,版本信息至关重要,特别是当某些功能与特定版本相关时。
Manage Old Data(管理旧数据)
当插件被移除后,相关的配置信息可能仍然存在。这个功能可以移除与从控制器移除的插件相关的配置信息。
06 工具与操作:Jenkins的实用工具箱
工具与操作组包含常见管理任务的屏幕和管理工具,使您能够在不使用UI的情况下执行管理任务。
Reload Configuration from Disk(从磁盘重新加载配置)
丢弃内存中加载的所有数据,并从文件系统重新加载所有内容。当你直接修改磁盘上的配置文件时,这非常有用。
Jenkins CLI
如何从shell或脚本使用Jenkins CLI。对于自动化管理任务,命令行界面非常有用,特别是在结合其他脚本时。
Script Console(脚本控制台)
执行Apache Groovy脚本进行管理、故障排除和诊断。这是一个强大的工具,可以执行几乎任何管理操作,但也要小心使用,因为错误的脚本可能导致严重问题。
Prepare for Shutdown(准备关闭)
防止新的构建启动,以便系统可以安全关闭。这会显示一个带有自定义消息的红色横幅,以便用户知道将要发生什么。
重要提示:这不会要求Jenkins停止;此操作只是防止新的构建启动。如果你需要停止或重新启动Jenkins,应该使用命令行或/restart和/safeRestart端点。
还有一个名为Safe Restart的插件,将在UI中添加一个"安全重启"链接。
07 实战演示:从零配置一个Jenkins项目
理论说了这么多,现在让我们动手实践,配置一个完整的Jenkins项目。
7.1 创建Freestyle项目
首先,我们创建一个Freestyle项目作为入门:
- 打开Jenkins首页 → 点击左侧"新建任务"
- 输入项目名称(如
my-first-freestyle,建议用英文+用途命名) - 选择"Freestyle project" → 点击"确定"
小提示:名称尽量简洁,避免中文空格,方便后续管理。
7.2 配置基础信息
在项目配置页的"常规"模块:
- 描述:填写项目说明(如"前端H5活动页自动打包,用于测试环境部署"),方便后续维护
- 丢弃旧的构建:勾选"限制构建的保留天数"(建议7天)和"限制构建的最大个数"(建议20个),避免磁盘被日志占满
- 参数化构建过程(可选):若需动态传参(如指定分支名),勾选"此项目参数化" → 添加"字符串参数"(名称
BRANCH,默认值main)
7.3 配置源码管理
在"源码管理"模块,选择你的代码托管工具(以Git为例):
- Repository URL:填写Git仓库地址
- Credentials(凭证):若仓库私有,必须添加凭证 → 点击"添加→Jenkins" → 选择凭证类型:
-
- 选"Username with password":填Git账号+密码(或GitHub的Personal Access Token,需勾选
repo权限) - 选"SSH Username with private key":填SSH用户名(如
git),并粘贴服务器私钥
- 选"Username with password":填Git账号+密码(或GitHub的Personal Access Token,需勾选
- Branches to build:填写要构建的分支名(默认
main,若用了参数化,可填${BRANCH}动态获取)
7.4 设置构建触发器
在"构建触发器"模块,根据需求选择触发方式:
轮询SCM
- 填写"Schedule"(Cron表达式),格式:
分 时 日 月 周 - 示例:
H/5 * * * *表示"每5分钟检查一次"(H是"哈希分散",避免所有任务同时执行) - 避坑:轮询会增加服务器压力,仅推荐测试环境使用
GitHub hook trigger
- 需安装"GitHub Integration"插件
- 在GitHub仓库 → "Settings → Webhooks" → 点击"Add webhook"
- Payload URL:
http://你的Jenkins公网IP:8080/github-webhook/(若Jenkins在局域网,需用Ngrok等工具暴露公网地址) - Content type:选
application/json - 触发条件:选"Just the push event"(仅推送代码时触发)
- 回到Jenkins项目配置页 → 勾选"GitHub hook trigger"
7.5 配置构建环境与步骤
在"构建环境"模块,根据项目需求勾选:
- 注入工具路径:若项目需Node.js(前端打包),需先在"系统管理 → 全局工具配置 → NodeJS"添加Node版本(如v18.18.0) → 勾选"Provide Node & npm bin/ folder to PATH"
- 清理工作区:勾选"Delete workspace before build starts",构建前自动删除旧文件(特别适合前端项目,避免
node_modules版本冲突)
在"构建"模块 → 点击"添加构建步骤",根据项目类型选择:
前端项目(Vue/React,用Node.js)
选择"执行Shell",输入:
# 切换npm源(避免超时)
npm config set registry https://registry.npmmirror.com
# 安装依赖(--force解决版本冲突)
npm install --force
# 打包(生产环境)
npm run build -- --mode production
# 可选:压缩打包结果(方便后续部署)
tar -czf dist.tar.gz -C dist .
后端Java项目(Maven)
选择"执行Shell",输入:
# 清理并编译(跳过测试)
mvn clean package -Dmaven.test.skip=true
# 复制jar包到部署目录
cp target/demo-0.0.1-SNAPSHOT.jar /data/deploy/
7.6 添加构建后操作
在"构建后操作"模块,可添加:
- 归档制品(保存打包结果):勾选"Archive the artifacts" → 填写"Files to archive"(如
dist.tar.gz或target/*.jar) → 勾选"Allow empty archive"(允许无制品时不报错) - 发送通知(失败提醒可选):安装"Email Extension"插件 → 勾选"Editable Email Notification" → 配置SMTP服务器 → 填写收件人邮箱 → 设置"Trigger"为"Failure"(仅失败时通知)
08 Pipeline进阶:使用Jenkinsfile定义流水线
对于更复杂的项目,建议使用Pipeline和Jenkinsfile。创建Jenkinsfile并将其检入源代码控制,提供了许多直接的好处:
- 代码审查/迭代Pipeline
- Pipeline的审计跟踪
- Pipeline的唯一真实来源,可以由项目的多个成员查看和编辑
8.1 创建Jenkinsfile
使用文本编辑器(最好支持Groovy语法高亮),在项目的根目录中创建一个新的Jenkinsfile。
Declarative Pipeline示例:
pipeline {
agent any
environment {
host = 'jiangxl.com'
}
stages {
stage('获取代码') {
steps {
echo 'Building..'
}
}
stage('代码质量检测') {
steps {
echo 'Testing..'
}
}
stage('编译代码') {
steps {
echo 'Deploying....'
}
}
stage('部署项目') {
steps {
echo 'Deploying....'
}
}
}
}
Scripted Pipeline示例:
node {
stage('获取代码') {
echo 'Building....'
}
stage('代码质量检测') {
echo 'Testing....'
}
stage('编译代码') {
echo 'Deploying....'
}
stage('部署项目') {
echo 'Deploying....'
}
}
8.2 Pipeline关键概念
- agent:指定Pipeline在哪里运行,
any表示在任何可用代理上运行 - environment:定义全局的环境变量
- stages:整个项目的阶段集合
- stage:项目中的单个任务
- steps:具体执行的动作
8.3 在Jenkins中配置Pipeline
有几种方式可以使用Jenkinsfile:
- 直接写入:在Pipeline项目的配置中,直接将脚本写入"Pipeline脚本"区域
- 从SCM加载:选择"Pipeline script from SCM",然后配置代码仓库和Jenkinsfile路径
最佳实践:建议使用从SCM加载的方式,这样可以实现配置即代码,并且版本变更与代码变更保持一致。
09 最佳实践与避坑指南
根据多年实践,我们总结了一些Jenkins管理的最佳实践:
9.1 自动化任务定义
Jenkins能够基于在软件配置管理系统中识别的存储库自动创建、更新和删除任务。利用此功能并通过以最大化Jenkins自动任务管理功能好处的方式构建任务定义来优化任务管理。
有以下几种替代方案:
- 使用组织文件夹:自动创建和删除多分支Pipeline文件夹和Pipeline任务(首选)
- 使用多分支Pipeline:自动创建、更新和删除Pipeline任务
- 使用Pipeline:为更多控制任务管理过程手动定义Pipeline任务
9.2 在代理上执行构建
使用代理执行构建,而不是在控制器上运行构建。使用代理提供了更高的安全性和可扩展性。
9.3 显示故障给合适的人
配置失败和不稳定任务的通知,以确保合适的人员收到关于需要关注的任务的通知。
9.4 使用Configuration as Code
使用Configuration as Code (JCasC)插件,可以通过人类可读的YAML文件定义Jenkins配置。这种方法提供了几个好处:
- 配置可以像代码一样进行版本控制
- 轻松复制和恢复配置
- 简化大规模配置管理
JCasC示例:
jenkins:
systemMessage: "欢迎使用我们的Jenkins服务器!"
numExecutors: 2
authorizationStrategy:
loggedInUsersCanDoAnything:
allowAnonymousRead: false
tool:
git:
installations:
- home: "git"
name: "Default"
unclassified:
location:
url: http://our-jenkins.example.com/
adminAddress: admin@example.com
10 总结
通过本文的深度解析,相信你已经对Manage Jenkins界面有了全面的了解。从系统配置到安全管理,从状态监控到故障排除,Jenkins提供了一个完整的管理生态系统。
记住,熟练掌握Manage Jenkins只是第一步,真正的高手会在理解基础之上,结合自己项目的实际需求,制定出最适合的持续集成和持续交付流程。
Jenkins就像一位忠实的助手,只要你配置得当,它就会不知疲倦地为你工作,彻底解决"在我这儿是好的"这一经典难题。现在,就去配置你的Jenkins,让它成为你开发流程中的得力助手吧!

被折叠的 条评论
为什么被折叠?



