一张发布单,串起交付全链路。
GOS 不是 Jenkins、ArgoCD 或 Agent 的替代品,而是它们上层的发布治理层。
GOS 只做一件事:把分散执行收口成可治理的发布流程。
内部发布平台真正复杂的地方,不是单个执行器,而是链路太分散。
应用负责人、项目归属、发布环境、Jenkins 参数、GitOps 仓库、ArgoCD 实例、Agent 脚本、通知 Hook、审批人和执行权限分散在不同系统里,研发需要理解太多底层细节,平台也很难追踪一次发布到底做了什么。
GOS 将这些链路收口成发布单:
- 一个入口创建发布单,减少 Jenkins / ArgoCD / Git 仓库 / Agent 任务之间的切换
- 一套发布模板治理 CI/CD 执行单元、参数映射、审批和 Hook
- 一套高级参数展示规则,只让申请人填写真正需要输入的字段
- 一个详情页查看预检、审批、构建、部署、Hook、日志、阶段和失败原因
- 一套权限模型控制应用、环境、组件、模板、通知和系统管理入口
- 一套审计数据沉淀发布参数、执行单元、步骤、Agent 任务和通知结果
GOS 的标准化不是要求所有团队使用同一条流水线,而是把发布过程中必须统一的边界先定下来。
- 标准入口:所有发布、回滚、重放都从发布单进入
- 标准字段:应用、环境、分支、镜像、Helm values 等关键参数统一命名和来源
- 标准模板:把 CI/CD、审批、Hook、通知和参数规则前置到模板里
- 标准流程:预检、审批、执行、Hook、回滚和审计按同一套生命周期流转
- 标准留痕:每一次参数、操作、执行单元、阶段日志和失败原因都能回到发布单追踪
执行器可以不同,网络环境可以不同,部署方式也可以不同;但申请人看到的是同一套发布语言,平台沉淀的是同一套治理数据。
围绕发布单组织完整发布生命周期。
- 发布单创建、编辑、删除、执行、取消
- 标准发布、极速发布、仅构建、分段部署
- 批量执行、批量删除、并发批次进度
- 发布前预检:状态、执行单元、参数、锁冲突等
- 回滚、重放、应用维度回滚能力检测
- 当前上线状态确认与历史状态追踪
- 发布单统计、筛选、详情、日志流、阶段日志
把发布规则前置到模板,而不是让每次发布临时决定。
- 发布模板 CRUD
- CI / CD 执行器绑定
- CI / CD 参数映射、固定值、基础字段、CI 参数沿用
- 高级参数统一展示,隐藏基础字段映射和 CD 沿用 CI 的参数
- 模板审批开关、审批模式、审批人配置
- 审批工作台、审批记录、通过 / 拒绝 / 提交审批
- 模板 Hook 配置,支持 Agent 任务和通知 Hook
让 Jenkins 专注执行,GOS 负责治理入口。
- Jenkins 管线同步
- 执行器参数同步
- 管线列表、详情、原始链接
- 原始脚本 / Config XML 查看
- 原始 Jenkins Pipeline 创建、编辑、删除
- 管线校验
- Jenkins 构建日志、阶段状态、阶段日志回写发布单
面向声明式部署场景,串起环境、仓库、应用和集群。
- 多 ArgoCD 实例管理
- ArgoCD 实例连通性检查
- 环境到 ArgoCD 实例绑定
- ArgoCD Application 列表、详情、原始链接、手动 Sync
- GitOps 实例管理
- GitOps 仓库状态检查
- GitOps 模板字段、字段候选值、values 候选值
- Helm / Kustomize 扫描路径配置
- 发布时解析链路:
env -> ArgoCD -> GitOps -> Git 仓库
用于生产孤岛、网络隔离或平台无法直连目标环境的场景。
- Agent 注册、心跳、在线 / 离线 / 忙碌状态
- Agent 启用、禁用、维护模式
- Agent 安装配置生成与 Token 重置
- 临时任务、常驻任务、指定 Agent 分发
- Shell 任务、脚本文件任务、文件分发任务
- 脚本管理:脚本模板、Shell 类型、脚本文本、脚本路径
- 任务执行、停止、恢复、删除、日志和结果回传
- 发布详情中展示 Hook / Agent 任务进度和日志
把通知源、模板和 Hook 配成平台能力,而不是散落在流水线脚本里。
- 通知源管理:钉钉、企业微信
- Markdown 通知模板
- 条件化模板内容
- 通知 Hook 管理
- 发布模板可关联通知 Hook
- 通知源 Secret / Token 加密存储
把发布入口和组织权限绑定起来。
- 项目管理
- 应用 CRUD、负责人、仓库、语言、制品类型
- 应用 GitOps 分支映射、发布分支选项
- 应用与 CI/CD 管线绑定
- 标准字库管理
- 应用级可见 / 发布权限控制
- 用户管理、权限授权、参数权限
- 系统设置:发布环境、并发控制、GitOps 扫描路径
应用工作台
发布单详情页
发布单列表页
新建发布单页
发布模板配置
flowchart LR
U["用户"] --> F["Vue 3 管理后台"]
F --> B["Gin API"]
B --> D["MySQL / SQLite"]
B --> J["Jenkins"]
B --> AR["ArgoCD"]
B --> AG["GOS Agent"]
B --> N["通知源"]
AR --> G["GitOps Repos"]
AR --> K["Kubernetes Clusters"]
AG --> T["特殊网络/生产环境"]
J --> B
后端采用轻量分层:
internal/domain:领域实体与仓储接口internal/application:用例编排internal/infrastructure:数据库、Jenkins、ArgoCD、GitOps、配置、加密internal/interfaces/http:Gin 路由与 Handler
| 层级 | 技术 |
|---|---|
| 后端 | Go 1.25、Gin、Swagger |
| 存储 | MySQL、SQLite |
| 前端 | Vue 3、Vite、TypeScript、Pinia、Ant Design Vue、ECharts |
| 执行器 | Jenkins、ArgoCD / GitOps、GOS Agent |
| 部署 | Docker 单容器、源码运行 |
适合部署到目标机器,单容器同时提供前端和后端服务。
本地构建镜像:
docker build -t gos-release:latest .MySQL 模式启动:
docker run -d \
--name gos-release \
-p 5174:5174 \
-p 8081:8081 \
-e GOS_DB_DRIVER=mysql \
-e GOS_MYSQL_DSN='user:password@tcp(mysql-host:3306)/deploy_platform?charset=utf8mb4&parseTime=true&loc=Local' \
-e GOS_JENKINS_ENABLED=true \
-e GOS_JENKINS_BASE_URL='http://jenkins.example.com/' \
-e GOS_JENKINS_USERNAME='admin' \
-e GOS_JENKINS_API_TOKEN='your-token' \
-e GOS_JENKINS_AUTO_SYNC_ENABLED=true \
-e GOS_JENKINS_AUTO_SYNC_INTERVAL_SEC=5 \
-e GOS_AUTH_ADMIN_USERNAME='admin' \
-e GOS_AUTH_ADMIN_PASSWORD='your-admin-password' \
-e GOS_SECURITY_ENCRYPTION_KEY='replace-with-a-strong-key' \
yl10115658529/gos-release:latest说明:GOS_SECURITY_ENCRYPTION_KEY 用于加密数据,请自定义 。
访问地址:
- 登入:
http://127.0.0.1:5174/login
首次部署 MySQL 时,可先导入仓库内表结构:
mysql -h mysql-host -P 3306 -u user -p < ./deploy_platform.sql环境要求:
- Go
1.25+ - Node.js
20+ - MySQL
8+或 SQLite - Jenkins / ArgoCD / GitOps / Agent / 通知源按需准备
启动后端:
go run ./cmd/server -config configs/config.local.json启动前端:
cd frontend
npm install
VITE_API_BASE_URL=http://127.0.0.1:8081 npm run dev源码运行时主要读取配置文件,例如:
configs/config.local.jsonconfigs/config.production.json
Docker 单容器运行时由 docker/entrypoint.sh 根据环境变量生成:
/app/configs/config.runtime.json
常用 Docker 环境变量:
| 变量 | 说明 |
|---|---|
GOS_DB_DRIVER |
数据库类型:mysql 或 sqlite |
GOS_MYSQL_DSN |
MySQL 连接串 |
GOS_SQLITE_PATH |
SQLite 文件路径 |
GOS_JENKINS_ENABLED |
是否启用 Jenkins |
GOS_JENKINS_BASE_URL |
Jenkins 地址 |
GOS_JENKINS_USERNAME |
Jenkins 用户名 |
GOS_JENKINS_API_TOKEN |
Jenkins API Token |
GOS_JENKINS_AUTO_SYNC_ENABLED |
是否启用 Jenkins 自动同步 |
GOS_JENKINS_AUTO_SYNC_INTERVAL_SEC |
Jenkins 自动同步间隔 |
GOS_JENKINS_RELEASE_TRACK_ENABLED |
是否启用发布构建追踪 |
GOS_AUTH_ADMIN_USERNAME |
初始管理员账号 |
GOS_AUTH_ADMIN_PASSWORD |
初始管理员密码 |
GOS_SECURITY_ENCRYPTION_KEY |
平台加密密钥 |
GOS_RELEASE_ENV_OPTIONS |
发布环境列表,例如 dev,test,prod |
GOS_RELEASE_CONCURRENCY_ENABLED |
是否启用发布并发锁 |
GOS_RELEASE_LOCK_SCOPE |
锁范围,例如 application_env |
GOS_RELEASE_CONFLICT_STRATEGY |
冲突策略,例如 reject |
GOS_GITOPS_PATH_MAPS |
GitOps 路径映射,格式 宿主机路径=容器内路径 |
生产环境务必使用强密码、独立加密密钥,并避免在日志或命令历史中暴露 Token。
| 模块 | 页面 | 路由 |
|---|---|---|
| 入口 | 官网 / 产品页 | / |
| 入口 | 登录 | /login |
| 应用管理 | 我的应用 | /applications |
| 应用管理 | 新增应用 | /applications/new |
| 应用管理 | 编辑应用 | /applications/:id/edit |
| 应用管理 | 管线绑定 | /applications/:id/pipeline-bindings |
| 应用管理 | 项目管理 | /projects |
| 应用管理 | 标准字库 | /platform-param-dicts |
| 发布管理 | 发布单 | /releases |
| 发布管理 | 新建发布单 | /releases/new |
| 发布管理 | 编辑发布单 | /releases/:id/edit |
| 发布管理 | 发布单详情 | /releases/:id |
| 发布管理 | 审批工作台 | /release-approvals |
| 发布管理 | 发布模板 | /release-templates |
| 组件管理 | Jenkins 管线 | /components/jenkins |
| 组件管理 | 执行器参数 | /components/executor-params |
| 组件管理 | ArgoCD 管理 | /components/argocd |
| 组件管理 | ArgoCD 应用 | /components/argocd/applications |
| 组件管理 | GitOps 管理 | /components/gitops |
| 组件管理 | GitOps 教程 | /help/gitops |
| 组件管理 | Agent 概览 | /components/agents |
| 组件管理 | Agent 脚本管理 | /components/agent-scripts |
| 组件管理 | Agent 任务管理 | /components/agent-tasks |
| 系统管理 | 用户管理 | /system/users |
| 系统管理 | 权限授权 | /system/permissions |
| 系统管理 | 通知模块 | /system/notifications |
| 系统管理 | 系统设置 | /system/settings |
第一次落地建议按这个顺序做:
- 启动后端和前端
- 登录管理员账号
- 配置发布环境和并发策略
- 创建用户并授权
- 创建项目和应用
- 按需接入 Jenkins / ArgoCD / GitOps / Agent / 通知源
- 绑定应用与 CI/CD 执行器
- 维护标准字库和执行器参数
- 创建发布模板,配置审批与 Hook
- 创建发布单,执行并查看详情
完整说明见:docs/使用手册/GOS从0到1初始化使用指南.md
gos/
├── agent # Agent 相关代码
├── cmd/server # 后端入口
├── configs # 配置文件
├── docker # 单容器运行配置
├── docs # Swagger、需求文档、样式规范、测试清单
├── frontend # Vue 3 管理后台
├── images # README 截图素材
├── internal/application # 用例层
├── internal/bootstrap # 启动与配置
├── internal/domain # 领域层
├── internal/infrastructure # 基础设施层
├── internal/interfaces/http # Gin 接口层
└── scripts # 辅助脚本
- Docker 部署:
docs/部署/Docker部署说明.md - 初始化使用指南:
docs/使用手册/GOS从0到1初始化使用指南.md - Swagger:
docs/swagger.yaml - 后端需求:
docs/后端/ - 前端需求:
docs/前端/ - 前端样式规范:
docs/样式规范/ - 测试清单与报告:
docs/测试/
以下内容在需求文档中有规划,但不要理解为当前已完整落地能力:
- K8s 发布策略引擎
- 多平台小程序发布
- 更细粒度的发布策略可视化
- 外部身份源接入:LDAP / SSO
内部项目,按团队实际规范使用。




