首页
学习
活动
专区
工具
TVP
发布

团队开发项目环境搭建工具Rigger

http://blog.7rule.com/2018/03/15/rigger.html

缘起

开发多年,我自己积累了一些个人认为还不错的工具、框架,今天我先介绍一个我自己开发的工具,主要用于团队多人合作开发时使用。

遇到的问题

我们在多人合作开发一个项目时,通常会遇到如下几个方面的问题:

项目中有一些配置文件,如开发web项目时会用到nginx配置,项目中依赖db时要有db配置。

多人合用一台开发机,所以如nginx配置中的server_name、资源配置中如go服务启动的tcp端口等不能相同。

当配置文件变化后,需要项目中所有人都更新自己相应的配置文件。

新同学加入项目后,通常要看之前同学写过的项目部署文档去尝试部署项目,其中会遇到没有文档或是文档更新不及时的问题,这样就只能靠问,就算是能力强一些的同学,自己解决起来也要花很长时间,更重要的是,这些都是重复性工作。

解决思路

针对上面提出的问题,我的解决思路如下:

每个人使用来定义自己和别人环境上的不同之处。

使用多个统一的来生成个人最终的配置文件,当多人协作使用的配置有更新时更新相应的模板文件即可。

项目环境搭建步骤记录到统一的配置文件中,简单快速执行整个项目搭建过程。

Rigger项目

基于上面的思路,我开发了这个工具。

Rigger项目地址:https://github.com/ligang1109/rigger

里面有相关使用文档,大家有兴趣的不妨看下。

实际效果

这里使用我们开发的一个golang开源项目:gobox-demo为例。

项目开发环境部署方法

参与这个项目开发的同学,如果想要把自己的环境跑起来,需要做如下的事情:

创建自己的项目资源配置文件:,并在相应目录下创建link:

创建自己的nginx配置文件,并在相应目录下创建link:

初始化目录:logs、tmp

获取项目所依赖的包

重启nginx

做完上面这些事情,这个项目就完成了我们在开发环境的部署。

使用Rigger部署项目开发环境

我们看下如何使用Rigger完成上面这些事情:

定义用户变量

首先,我们将每个人和自己不同的地方使用变量进行定义,这个通过编辑Rigger配置文件中的完成。

var.json示例:https://github.com/goinbox/gobox-demo/blob/master/conf/rigger/var.json

编辑模板文件

定义好变量后,我们就可以编辑项目中用到的相关的配置模板文件了。

因为配置都是可以模板化的,那么其中每个用户和别人不同的地方,使用之前定义好的变量做替换就可以了。

资源配置文件示例:https://github.com/goinbox/gobox-demo/blob/master/conf/rigger/tpl/tpl_server_conf_rewrite.json

nginx配置文件示例:https://github.com/goinbox/gobox-demo/blob/master/conf/rigger/tpl/tpl_api_http.conf.ngx

大家可以看到,每个人不同的地方,都使用变量这种方式做了替换。

定义模板文件的解析规则

定义好模版后,我们就可以定义使用哪个模板文件生成哪些对应的配置文件了,这个通过编辑Rigger配置文件中的完成。

tpl.json示例:https://github.com/goinbox/gobox-demo/blob/master/conf/rigger/tpl.json

定义需要执行的外部命令

最后要定义的就是我们还需要执行哪些外部命令了,比如创建哪些目录,拉取项目依赖的第三方包,重启nginx等。这个通过编辑Rigger配置文件中的完成。

action.json示例:https://github.com/goinbox/gobox-demo/blob/master/conf/rigger/action.json

运行rigger

完成上面这些工作,我们就可以运行rigger,它就可以帮我将这个项目部署好了。

运行示例:https://github.com/goinbox/gobox-demo/blob/master/init.sh

这样做的好处

上面这些步骤,看起来很多,但其实不然。

因为大家平时开发的项目都很类似,只要你在一个项目中写好了对应的配置及模板,在另外一个项目中仅需要做很少的改动即可,且这是项目新创建时的一次性工作。

在实际项目中使用Rigger后,我们从中获得的好处如下:

配置更新时仅需要更新对应的模板文件,其他同学更新模板文件后只要执行rigger命令即可更新自己的环境。

大大减少了项目环境部署的文档工作。

大大降低新同学加入项目的成本。

团队开发效率得到极大提升。

结束语

看了这么多,你有没有兴趣试试看?

如果使用中有遇到问题,或是有想帮助改进Rigger,都可以联系我,欢迎大家指正,谢谢!

Rigger项目:https://github.com/ligang1109/rigger

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180315G1QGOT00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券