Flo 是一个基于 Go 语言开发的命令行 TUI(Terminal User Interface)工具,用于管理阿里云云效(DevOps)流水线。它提供了直观的终端界面,让您可以轻松查看、运行和管理流水线。
- 📋 流水线列表管理:以表格形式展示流水线列表,支持模糊搜索、状态筛选和多种排序方式
- 🔖 书签功能:收藏重要流水线,支持书签筛选和优先排序
- 🗂️ 分组视图:支持按分组查看流水线,可在分组视图和全部视图之间切换
▶️ 流水线运行:一键运行流水线,支持分支选择,自动显示实时日志流- 🛑 终止运行:支持终止正在运行的流水线,在运行历史或日志界面中操作
- 📈 运行历史:查看流水线运行历史,支持分页浏览和直接查看日志
- 📊 智能日志显示:Stage-tabs 布局查看不同阶段日志,支持自动刷新、手动刷新、Vim 风格搜索、复制到剪贴板
- 📝 编辑器和分页器:支持在外部编辑器或分页器中查看日志
- 🎨 现代界面:基于 Bubble Tea 框架,支持透明背景,适配各种终端主题
- ⌨️ Vim 风格快捷键:支持 j/k 导航、/搜索、yy复制等 Vim 风格的键盘操作
Flo 支持通过环境变量配置 HTTP/HTTPS 代理,适用于企业网络环境:
# 设置代理
export http_proxy=http://proxy.company.com:8080
export https_proxy=http://proxy.company.com:8080
# 带认证的代理
export http_proxy=http://username:password@proxy.company.com:8080
export https_proxy=http://username:password@proxy.company.com:8080
# 运行程序
./flo支持的环境变量:
http_proxy/HTTP_PROXY- HTTP 代理服务器https_proxy/HTTPS_PROXY- HTTPS 代理服务器no_proxy/NO_PROXY- 不使用代理的地址列表
详细的代理配置说明请参考 PROXY_SUPPORT.md。
git clone https://github.com/your-username/flo.git
cd flo
go build -o flo ./cmd/flo创建配置文件 ~/.flo/config.yml:
# 企业 ID(组织 ID)- 必填
organization_id: "your_organization_id"
# 推荐:使用个人访问令牌认证
personal_access_token: "pt-XXXXXXXXXXXXXXXXXXXXXXXX_XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"
endpoint: "openapi-rdc.aliyuncs.com" # 可选,默认值
# 或者:使用AccessKey认证(备用方式)
# access_key_id: "your_access_key_id"
# access_key_secret: "your_access_key_secret"
# region_id: "cn-hangzhou" # 可选,默认值
# 编辑器和分页器配置(可选)
editor: "nvim" # 或 "code --wait", "vim" 等
pager: "less -R" # 或 "lnav", "bat" 等
# 流水线排序(可选)
# 可选值:name(按名称)、create_time(按创建时间)、bookmark(书签优先)
# 默认值:name
# default_sort: "name"
# 书签配置(可选)
bookmarks:
- "demo_staging"
- "demo_prod"- 更安全,权限控制更精细
- 无需管理区域配置
- 获取方式:阿里云云效 → 个人设置 → 个人访问令牌
- 传统认证方式
- 需要配置区域(默认 cn-hangzhou)
- 获取方式:阿里云控制台 → AccessKey管理
# 启动程序
./flo
# 启用调试模式
FLO_DEBUG=1 ./flo
# 使用代理
export http_proxy=http://proxy.company.com:8080
./floj/k- 上下移动选择Enter- 查看运行历史r- 运行流水线a- 切换状态筛选(全部 ↔ 运行中+等待中)b- 切换书签筛选(全部 ↔ 仅书签)B- 添加/移除书签Ctrl+G- 切换到分组视图/- 聚焦搜索框q- 返回上级/退出Q- 直接退出程序
j/k- 上下移动选择Enter- 进入分组查看流水线/- 聚焦搜索框q- 返回流水线列表Q- 直接退出程序
j/k- 上下移动选择Enter- 查看日志r- 运行流水线X- 终止选中的流水线运行[/]- 上一页/下一页0- 跳转到第一页q- 返回流水线列表Q- 直接退出程序
j/k- 上下滚动g/G- 跳转到顶部/底部b/f- 向上/向下翻页u/d- 向上/向下翻半页Tab/Shift+Tab- 切换到下一个/上一个 Stager- 手动刷新日志X- 终止当前流水线运行/- 搜索日志内容n/N- 跳转到下一个/上一个搜索结果yy- 复制当前日志到剪贴板e- 在编辑器中查看日志v- 在分页器中查看日志q- 返回上级界面Q- 直接退出程序
- 使用
B键快速添加/移除流水线书签 - 使用
b键在全部流水线和书签流水线之间切换 - 书签流水线在列表中优先显示(★ 标记)
- 书签自动保存到配置文件
- 使用
a键在全部流水线和运行中流水线之间切换 - 支持 RUNNING 和 WAITING 状态的快速筛选
- 与搜索和书签功能完全兼容
- Stage-tabs 布局:使用 Tab 键在不同 Stage 之间切换查看日志
- 自动刷新:新创建的运行自动刷新直到完成,运行中的历史运行自动刷新直到状态改变
- 延迟停止:流水线完成后继续刷新 3 次,确保看到完整的最终日志
- Vim 风格搜索:按
/进入搜索模式,n/N跳转搜索结果,支持结果高亮 - 复制功能:按
yy将当前日志内容复制到系统剪贴板 - 状态栏:显示运行状态和自动刷新状态
- 终止运行:按
X可终止正在运行的流水线
- 支持在外部编辑器中查看和编辑日志
- 支持在分页器中浏览长日志
- 配置优先级:配置文件 → 环境变量 → 默认值
- UI 框架:Bubble Tea - 现代化的 TUI 框架
- UI 组件:Bubbles - Bubble Tea 组件库
- 样式库:Lipgloss - 样式和布局
- API 客户端:阿里云 Go SDK + 自定义 HTTP 客户端
- 配置管理:YAML 配置文件
- 认证支持:个人访问令牌(推荐)+ AccessKey(备用)
基于阿里云云效 API 实现,支持:
- 流水线管理(列表、详情、运行、停止)
- 流水线分组管理
- 运行历史查询
- 实时日志流(包括部署日志)
- 任务详情查看
flo/
├── cmd/flo/ # 主程序入口
├── internal/
│ ├── api/ # API 客户端
│ ├── config/ # 配置管理
│ └── tui/ # TUI 界面组件
│ ├── components/ # UI 组件(表格、模态框、搜索框等)
│ ├── pages/ # 页面(流水线、分组、历史、日志)
│ ├── types/ # 类型定义和工具函数
│ └── styles.go # 样式定义
├── scripts/ # 构建和发布脚本
├── config.yml.example # 配置文件示例
└── docs/ # 文档
# 开发构建
go build -o flo ./cmd/flo
# 生产构建
go build -ldflags="-s -w" -o flo ./cmd/flo# 启用调试日志
export FLO_DEBUG=1
./flo
# 查看 API 调试日志
tail -f logs/api_debug.log-
配置文件未找到
- 确保在
~/.flo/config.yml创建配置文件 - 参考
config.yml.example示例
- 确保在
-
认证失败
- 检查个人访问令牌是否有效
- 确认组织ID是否正确
- 验证网络连接和代理设置
-
界面显示异常
- 确保终端支持 Unicode 字符
- 调整终端窗口大小
- 检查终端颜色支持
欢迎提交 Issue 和 Pull Request!
MIT License