释放波浪
  
微服务的通用发布/版本聚合器。检查GitHub、GitLab和其他平台上的发布——作为MCP服务器公开用于AI代理集成,或用作独立的CLI。
特性
- 多平台:GitHub和GitLab发布跟踪
- MCP服务器:Claude Code、Cursor、VS Code Copilot等可访问的18个工具
- 集装箱登记处:从任何OCI兼容注册表(GHCR、Docker Hub、ECR等)查询映像标签
- Kubernetes:读取已部署的版本,自动发现服务,比较发布版本与已部署版本
- 安全:通过OSV.dev数据库检查CVE
- Web仪表板:交互式htmx驱动的仪表板,实时更新
/dashboard - REST API:用于编程访问的完整JSON API
- 通知:新版本上的Slack、Discord和webhook通知
- 后台守护程序:具有可配置间隔的自动轮询
- 多用户:用于团队访问控制的API密钥管理
- GitHub应用程序:通过GitHub webhooks自动检测发布
- 命令行界面:用于查询版本、标签和服务状态的直接命令
- 并发:并行检查多个服务
- 缓存:具有可配置TTL的内存缓存
- 频率限制:遵守API限制的供应商费率限制
- SQLite持久化:发布历史和工具调用记录
- 单个二进制:无运行时依赖关系,跨平台
快速开始
安装
# Homebrew
brew install UnityInFlow/tap/releasewave
# From source
go install github.com/UnityInFlow/releasewave/cmd/releasewave@latest
# Docker
docker run -p 7891:7891 ghcr.io/unityinflow/releasewave:latest
# Download a release binary
# https://github.com/UnityInFlow/releasewave/releases配置
# Generate default config
releasewave init
# Edit config to add your services
# Config location: ~/.config/releasewave/config.yaml用作MCP服务器
# Auto-configure Claude Code, Cursor, VS Code
releasewave install
# Or start manually
releasewave serve # stdio (default, for AI tools)
releasewave serve --transport=sse # HTTP+SSE on port 7891 (+ web dashboard + API)用作CLI
releasewave releases docker/compose
releasewave latest kubernetes/kubernetes
releasewave tags golang/go
releasewave check # check all configured services
# GitLab support
releasewave releases gitlab-org/gitlab --platform gitlab
# Kubernetes auto-discovery
releasewave discover --namespace production
releasewave discover --merge # auto-add discovered services to config
# Background monitoring
releasewave daemon --interval=5mWeb仪表板
在SSE模式下运行时,交互式仪表板可在 http://localhost:7891/dashboard:
- 实时服务状态,30秒自动刷新(htmx)
- 在UI中添加/删除服务
- 平台徽章、版本标签、发布链接
releasewave serve --transport=sse --port=7891
# Open http://localhost:7891/dashboardREST API
# List services with latest releases
curl http://localhost:7891/api/v1/services
# Release history for a service
curl http://localhost:7891/api/v1/services/my-api/releases
# Cross-service timeline
curl http://localhost:7891/api/v1/timeline
# Add a service
curl -X POST http://localhost:7891/api/v1/services \
-H 'Content-Type: application/json' \
-d '{"name":"my-api","repo":"github.com/org/my-api"}'
# Delete a service
curl -X DELETE http://localhost:7891/api/v1/services/my-api多租户访问
# Create a tenant with API key
releasewave tenant create my-team
# => Tenant created:
# => Name: my-team
# => API Key: rw_abc123...
# => Save this API key — it won't be shown again.
releasewave tenant list
releasewave tenant delete my-teamMCP工具
核心工具
| 工具 | 说明 |
|---|---|
list_releases | 列出GitHub/GitLab存储库的版本 |
get_latest_release | 获取带有注释的最新版本 |
list_tags | 列出带有提交SHA的git标签 |
check_services | 检查所有已配置的服务 |
find_outdated | 查找其最新版本背后的服务 |
容器注册表工具
| 工具 | 说明 |
|---|---|
list_image_tags | 列出来自任何OCI注册表(GHCR、Docker Hub、ECR等)的标签 |
compare_image_tags | 检查两个图像标签是否指向同一摘要 |
Kubernetes工具
| 工具 | 说明 |
|---|---|
list_k8s_deployments | 列出部署/状态集及其映像版本 |
compare_release_vs_deployed | 比较最新版本与K8s中部署的版本 |
discover_services | 从K8s注释或图像名称自动发现服务 |
扩展分析工具
| 工具 | 说明 |
|---|---|
changelog_between_versions | 聚合两个版本之间的发行说明 |
security_advisories | 检查影响软件包版本(OSV.dev)的CVE |
release_timeline | 按日期排序的跨服务发布时间表 |
release_diff | 使用changelog比较部署与最新版本 |
release_history | 从SQLite查询本地发布历史 |
依赖关系和升级工具
| 工具 | 说明 |
|---|---|
get_repo_file | 从仓库(go.mod、package.json等)获取文件内容 |
dependency_matrix | 分析已配置服务之间的共享依赖关系 |
upgrade_plan | 为过时的服务制定优先升级计划 |
watch_releases | 检测新版本并发送通知 |
service_graph | 构建一个显示跨服务共享库的依赖关系图 |
配置
# ~/.config/releasewave/config.yaml
services:
- name: my-api
repo: github.com/my-org/my-api
registry: ghcr.io/my-org/my-api
- name: frontend
repo: github.com/my-org/frontend
tokens:
github: "" # or set GITHUB_TOKEN env var
gitlab: "" # or set GITLAB_TOKEN env var
cache:
ttl: 15m
server:
port: 7891
api_key: "" # or set RELEASEWAVE_API_KEY env var
rate_limit:
github: 5 # requests per second
gitlab: 3
notifications:
enabled: false
webhook_url: "https://hooks.slack.com/services/..."
slack:
webhook_url: ""
discord:
webhook_url: ""
storage:
path: "" # e.g. ~/.config/releasewave/releasewave.db
daemon:
interval: 5m
log:
level: info # debug, info, warn, error
format: text # text, jsonKubernetes自动发现
ReleaseWave可以使用注释从Kubernetes集群中自动发现服务:
# Add to your Deployment/StatefulSet metadata
metadata:
annotations:
releasewave.io/repo: "github.com/my-org/my-api"
releasewave.io/name: "my-api"如果没有注释,ReleaseWave将尝试从容器映像名称推断存储库。
码头工人
# Pre-built image
docker run -p 7891:7891 \
-v ~/.config/releasewave:/home/releasewave/.config/releasewave \
ghcr.io/unityinflow/releasewave:latest serve --transport=sse
# Or build locally
docker build -t releasewave .发展
make build # build binary
make test # run tests with race detection
make lint # run linters
make clean # clean build artifacts建筑
cmd/releasewave/ CLI entry point (Cobra commands)
internal/
api/ REST API (JSON endpoints)
cache/ Thread-safe in-memory TTL cache
config/ YAML config loading + validation
daemon/ Background polling daemon
discovery/ K8s service auto-discovery
errors/ Typed errors (NotFound, RateLimit, Auth)
githubapp/ GitHub App integration (JWT, webhooks)
k8s/ Kubernetes integration (client-go)
logging/ Structured logging setup (slog)
mcpserver/ MCP server (stdio + SSE, 18 tools)
metrics/ Prometheus tool call metrics
middleware/ HTTP middleware (auth, metrics)
model/ Core data types (Release, Tag, Service)
notify/ Notifications (Slack, Discord, webhook)
provider/ Provider interface + cached decorator
github/ GitHub REST API client
gitlab/ GitLab REST API client
ratelimit/ Token-bucket rate limiter
registry/ OCI container registry client
security/ Vulnerability checking (OSV.dev API)
store/ SQLite persistence (releases, tool calls)
tenant/ Multi-tenant CRUD + API key management
web/ Web dashboard (htmx + Tailwind)许可证
麻省理工学院
