This commit is contained in:
chaoyue 2018-04-08 15:50:19 +08:00
parent d8fae0ca79
commit be5ddefaa6
9 changed files with 90 additions and 0 deletions

90
README.md Normal file
View File

@ -0,0 +1,90 @@
gopub基于vue.js element框架+golang beego框架开发是一个基于运维场景设计的企业级运维发布系统。配置简单、功能完善、界面流畅、开箱即用支持git、jenkins版本管理支持各种web代码发布一键完成Golang,nodejs,PHPPythonJAVA等代码的发布、回滚操作。
我们运维团队前期使用walle(https://www.walle-web.io)web部署系统进行发布操作,在此也感谢walle团队贡献的优秀开源项目.walle的web体验比较好,本次开源的gopub前台完全模仿walle前台,使用vue.js element框架重写.
gopub已在我们预发布和生产环境完成37000+次稳定部署,支持单项目100+台服务器部署110秒左右,支持2G+CDN静态资源发布传输30秒完成.
![统计](docs/images/index.png)
## 使用框架
* [Element](http://element-cn.eleme.io/#/zh-CN)
* [Beego](https://beego.me/)
* [httprouter](https://github.com/julienschmidt/httprouter)
* [Taipei-Torrent](https://github.com/jackpal/Taipei-Torrent)
## 功能特性
* 部署简便go二进制部署,无需安装运行环境,下个版本将支持Docker部署
* gitlab发布支持配置每个项目git地址,自动获取分支,commit选择并自动拉取代码
* jenkins发布支持支持jenkins编译包一键发布
* ssh执行命令/传输文件使用golang内置ssh库高效执行命令/传输文件
* BT支持大文件和大批量机器文件传输使用BT协议支持
* 多项目部署:支持多项目多任务并行
* 全web化操作web配置项目,一键发布,一键快速回滚
* API支持提供所有配置和发布操作API,便于对接其他系统 [API使用example](api_example/example.go)
* 部署钩子:支持部署前准备任务,代码检出后处理任务,同步后更新软链前置任务,发布完毕后收尾任务4种钩子函数脚本执行
## 源码编译安装
### 编译环境
- golang >= 1.8+
- nodejs >= 4.0.0(编译过程中需要可以连公网下载依赖包)
### 源码下载
``` shell
```
## Getting started
1. 项目配置
![项目配置](docs/images/project.png)
项目名称xxx.example.com (项目命名一定要规范并唯一)
项目环境:现在只用到预发布环境和线上环境。
地址支持gitlab,jenkins,file三种发布方式.
选用Git在地址栏里面填入git地址https方式需在地址中加入账号密码,ssh方式需保证gopub所在服务器有代码拉取权限.我们一般在gitlab创建一个public用户,将gopub所在服务器key加入public用户deploy-keys设置,并将public用户授权可拉取所有gitlab项目.
选用jenkins需要录入jenkins对于的job地址和账号密码,
#### 宿主机
代码检出库:/data/www/xxx (名称需要唯一)
排除文件:默认不填写,可填写.git(tar打包忽略.git目录)等其他需要打包忽略文件
#### 目标机器
用户www (目标机执行操作用户)
webroot/data/htdocs/shell_php7 (目标机代码发布目录,软链目录)
发布版本库:/data/htdocs/backup/shell_php7 (目标机代码备份目录,实体目录,webroot软链到该目录下的对应发布目录)
版本保留数20 (发布版本库中保留多少个发布历史)
机器列表一行一个IP 复制粘贴ip的时候注意特殊字符
#### 高级任务
前面两个任务的执行是在管理机上,后面两个任务的执行是在目标机器上
代码检出前任务:视情况而定(默认为空)
代码检出后任务: 需要composer的项目需要添加cd {WORKSPACE} && rm -rf composer.lock vendor && composer install --optimize-autoloader --no-dev -vvv --ignore-platform-reqs ,否则为空
同步完目标机后任务:视情况而定(默认为空)
更改版本软链后任务:视情况而定(默认为空)
2. 创建上线单
![创建上线单](docs/images/pub1.png)
![git配置](docs/images/pub2-git.png)
![jenkins配置](docs/images/pub2-jenkins.png)
3. 部署操作
![选择上线单](docs/images/pub3.png)
![部署](docs/images/pub4.png)
## 开发团队
* [LC](https://github.com/linclin)
* pandagaoyue
* Jyang0095
* AlexKTD_
* Inner_peace_me
## 下个版本计划
* 支持选择蓝鲸CMDB3.0业务模块发布,避免维护IP列表
* 现有的Docker镜像基于centos打包,镜像超过1.4G,下个版本使用alpine作为基础镜像

BIN
docs/images/index.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

BIN
docs/images/project.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

BIN
docs/images/pub1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

BIN
docs/images/pub2-git.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
docs/images/pub3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

BIN
docs/images/pub4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB