Jenkins入门教程(十七):Blue Ocean现代化界面

Blue Ocean是Jenkins的现代化用户界面,提供了更直观的Pipeline可视化体验。本文将详细介绍Blue Ocean的安装、使用和功能特点。

安装Blue Ocean

# 方式1:通过插件管理器安装
# 系统管理 > 插件管理 > 可用插件
# 搜索 "Blue Ocean" 并安装

# 安装的插件包括:
# - Blue Ocean
# - Blue Ocean Pipeline Editor
# - Blue Ocean Executor Info
# - Config API for Blue Ocean
# - Display URL for Blue Ocean
# - Events API for Blue Ocean
# - Git Pipeline for Blue Ocean
# - GitHub Pipeline for Blue Ocean
# - Pipeline implementation for Blue Ocean

# 方式2:通过命令行安装
java -jar jenkins-cli.jar -s http://localhost:8080/ \
    -auth admin:token \
    install-plugin blueocean

# 重启Jenkins
sudo systemctl restart jenkins

# 验证安装
# 访问 http://localhost:8080/blue/

访问Blue Ocean

# 访问方式

# 1. 从传统界面进入
# Jenkins首页左侧菜单 > Open Blue Ocean

# 2. 直接访问URL
http://jenkins.example.com/blue/

# 3. 访问特定Pipeline
http://jenkins.example.com/blue/organizations/jenkins/my-pipeline/activity

# 4. 访问特定构建
http://jenkins.example.com/blue/organizations/jenkins/my-pipeline/detail/main/42/pipeline

界面功能介绍

仪表盘

# Blue Ocean仪表盘显示所有Pipeline的概览

┌─────────────────────────────────────────────────────────────┐
│  Blue Ocean                                    🔍 Search    │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Pipelines                                    + New Pipeline │
│                                                             │
│  ┌─────────────────────────────────────────────────────────┐│
│  │ ⬤ frontend-app                              ✓ Success  ││
│  │   main                            #45  2 min ago        ││
│  └─────────────────────────────────────────────────────────┘│
│                                                             │
│  ┌─────────────────────────────────────────────────────────┐│
│  │ ⬤ backend-api                               ✗ Failed   ││
│  │   develop                         #123 5 min ago        ││
│  └─────────────────────────────────────────────────────────┘│
│                                                             │
│  ┌─────────────────────────────────────────────────────────┐│
│  │ ⬤ data-pipeline                             ⏳ Running  ││
│  │   main                            #67  running...       ││
│  └─────────────────────────────────────────────────────────┘│
│                                                             │
└─────────────────────────────────────────────────────────────┘

Pipeline可视化

# Pipeline执行过程可视化

┌─────────────────────────────────────────────────────────────┐
│  my-pipeline / main / #45                          ✓ Success │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ┌──────────┐   ┌──────────┐   ┌──────────┐   ┌──────────┐ │
│  │ Checkout │──>│  Build   │──>│   Test   │──>│  Deploy  │ │
│  │    ✓     │   │    ✓     │   │    ✓     │   │    ✓     │ │
│  │   5s     │   │   45s    │   │   2m     │   │   30s    │ │
│  └──────────┘   └──────────┘   └──────────┘   └──────────┘ │
│                                                             │
│  Total: 3m 20s                                              │
│                                                             │
└─────────────────────────────────────────────────────────────┘

# 并行阶段显示
                              ┌───────────────┐
                         ┌───>│  Unit Tests   │───┐
                         │    │      ✓        │   │
┌──────────┐   ┌────────┐│    └───────────────┘   │   ┌──────────┐
│ Checkout │──>│ Build  ││    ┌───────────────┐   │──>│  Deploy  │
│    ✓     │   │   ✓    │├───>│  Integration  │───┤   │    ✓     │
└──────────┘   └────────┘│    │      ✓        │   │   └──────────┘
                         │    └───────────────┘   │
                         │    ┌───────────────┐   │
                         └───>│    E2E        │───┘
                              │      ✓        │
                              └───────────────┘

查看日志

# 点击任意阶段可以查看该阶段的详细日志

┌─────────────────────────────────────────────────────────────┐
│  Build                                          Duration: 45s│
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ▼ Shell Script                                             │
│    + mvn clean package -DskipTests                          │
│    [INFO] Scanning for projects...                          │
│    [INFO] ---------------------------------------------------│
│    [INFO] Building my-app 1.0.0                              │
│    [INFO] ---------------------------------------------------│
│    [INFO] --- maven-clean-plugin:3.1.0:clean (default-clean)│
│    [INFO] --- maven-resources-plugin:3.2.0:resources        │
│    [INFO] --- maven-compiler-plugin:3.8.1:compile           │
│    [INFO] --- maven-jar-plugin:3.2.0:jar                    │
│    [INFO] Building jar: /workspace/target/my-app-1.0.0.jar  │
│    [INFO] ---------------------------------------------------│
│    [INFO] BUILD SUCCESS                                      │
│    [INFO] ---------------------------------------------------│
│    [INFO] Total time:  42.123 s                              │
│                                                             │
└─────────────────────────────────────────────────────────────┘

可视化Pipeline编辑器

# Blue Ocean提供可视化的Pipeline编辑器

# 1. 创建新Pipeline
# 点击 "New Pipeline" 按钮

# 2. 选择代码源
# - GitHub
# - Bitbucket
# - Git

# 3. 授权访问(以GitHub为例)
# - 创建Personal Access Token
# - 选择要构建的仓库

# 4. 使用可视化编辑器创建Pipeline
# - 添加阶段(Stage)
# - 在阶段中添加步骤(Step)
# - 配置并行阶段
# - 配置环境变量

# 5. 生成的Jenkinsfile会自动提交到仓库

# 编辑器生成的Jenkinsfile示例
pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'npm install'
                sh 'npm run build'
            }
        }
        stage('Test') {
            parallel {
                stage('Unit Test') {
                    steps {
                        sh 'npm run test:unit'
                    }
                }
                stage('E2E Test') {
                    steps {
                        sh 'npm run test:e2e'
                    }
                }
            }
        }
        stage('Deploy') {
            steps {
                sh './deploy.sh'
            }
        }
    }
}

分支和Pull Request

# Blue Ocean对多分支Pipeline有良好支持

# 分支视图
┌─────────────────────────────────────────────────────────────┐
│  my-pipeline                                                │
├───────────┬─────────────────────────────────────────────────┤
│ Branches  │ Pull Requests                                   │
├───────────┴─────────────────────────────────────────────────┤
│                                                             │
│  main                                         ✓ #45  2m ago │
│  develop                                      ✓ #123 5m ago │
│  feature/new-feature                          ✗ #12  1h ago │
│  release/v2.0.0                               ✓ #8   3h ago │
│  hotfix/bugfix-123                            ⏳ running     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

# Pull Request视图
┌─────────────────────────────────────────────────────────────┐
│  Pull Requests                                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  PR #42: Add new authentication                ✓ Passed     │
│  PR #41: Fix login bug                         ✓ Passed     │
│  PR #40: Update dependencies                   ✗ Failed     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

个人收藏夹

# 用户可以收藏常用的Pipeline

# 点击Pipeline旁边的星星图标 ☆ -> ★

# 收藏的Pipeline会显示在个人面板中
# 访问: http://jenkins.example.com/blue/organizations/jenkins/pipelines/favorites/

┌─────────────────────────────────────────────────────────────┐
│  Favorites                                                  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ★ frontend-app                               ✓ Success     │
│  ★ backend-api                                ✓ Success     │
│  ★ deployment-prod                            ✓ Success     │
│                                                             │
└─────────────────────────────────────────────────────────────┘

活动流

# Activity视图显示Pipeline的构建历史

# 访问: /blue/organizations/jenkins/my-pipeline/activity

