文档章节

walle-瓦力自动化部署工具

wushuiyong
 wushuiyong
发布于 2015/11/14 10:56
字数 1983
阅读 285
收藏 1

1 Git Flow


一般而言,软件开发模型有常见的瀑布模型、迭代开发模型、以及最近出现的敏捷开发模型等不同的模型。每种模型有各自应用场景,Git Flow是构建在Git之上的一个组织软件开发活动的模型,Git Flow重点解决的是由于源代码在开发过程中的各种冲突导致开发活动混乱的问题。在此介绍Git Flow是由于walle依赖它的思想进行持续部署。

输入图片说明

开发过程中可能出现的git flow

1.1 Git Flow中的分支


Git Flow模型中定义了主分支和辅助分支两类分支。其中主分支用于组织与软件开发、部署相关的活动;辅助分支组织为了解决特定的问题而进行的各种开发活动。分支的名字是一种共识,更重要的是它承担的责任。

1.2 主分支


主分支是所有开发活动的核心分支。所有的开发活动产生的输出物最终都会反映到主分支的代码中。主分支分为master分支和development分支。

1.2.1 master分支


master分支上存放的应该是随时可供在生产环境中部署的代码,它承担的责任就是:仅在发布新的可供部署的代码时才更新到master分支上的代码。当开发活动告一段落,产生了一份新的可供部署的代码时,master分支上的代码会被更新。同时,每一次更新,最好添加对应的版本号标签(TAG)。

1.2.2 develop分支


develop分支是保存当前最新开发成果的分支,它承担的责任就是功能开发完毕等待最后QA的验收,通常这个分支上的代码也是可进行每日夜间发布的代码。当代码已经足够稳定时,就可以将所有的开发成果合并回master分支了。

1.3辅助分支


辅助分支是用于组织解决特定问题的各种软件开发活动的分支,它的生存周期伴随着它的功能完成而消失。辅助分支包括:

  • 用于并行开发新功能时所使用的feature分支;
  • 用于辅助版本发布的release分支;
  • 用于修正生产代码中的缺陷的hotfix分支。

当这些分支完成它的使命之后在merge到主分支之后,也将被删除。

Git Flow开发模型从源代码管理角度对通常意义上的软件开发活动进行了约束,让小组各个成员之间的开发相互隔离,能够有效避免处于开发状态中的代码相互影响而导致的效率低下和混乱,各自开发团队根据自己的特点和节奏自行剪裁或扩展。

2 Walle介绍


2.1是什么?


Walle 一个web部署系统工具,可能也是个持续发布工具,配置简单、功能完善、界面流畅、开箱即用!支持git、svn版本管理,支持各种web代码发布,静态的HTML、动态PHP、需要编译的JAVA等,用户权限管理,各种自定义高级任务。一键上线、回滚。

项目地址:walle-瓦力,上线开源两个月,目前已支持超过十家企业线上部署使用,每周更新一个版本,持续带来新特性。

2.2 walle的组件关系、原理


walle部署在一台宿主机提供一个web UI,方便用户自主更新代码部署到目标机群。Walle是一个跑在LNMP(LAMP)上的PHP服务,宿主机与目标机群建立信任,通过操作bash命令来实现代码同步、自定义高级任务。

输入图片说明 宿主机、目标机群、操作用户关系

2.3配置


用户的项目可自定义git/svn代码托管地址、宿主机、目标机群、高级任务等。配置完成后可快速复制当前配置、检测配置是否正常、以及该项目的审核管理员和成员。

3 walle与Git的配合


walle的持续部署与Git Flow思想一致,在不同的环境部署不同的分支。划分三个环境:测试环境、预发布环境、生产环境。测试环境和预发布环境推荐分支部署,生产环境推荐tag部署。当然,这更适合milestone开发方式,如果是每天快速迭代多个版本,打tag成本就有点高了。

3.1 部署环境


3.1.1 测试环境


  • 开发者的feature分支开发、自测验收通过后,merge到测试环境的develop分支,(QA)部署到测试环境,等待QA验收。
  • QA提bug issue,开发者从develop切分支修正再次合并、部署、验收。

3.1.2 预发布环境


  • 测试环境验收通过之后,合并到预发布环境的master,部署预发布环境
  • QA全面回归,发现问题提bug issue,开发者从master切分支修正再次合并、部署、验收。
  • 回归完毕打tag,准备上线

3.1.3 生产环境


  • 上线验收通过的tag
  • 回归测试,发现问题开发者从master切分支hotfix修正。

3.2 环境上线流程


开发者选择要上线的项目,选择要上线的分支和版本提交上线单,项目管理员审核通过后,开发者发起上线。

输入图片说明

4 Walle的部署流程


