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的集成。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。