┌─────────────────────────────────────────────────────────────┐
│  my-pipeline                               Activity | Branches│
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  #45  ✓  main    feat: add new feature      2 min ago  3m  │
│  #44  ✓  main    fix: resolve bug           1 hour ago 2m  │
│  #43  ✗  develop test: add more tests       2 hours ago 5m │
│  #42  ✓  main    docs: update readme        3 hours ago 1m │
│  #41  ✓  main    refactor: improve code     5 hours ago 4m │
│                                                             │
│  [Show more]                                                │
│                                                             │
└─────────────────────────────────────────────────────────────┘

测试结果展示

# Blue Ocean可以清晰展示测试结果

# Pipeline中配置测试报告
pipeline {
    agent any
    stages {
        stage('Test') {
            steps {
                sh 'mvn test'
            }
            post {
                always {
                    junit 'target/surefire-reports/*.xml'
                }
            }
        }
    }
}

# 测试结果视图
┌─────────────────────────────────────────────────────────────┐
│  Tests                                                      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Total: 42    Passed: 40    Failed: 1    Skipped: 1        │
│                                                             │
│  ✗ Failed Tests                                             │
│    └─ com.example.UserServiceTest                           │
│       └─ testUserCreation                                   │
│          Expected: 200                                      │
│          Actual: 500                                        │
│                                                             │
│  ○ Skipped Tests                                            │
│    └─ com.example.IntegrationTest                           │
│       └─ testExternalApi (skipped: requires network)        │
│                                                             │
└─────────────────────────────────────────────────────────────┘

与传统界面对比

# Blue Ocean vs 传统界面

功能                    Blue Ocean         传统界面
───────────────────────────────────────────────────────────
界面设计               现代化、简洁        传统、功能密集
Pipeline可视化         ✓ 图形化展示        ✓ Stage View插件
日志查看               ✓ 分阶段展示        ✓ 完整控制台
分支管理               ✓ 直观展示          ✓ 基础支持
PR支持                 ✓ 原生支持          需要插件
可视化编辑器           ✓ 内置              ✗ 无
测试结果               ✓ 美观展示          ✓ 基础展示

# 两者可以并存使用
# 日常查看: Blue Ocean
# 高级配置: 传统界面

# 在Blue Ocean中切换到传统界面
# 点击右上角齿轮图标 > Go to classic

API访问

# Blue Ocean提供REST API

# 获取所有Pipeline
curl -u admin:token \
    'http://localhost:8080/blue/rest/organizations/jenkins/pipelines/' | jq

# 获取特定Pipeline的运行记录
curl -u admin:token \
    'http://localhost:8080/blue/rest/organizations/jenkins/pipelines/my-pipeline/runs/' | jq

# 获取特定构建的详情
curl -u admin:token \
    'http://localhost:8080/blue/rest/organizations/jenkins/pipelines/my-pipeline/runs/45/' | jq

# 响应示例
{
  "id": "45",
  "name": "#45",
  "result": "SUCCESS",
  "state": "FINISHED",
  "durationInMillis": 200000,
  "startTime": "2026-02-08T12:00:00.000Z",
  "pipeline": "my-pipeline",
  "branch": "main"
}

常见问题

# 问题1: Blue Ocean显示空白
# 解决: 清除浏览器缓存,或检查JavaScript错误

# 问题2: 无法连接GitHub
# 解决: 检查Personal Access Token权限(需要repo权限)

# 问题3: Pipeline编辑器无法保存
# 解决: 确保有仓库的写入权限

# 问题4: 某些功能在Blue Ocean中不可用
# 解决: 切换到传统界面进行高级配置
# 如: Job配置、系统管理、插件管理

总结

本文介绍了Blue Ocean的安装、界面功能、可视化编辑器和使用技巧。Blue Ocean让Jenkins更加现代化易用,是查看和管理Pipeline的优秀工具。

下一篇我们将学习Jenkins与Kubernetes的集成。

发表回复

后才能评论