部署是在一台宿主机拉取代码,做编译、配置后,向目标机群分发,执行相关目标机群任务。部署流程拆分为以下6个环节,其中1-5为在宿主机进行,6在目标机群执行。

  1. 权限、目录检查,开辟一个上线的独立空间以并行发布,防止同时部署出现代码污染
  2. pre-deploy任务,代码检出前的一些操作任务,如环境检查
  3. 代码从git/svn版本库中检出
  4. post-deploy任务,代码检出之后操作任务,如java的mvn编译,php的composer插件安装
  5. 保留在独立空间的代码均会被同步至目标机群的一个版本库中
  6. 全量更新:当所有机器都分发完毕,开始做pre-release任务(java暂停服务)、切换版本软链、post-release任务( java启动服务)

输入图片说明

为保证服务的完整性,先同步代码,后切换服务。部署发布每次都会有版本记录保留,版本上线事故一旦发生,回滚可瞬间完成。可配置线上版本最大保留数,过期的版本被会删除,同时也就不能回滚被删除的版本。对于需要编译、自定义多任务辅助,可配置前置、后置操作自定义任务;同时提供一些预置变量({WORKSPACE}宿主机的当前独立空间、目标机webroot,{VERSION}版本库目录)方便用户操作自定义任务。

上线过程直到目标机群全部完成之前,如有任一环节失败将会回滚,需要重新上线,同时会把错误信息提示用户。

5 Todo list


  • 支持Docker
  • 开放接口
  • 支持第三方hook

6 了解更多


项目地址:walle-瓦力官方主页-花满树。欢迎了解、star、fork。

© 著作权归作者所有

共有 人打赏支持
wushuiyong
粉丝 21
博文 3
码字总数 4693
作品 2
株洲
Walle 1.0.0正式版发布,上线部署系统

Walle - 瓦力 是一个支持svn、git、多用户、多项目、多环境同时部署的上线部署系统。 相比jenkins其项目配置更简单、回滚快速、权限分级、用户分组功能更完善;UI界面更优雅,用户体验更人性...

wushuiyong
2016/01/29
3.3K
14
Walle 1.1.0正式版发布,上线部署系统

Walle 1.1.0正式版发布。 Walle - 瓦力 是一个支持svn、git、多用户、多项目、多环境同时部署的上线部署系统。 相比jenkins其项目配置更简单、回滚快速、权限分级、用户分组功能更完善;UI界...

wushuiyong
2016/03/24
5.6K
12
Walle 0.9.0 发布,上线部署系统瓦力

Walle - 瓦力 是一个支持svn、git、多用户、多项目、多环境同时部署的上线部署系统。 相比jenkins其项目配置更简单、回滚快速、权限分级、用户分组功能更完善;UI界面更优雅,用户体验更人性...

wushuiyong
2015/11/18
1K
0
渠道包打包神器 - Walle(瓦力)

Walle(瓦力):Android Signature V2 Scheme 签名下的新一代渠道包打包神器 瓦力通过在 Apk 中的 区块添加自定义的渠道信息来生成渠道包,从而提高了渠道包生成效率,可以作为单机工具来使用...

匿名
2017/01/22
0
0
Walle 0.9.2 发布,上线部署系统

Walle - 瓦力 是一个支持svn、git、多用户、多项目、多环境同时部署的上线部署系统。 相比jenkins其项目配置更简单、回滚快速、权限分级、用户分组功能更完善;UI界面更优雅,用户体验更人性...

wushuiyong
2015/12/02
1K
13

没有更多内容

加载失败,请刷新页面

加载更多

下一页

这些Spring中的设计模式,你都知道吗?

设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆。 Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行...

Java填坑之路
27分钟前
1
0
Spring Aop原理之Advisor过滤

在上文(Spring Aop之Advisor解析)中我们讲到,Spring Aop对目标bean的代理主要分为三个步骤:获取所有的Advisor,过滤当前bean可应用的Advisor和使用Advisor为当前bean生成代理对象,并且上文...

爱宝贝丶
37分钟前
0
0
JMockit学习教程

1 JMockit中文网 我觉得如果仅仅是开发自测的话,把JMockit中文网认真看一遍,就可以在项目中使用JMockit了。 http://jmockit.cn/index.htm 2 JMockit中文教程 官方文档中文版。对于不喜欢看...

SuperHeroes
49分钟前
0
0
Linux服务器几乎从不采用Arch Linux?

我们见得多的Linux服务器系统一般都是什么Ubuntu Server啊,什么Cent OS啊,什么Fedora啊,或者企业采用的Red Hat啊,为什么几乎没有Arch Linux呢?下面我将从若干个方面指出Arch Linux在服务...

linux-tao
今天
0
0
js 函数柯里化 闭包

参考 https://mp.weixin.qq.com/s/GEHL3jarDdAAcr5tQGjmDg 一个统计求和的函数 需要知道整个数组的信息,然后遍历求值 function countMoney() { let money = 0 // 温馨提示:arguments...

阿豪boy
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部