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 项目管理

创建新项目

创建步骤: 1. 点击”新建任务” 2. 输入项目名称 3. 选择项目类型 4. 点击”确定”

项目命名规范:

推荐格式:
- 应用名-环境-类型: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 any
    
    parameters {
        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 400
            graphHeight 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界面的使用和基本操作:

界面掌握: 1. 导航系统:熟练使用搜索和导航功能 2. 项目管理:创建、配置和组织项目 3. 构建操作:执行、监控和控制构建 4. 结果分析:查看历史和分析结果 5. 视图管理:自定义界面和仪表板

操作技能: 1. 高效导航:使用快捷键和URL技巧 2. 批量操作:脚本化管理任务 3. 个性化配置:用户设置和API管理 4. 系统监控:健康状态和性能监控

最佳实践: - 合理组织项目结构 - 定制个人工作视图 - 使用API提高效率 - 定期维护和清理 - 关注系统健康状态

下一章预告: 下一章将深入介绍构建任务管理,包括不同类型任务的创建、配置和优化策略。

4.11 练习与思考

实践练习

  1. 界面熟悉

    • 创建个人仪表板视图
    • 配置个人偏好设置
    • 练习快捷键操作
  2. 项目管理

    • 创建不同类型的项目
    • 设置项目模板
    • 配置项目权限
  3. 构建操作

    • 执行参数化构建
    • 监控构建进度
    • 分析构建结果
  4. 高级操作

    • 编写批量管理脚本
    • 配置API访问
    • 设置系统监控

思考题

  1. 如何设计一个既直观又高效的Jenkins界面布局?
  2. 在大型团队中,如何组织和管理众多Jenkins项目?
  3. 如何平衡界面的功能性和简洁性?
  4. 移动端访问Jenkins有哪些挑战和解决方案?
  5. 如何通过界面设计提高团队的CI/CD效率?