gopub(基于vue.js element框架+golang beego框架开发)是一个基于运维场景设计的企业级运维发布系统。配置简单、功能完善、界面流畅、开箱即用!支持git、jenkins版本管理,支持各种web代码发布,一键完成Golang,nodejs,PHP,Python,JAVA等代码的发布、回滚操作。
gopub已持续运行近两年时间,在我们预发布和生产环境完成37000+次稳定部署,支持单项目100+台服务器部署110秒左右,支持2G+CDN静态资源发布传输30秒完成.
使用框架
- Element
- Beego
- httprouter
- Taipei-Torrent
功能特性
- Docker&k8s支持:Docker镜像仅60M,kubernetes编排文件一键部署运行
- 部署简便:go二进制部署,无需安装运行环境.
- gitlab发布支持:配置每个项目git地址,自动获取分支,commit选择并自动拉取代码
- jenkins发布支持:支持jenkins可选build history一键发布
- ssh执行命令/传输文件:使用golang内置ssh库高效执行命令/传输文件
- BT支持:大文件和大批量机器文件传输使用BT协议支持
- 多项目部署:支持多项目多任务并行,内置grpool协程池支持并发操作命令和传输文件
- 分批次发布:项目配置支持配置分批发布IP,自动创建多批次上线单
- 全web化操作:web配置项目,一键发布,一键快速回滚
- API支持:提供所有配置和发布操作API,便于对接其他系统 API使用example
- 部署钩子:支持部署前准备任务,代码检出后处理任务,同步后更新软链前置任务,发布完毕后收尾任务4种钩子函数脚本执行
Docker 快速启动
#使用dockerhub镜像启动,连接外部数据库sudo docker run --name gopub -e MYSQL_HOST=x.x.x.x -e MYSQL_PORT=3306 -e MYSQL_USER=root -e MYSQL_PASS=123456 -e MYSQL_DB=walle -p 8192:8192 --restart always -d lc13579443/gopub:latest
Docker 镜像制作
# 使用multi-stage(多阶段构建)需要docker 17.05+版本支持sudo docker build -t gopub .sudo docker run --name gopub -e MYSQL_HOST=x.x.x.x -e MYSQL_PORT=3306 -e MYSQL_USER=root -e MYSQL_PASS=123456 -e MYSQL_DB=walle -p 8192:8192 --restart always -d gopub:latest
Kubernetes 快速部署
# apiVersion: apps/v1需要kubernetes 1.9.0+版本支持kubectl apply -f gopub-kubernetes.yml
源码编译安装
编译环境
- golang >= 1.8+
- nodejs >= 4.0.0(编译过程中需要可以连公网下载依赖包)
源码下载
# 克隆项目git clone https://gitee.com/dev-ops/gopub.git# 编译前端,npm较慢可使用cnpmcd vue-gopubnpm installnpm run build#修改配置 数据库配置文件在 src/conf/app.conf#编译,control需要给可执行权限,并修改go安装目录 export GOROOT=/usr/local/go./control build#执行数据库初始化./control init#启动服务 启动成功后 可访问 127.0.0.1:8192 用户名:admin 密码:123456./control start#停止服务./control stop#重启服务./control restart
代码地址
- 开源中国码云 https://gitee.com/dev-ops/gopub
- Github https://github.com/linclin/gopub
demo地址(Docker部署,账号admin 密码123456)
- 公网测试环境:http://140.143.85.18:8192/