22

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

 3 years ago
source link: http://blog.7rule.com/2018/03/15/rigger.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

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

Mar 15, 2018

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

遇到的问题

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

  1. 项目中有一些配置文件,如开发web项目时会用到nginx配置,项目中依赖db时要有db配置。
  2. 多人合用一台开发机,所以如nginx配置中的server_name、资源配置中如go服务启动的tcp端口等不能相同。
  3. 当配置文件变化后,需要项目中所有人都更新自己相应的配置文件。
  4. 新同学加入项目后,通常要看之前同学写过的项目部署文档去尝试部署项目,其中会遇到没有文档或是文档更新不及时的问题,这样就只能靠问,就算是能力强一些的同学,自己解决起来也要花很长时间,更重要的是,这些都是重复性工作。

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

  1. 每个人使用变量来定义自己和别人环境上的不同之处。
  2. 使用多个统一的模板文件来生成个人最终的配置文件,当多人协作使用的配置有更新时更新相应的模板文件即可。
  3. 项目环境搭建步骤记录到统一的配置文件中,简单快速执行整个项目搭建过程。

Rigger项目

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

Rigger项目地址

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

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

项目开发环境部署方法

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

  1. 创建自己的项目资源配置文件:ligang_server_conf_rewrite.json,并在相应目录下创建link:server_conf_rewrite.json -> /home/ligang/devspace/gobox-demo/conf/server/ligang_server_conf_rewrite.json
  2. 创建自己的nginx配置文件ligang_api_http.conf.ngx,并在相应目录下创建link:ligang.gdemo.com.conf -> /home/ligang/devspace/gobox-demo/conf/http/ligang_api_http.conf.ngx
  3. 初始化目录:logs、tmp
  4. 获取项目所依赖的包
  5. 重启nginx

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

使用Rigger部署项目开发环境

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

定义用户变量

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

var.json示例

编辑模板文件

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

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

资源配置文件示例

nginx配置文件示例

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

定义模板文件的解析规则

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

tpl.json示例

定义需要执行的外部命令

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

action.json示例

运行rigger

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

运行示例

这样做的好处

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

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

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

  1. 配置更新时仅需要更新对应的模板文件,其他同学更新模板文件后只要执行rigger命令即可更新自己的环境。
  2. 大大减少了项目环境部署的文档工作。
  3. 大大降低新同学加入项目的成本。
  4. 团队开发效率得到极大提升。

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

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

Rigger项目


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK