第4章 用户界面与基本操作
4.1 Jenkins Web界面概览
主界面布局
顶部导航栏:
┌─────────────────────────────────────────────────────────────┐
│ Jenkins Logo │ 搜索框 │ 用户菜单 │ 管理Jenkins │ 帮助 │
└─────────────────────────────────────────────────────────────┘
左侧导航面板:
┌─────────────────┐
│ 新建任务 │
│ 用户 │
│ 构建历史 │
│ 管理Jenkins │
│ 我的视图 │
│ Lockable Resources │
│ New View │
└─────────────────┘
主内容区域:
┌─────────────────────────────────────────────────────────────┐
│ 欢迎信息 / 项目列表 / 构建队列 │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ 项目状态 │ │ 构建历史 │ │ 系统信息 │ │
│ │ │ │ │ │ │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────┘
主要功能区域
1. 项目列表视图
- 项目名称和状态
- 最后构建结果
- 构建历史趋势
- 快速操作按钮
2. 构建队列
- 等待执行的构建
- 正在执行的构建
- 构建进度显示
3. 构建执行器状态
- 节点使用情况
- 执行器负载
- 空闲/忙碌状态
4.2 导航和搜索
全局搜索
搜索功能:
搜索类型:
- 项目名称搜索
- 构建编号搜索
- 用户搜索
- 节点搜索
- 插件搜索
搜索技巧:
# 精确匹配
"project-name"# 通配符搜索
project-*
*-test# 构建编号搜索
#123
project-name #123# 用户搜索
user:john.doe# 节点搜索
node:linux-agent
快捷键:
/ 或 Ctrl+K # 快速搜索
Ctrl+Enter # 在新标签页打开
Esc # 关闭搜索
面包屑导航
导航路径示例:
Jenkins > 项目名称 > 构建 #123 > 控制台输出
Jenkins > 管理Jenkins > 系统配置
Jenkins > 用户 > john.doe > 配置
快速导航:
// URL模式
http://jenkins-server:8080/job/project-name/
http://jenkins-server:8080/job/project-name/123/
http://jenkins-server:8080/job/project-name/123/console
http://jenkins-server:8080/manage/
4.3 项目管理
创建新项目
创建步骤:
- 点击"新建任务"
- 输入项目名称
- 选择项目类型
- 点击"确定"
项目命名规范:
推荐格式:
- 应用名-环境-类型:myapp-prod-deploy
- 团队-应用-功能:frontend-webapp-build
- 服务-版本-操作:userservice-v2-test避免使用:
- 特殊字符:!@#$%^&*()
- 空格:使用连字符或下划线
- 中文字符:使用英文
项目类型选择:
自由风格项目:
✓ 简单构建任务
✓ 传统应用
✓ 快速原型Pipeline项目:
✓ 复杂工作流
✓ 代码化配置
✓ 现代应用多配置项目:
✓ 矩阵构建
✓ 跨平台测试
✓ 参数化构建文件夹:
✓ 项目组织
✓ 权限管理
✓ 批量操作
项目配置
基本配置选项:
1. 常规设置
项目名称:不可修改
描述:项目说明文档
丢弃旧的构建:保留策略
参数化构建:构建参数
禁用项目:暂停构建
并发构建:允许同时构建
2. 源码管理
// Git配置示例
scm {git {remote {url('https://github.com/company/myapp.git')credentials('github-credentials')}branch('*/main')extensions {cleanBeforeCheckout()cloneOptions {shallow(true)depth(1)}}}
}
3. 构建触发器
触发远程构建:API触发
GitHub hook trigger:Webhook触发
定时构建:Cron表达式
轮询SCM:定期检查代码
其他项目构建后触发:依赖构建
4. 构建环境
删除工作空间:清理环境
使用秘密文本或文件:凭据注入
添加时间戳:构建时间记录
Set Build Name:自定义构建名称
项目复制和模板
复制现有项目:
步骤:
1. 新建任务
2. 输入新项目名称
3. 选择"复制现有的任务"
4. 输入源项目名称
5. 点击"确定"
6. 修改必要的配置
项目模板最佳实践:
// 创建项目模板
pipeline {agent anyparameters {string(name: 'APP_NAME', description: 'Application name')string(name: 'GIT_REPO', description: 'Git repository URL')choice(name: 'ENVIRONMENT', choices: ['dev', 'test', 'prod'])}environment {APP_NAME = "${params.APP_NAME}"BUILD_VERSION = "${env.BUILD_NUMBER}"}stages {stage('Checkout') {steps {git url: "${params.GIT_REPO}", branch: 'main'}}stage('Build') {steps {echo "Building ${APP_NAME}..."// 构建步骤模板}}stage('Test') {steps {echo "Testing ${APP_NAME}..."// 测试步骤模板}}stage('Deploy') {steps {echo "Deploying ${APP_NAME} to ${params.ENVIRONMENT}..."// 部署步骤模板}}}post {always {cleanWs()}}
}
4.4 构建操作
手动构建
立即构建:
操作步骤:
1. 进入项目页面
2. 点击"立即构建"
3. 观察构建进度
4. 查看构建结果
参数化构建:
操作步骤:
1. 点击"Build with Parameters"
2. 填写构建参数
3. 点击"开始构建"
4. 监控构建过程
构建参数示例:
<!-- 参数化构建界面 -->
<form><label>分支名称:</label><input type="text" name="BRANCH_NAME" value="main"><label>部署环境:</label><select name="ENVIRONMENT"><option value="dev">开发环境</option><option value="test">测试环境</option><option value="prod">生产环境</option></select><label>跳过测试:</label><input type="checkbox" name="SKIP_TESTS"><button type="submit">开始构建</button>
</form>
构建监控
构建状态指示器:
🔵 蓝色球:构建成功
🔴 红色球:构建失败
🟡 黄色球:构建不稳定
⚫ 灰色球:构建中止
⚪ 白色球:未构建
🔄 动画球:正在构建
构建进度监控:
进度条显示:
- 当前阶段
- 完成百分比
- 预计剩余时间
- 执行节点信息
实时日志查看:
# 控制台输出示例
Started by user admin
Running as SYSTEM
Building in workspace /var/lib/jenkins/workspace/myapp-build
The recommended git tool is: NONE
[myapp-build] $ git rev-parse --resolve-git-dir /var/lib/jenkins/workspace/myapp-build/.git
[myapp-build] $ git config remote.origin.url https://github.com/company/myapp.git
[myapp-build] $ git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
[myapp-build] $ git rev-parse refs/remotes/origin/main^{commit}
[myapp-build] $ git rev-parse refs/remotes/origin/origin/main^{commit}
[myapp-build] $ git rev-parse origin/main^{commit}
[myapp-build] $ git rev-parse refs/remotes/origin/main^{commit}
Checking out Revision 1a2b3c4d5e6f7g8h9i0j (refs/remotes/origin/main)
[myapp-build] $ git config core.sparsecheckout
[myapp-build] $ git checkout -f 1a2b3c4d5e6f7g8h9i0j
Commit message: "Fix: Update dependencies"
[myapp-build] $ /usr/bin/mvn clean compile
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------< com.company:myapp >-------------------------
[INFO] Building MyApp 1.0.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
构建控制
停止构建:
操作方式:
1. 点击构建进度条旁的"X"按钮
2. 在构建页面点击"停止构建"
3. 使用CLI命令停止
CLI停止构建:
# 停止特定构建
java -jar jenkins-cli.jar -s http://jenkins-server:8080/ \stop-builds job-name 123# 停止所有构建
java -jar jenkins-cli.jar -s http://jenkins-server:8080/ \cancel-quiet-down
批量操作:
// 批量停止构建脚本
Jenkins.instance.getAllItems(Job.class).each { job ->job.getBuilds().each { build ->if (build.isBuilding()) {println "Stopping build: ${job.name} #${build.number}"build.doStop()}}
}
4.5 构建历史和结果
构建历史查看
构建历史界面:
┌─────────────────────────────────────────────────────────────┐
│ 构建历史 │
├─────────────────────────────────────────────────────────────┤
│ #123 🔵 2024-01-15 14:30:25 (2m 15s) [main] Fix bugs │
│ #122 🔴 2024-01-15 14:25:10 (1m 45s) [main] Add feature │
│ #121 🔵 2024-01-15 14:20:05 (2m 30s) [dev] Update deps │
│ #120 🟡 2024-01-15 14:15:00 (3m 10s) [main] Refactor │
└─────────────────────────────────────────────────────────────┘
构建信息详情:
构建编号:#123
状态:成功
开始时间:2024-01-15 14:30:25
持续时间:2分15秒
触发原因:由用户admin启动
Git提交:1a2b3c4d (Fix: Update dependencies)
执行节点:linux-agent-01
构建结果分析
测试结果报告:
<!-- 测试结果摘要 -->
<div class="test-results"><h3>测试结果</h3><table><tr><td>总测试数:</td><td>150</td></tr><tr><td>通过:</td><td style="color: green;">145</td></tr><tr><td>失败:</td><td style="color: red;">3</td></tr><tr><td>跳过:</td><td style="color: orange;">2</td></tr><tr><td>成功率:</td><td>96.7%</td></tr></table>
</div>
代码覆盖率报告:
<!-- 覆盖率报告 -->
<div class="coverage-report"><h3>代码覆盖率</h3><div class="coverage-bar"><div class="covered" style="width: 85%;">85%</div></div><table><tr><td>行覆盖率:</td><td>85.2%</td></tr><tr><td>分支覆盖率:</td><td>78.9%</td></tr><tr><td>方法覆盖率:</td><td>92.1%</td></tr><tr><td>类覆盖率:</td><td>95.5%</td></tr></table>
</div>
构建产物管理
产物归档:
归档文件列表:
├── target/
│ ├── myapp-1.0.0.jar (2.5 MB)
│ ├── myapp-1.0.0-sources.jar (1.2 MB)
│ └── myapp-1.0.0-javadoc.jar (3.1 MB)
├── docs/
│ ├── api-documentation.html
│ └── user-manual.pdf
└── reports/├── test-results.xml└── coverage-report.html
产物下载:
# 直接下载链接
http://jenkins-server:8080/job/myapp-build/123/artifact/target/myapp-1.0.0.jar# 批量下载
wget -r -np -nH --cut-dirs=4 \http://jenkins-server:8080/job/myapp-build/123/artifact/# 使用API下载
curl -O http://jenkins-server:8080/job/myapp-build/123/artifact/target/myapp-1.0.0.jar
4.6 视图管理
创建自定义视图
视图类型:
列表视图:
- 项目列表显示
- 可过滤和排序
- 支持正则表达式我的视图:
- 个人项目视图
- 只显示相关项目
- 个性化配置Build Pipeline视图:
- 流水线可视化
- 依赖关系展示
- 构建流程监控仪表板视图:
- 多维度信息展示
- 图表和统计
- 实时状态监控
创建列表视图:
步骤:
1. 点击"新建视图"
2. 输入视图名称
3. 选择"列表视图"
4. 配置过滤条件
5. 选择显示列
6. 保存配置
视图配置示例:
视图名称:Frontend Projects
描述:前端相关项目项目过滤:
- 使用正则表达式:frontend-.*
- 包含项目:frontend-webapp, frontend-mobile
- 排除项目:frontend-legacy显示列:
✓ 状态
✓ 天气
✓ 名称
✓ 最后成功
✓ 最后失败
✓ 最后持续时间
✓ 构建按钮
仪表板配置
仪表板插件:
Dashboard View Plugin:
- 项目状态概览
- 构建趋势图表
- 测试结果统计Build Monitor Plugin:
- 大屏幕显示
- 实时状态更新
- 团队可视化RadiatorView Plugin:
- 简洁的状态显示
- 颜色编码
- 快速识别问题
仪表板配置:
// 仪表板配置示例
dashboard {name "Team Dashboard"description "Development team overview"portlets {buildStatistics {displayName "Build Statistics"showOnlyFailedJobs false}testResultTrend {displayName "Test Trends"graphWidth 400graphHeight 200}buildQueue {displayName "Build Queue"showOnlyBlockedJobs false}}
}
4.7 用户管理
用户账户管理
用户信息查看:
用户详情页面:
- 用户名和全名
- 邮箱地址
- 最后登录时间
- 权限列表
- 个人配置
个人配置选项:
时区设置:
- 自动检测
- 手动选择时区
- 显示格式邮件通知:
- 构建失败通知
- 构建恢复通知
- 个人构建通知界面设置:
- 主题选择
- 语言设置
- 页面刷新间隔API Token:
- 生成新令牌
- 撤销现有令牌
- 令牌权限范围
API Token管理
生成API Token:
步骤:
1. 进入用户配置页面
2. 找到"API Token"部分
3. 点击"添加新Token"
4. 输入Token名称
5. 点击"生成"
6. 复制并保存Token
使用API Token:
# 使用Token进行API调用
curl -X POST \-H "Authorization: Bearer your-api-token" \http://jenkins-server:8080/job/myapp-build/build# 使用用户名和Token
curl -X POST \--user username:api-token \http://jenkins-server:8080/job/myapp-build/build# 在脚本中使用
JENKINS_USER="john.doe"
JENKINS_TOKEN="your-api-token"
JENKINS_URL="http://jenkins-server:8080"curl -X POST \--user "${JENKINS_USER}:${JENKINS_TOKEN}" \"${JENKINS_URL}/job/myapp-build/build"
4.8 系统管理
系统信息查看
系统信息页面:
访问路径:Manage Jenkins → System Information显示内容:
- Jenkins版本信息
- Java运行时环境
- 系统属性
- 环境变量
- 插件版本
- 节点信息
系统日志查看:
访问路径:Manage Jenkins → System Log日志级别:
- SEVERE:严重错误
- WARNING:警告信息
- INFO:一般信息
- CONFIG:配置信息
- FINE:详细信息
系统监控:
// 系统监控脚本
import jenkins.model.Jenkins
import hudson.node_monitors.*// 获取系统信息
def jenkins = Jenkins.instance
def computer = jenkins.getComputer("")// 内存使用情况
def memoryMonitor = new MemoryMonitor()
def memoryUsage = memoryMonitor.monitor(computer)
println "Memory Usage: ${memoryUsage}"// 磁盘空间
def diskMonitor = new DiskSpaceMonitor()
def diskSpace = diskMonitor.monitor(computer)
println "Disk Space: ${diskSpace}"// 响应时间
def responseMonitor = new ResponseTimeMonitor()
def responseTime = responseMonitor.monitor(computer)
println "Response Time: ${responseTime}ms"
插件管理
插件安装:
步骤:
1. 进入"Manage Jenkins" → "Manage Plugins"
2. 选择"Available"标签
3. 搜索所需插件
4. 勾选插件复选框
5. 点击"Install without restart"或"Download now and install after restart"
插件更新:
步骤:
1. 进入"Manage Jenkins" → "Manage Plugins"
2. 选择"Updates"标签
3. 查看可更新插件列表
4. 选择要更新的插件
5. 点击"Download now and install after restart"
插件管理最佳实践:
安全原则:
✓ 只安装必需的插件
✓ 定期更新插件
✓ 关注安全公告
✓ 测试插件兼容性性能考虑:
✓ 避免安装过多插件
✓ 监控插件性能影响
✓ 及时清理无用插件
✓ 使用轻量级替代方案
4.9 快捷操作和技巧
键盘快捷键
全局快捷键:
/ # 快速搜索
Ctrl+K # 快速搜索(替代)
g + h # 回到首页
g + m # 管理Jenkins
g + p # 用户配置
g + b # 构建历史
g + c # 控制台输出
页面快捷键:
项目页面:
Enter # 立即构建
Ctrl+Enter # 在新标签页构建构建页面:
R # 重新构建
S # 停止构建
C # 查看控制台
URL技巧
直接访问URL:
# 项目页面
/job/project-name/# 构建页面
/job/project-name/123/# 控制台输出
/job/project-name/123/console# 配置页面
/job/project-name/configure# API端点
/job/project-name/api/json
/job/project-name/123/api/json
API快速操作:
# 触发构建
curl -X POST http://jenkins-server:8080/job/project-name/build# 获取项目信息
curl http://jenkins-server:8080/job/project-name/api/json# 获取构建状态
curl http://jenkins-server:8080/job/project-name/123/api/json# 获取控制台输出
curl http://jenkins-server:8080/job/project-name/123/consoleText
批量操作
批量项目操作脚本:
// 批量启用/禁用项目
Jenkins.instance.getAllItems(Job.class).each { job ->if (job.name.startsWith("legacy-")) {job.disable()println "Disabled: ${job.name}"}
}// 批量删除旧构建
Jenkins.instance.getAllItems(Job.class).each { job ->def builds = job.getBuilds()builds.each { build ->if (build.getTimeInMillis() < System.currentTimeMillis() - 30*24*60*60*1000) {build.delete()println "Deleted build: ${job.name} #${build.number}"}}
}
4.10 本章小结
本章详细介绍了Jenkins Web界面的使用和基本操作:
界面掌握:
- 导航系统:熟练使用搜索和导航功能
- 项目管理:创建、配置和组织项目
- 构建操作:执行、监控和控制构建
- 结果分析:查看历史和分析结果
- 视图管理:自定义界面和仪表板
操作技能:
- 高效导航:使用快捷键和URL技巧
- 批量操作:脚本化管理任务
- 个性化配置:用户设置和API管理
- 系统监控:健康状态和性能监控
最佳实践:
- 合理组织项目结构
- 定制个人工作视图
- 使用API提高效率
- 定期维护和清理
- 关注系统健康状态
下一章预告:
下一章将深入介绍构建任务管理,包括不同类型任务的创建、配置和优化策略。
4.11 练习与思考
实践练习
-
界面熟悉
- 创建个人仪表板视图
- 配置个人偏好设置
- 练习快捷键操作
-
项目管理
- 创建不同类型的项目
- 设置项目模板
- 配置项目权限
-
构建操作
- 执行参数化构建
- 监控构建进度
- 分析构建结果
-
高级操作
- 编写批量管理脚本
- 配置API访问
- 设置系统监控
思考题
- 如何设计一个既直观又高效的Jenkins界面布局?
- 在大型团队中,如何组织和管理众多Jenkins项目?
- 如何平衡界面的功能性和简洁性?
- 移动端访问Jenkins有哪些挑战和解决方案?
- 如何通过界面设计提高团队的CI/CD效率?