00:00
好,同学们,那么接下来我们进入第一部分安装部署,顾名思义,我们在第一部分的内容重点是以把我们的jackins这款软件啊,把它给刨起来,能够完成一个最小的持续集成,持续发布的运行环境,能够在我们的实际的生产环境里,实际的工作当中呢,能够用得上。同时有一些同学可能对持续部署,持续集成呢,呃,并不是特别了解,我们也能够更直观的感受到他能给我们带来的便捷和好处。那首先我们先看一下jackins,它在开发过程当中,也就是我们日常工作当中所处的地位和位置。在这儿呢,给大家画了一张图,这是我们现在最主流的呃开发软件开发公司里边的基本的开发流程,首先作为我们这个小人,这是我们的程序员嘛,就是我们每一位呃在座的听众啊,每天呢上班的就是开发啊,写代码,代码写完之后呢,嗯,通过这个eclipse或者idea所集成的这些构建工具啊,比如说美本啊,Grle啊,进行本机的单机的构建,然后跑一些特殊用例看一看效果。
01:10
然后呃,把这个代码呢,我们会嗯提交到呃,我们的代码托管服务器,也就是GI或者SVN,这个服务器呢,一般来说会有多个我们的程学共同使用,组成一个团队的开发的模型,大伙都向上去提交代码,然后最终呢,会由这么一个呃管理员或者是leader吧,比如我们团队当中有一个高层或者专门的有一个负责打包部署的这么一个程学,也有的团队呢,是由项目经理或者是技术经理去做这件事儿,把所有的代码全都给拉下来,就你你开发的模块和别人开发的模块啊,全都提交到一起之后呢,拉回来你手动进行集成啊,把所有的模块呢全都打包到一起,集成一个完整的项目。举个简单的例子来说,比如说我们有一电商项目,我开发的呢,可能是购物车这么一个模块,你呢开发的支付系统。
02:04
还有另外一个张三,他开发的是呃,我们的商品展示,还有一些其他的模块,很多人呢,一起协同办公,协同开发,管理员会把这些提交上来的代码整体做集成,整体做测试,全部都打包到一起,能够完整的运行起来,这么一个完整的项目,那么这会儿呢,全部都跑完跑通之后,会把我们的呃,这个袜包啊,或者说这个呃炸包,不管什么包,从整个这个项目呢,全部都集成到一起之后呢,部署到我们的内网测试环境里,测试服务器上,以供一些测试人员来使用,当没有问题的时候呢,再把这些代码,呃,这些模,这些已经编译好的这个炸包或者外包,部署到外网的公网服务器上,以供这个生产环境来使用,这是在我们管理员这个职责这,他需要去手动的去做集成构建和测试,所谓的集成就是把所有的模块全都给打包到一起,所有的功能模块构建呢,啊相当于把我们的源代码。
03:05
啊,编译完成成成为我们的目标的class文件。构建成一个完整的项目,包括它的相关的依赖,以及一些这个依赖冲突的排除啊,最后这个测试啊,也要跑一下做,在这儿呢,我们会专门的有这么一个专员专人呢,需要耗时耗力去做这件事儿,还有可能呢,会出现一些人为上的这种瑕疵和疏漏,就保证不了每次构建的都能成功啊,或者是呃,有什么代码提交的时候,那在冲突方面呢,解决的并不是特别好,那我们在开发的过程当中,可能只关注了我们自己自身的这个功能上的开发啊,有一些炸包上的依赖冲突,有一些代码上的依赖冲突都有可能会发生,所以在这呢,是非常繁重的一件事情啊,在一些传统公司里边,每到发版的日子,一般来说呢,所有的程序员测试,包括产品都会跟着一块儿加班,很多时候呢,一忙就会忙一宿,所以我们提出来了用jacks去做这种自动化的持续集成和持续构建,持续测试。
04:09
包括持续的这个,呃,发布。能够有效的呃减少我们这个管理员他自身的这个工作上的负担,让所有的这些工作呢变得自动化,同时也能够更加及时的去帮我们去完成这一系列工作,当用户,也就是我们的呃这个开发人员把代码提交到get上之后,我们可以按照时间段或者是按照一些条件来完成自动化的构建集成,包括我们的测试,也可以帮我们去一块儿跑出来。把我们的这个,呃,测试的报告,比如说有哪些功能模块啊,没有跑通的。全部都在,呃整体跑完之后呢,发送给我们相关的研发人员,这样的话啊,虽然说没有我们啊这个及时的去帮我们解决这个bug,但是能够让我们更快速的去找到系统当中有哪些问题,这就是jackins所处的地位,他能够替代掉一个人,让我们来把这个,呃集成测试这个工作呢,嗯,安排在每一天啊,一般来说有一些敏捷的团队,他会在每天晚上去构建一次代码。
05:15
啊,如果要是有一些传统的项目呢,它并不需要每天去构建,基本上每周也可以构建一下,以至于我们不呃以不至于啊,我们呃在错误的路上呢,越走越远啊,到最后统一继承的时候呢,就非常有可能呃出现这个特别严重的这种冲突啊,大伙儿一解决就需要好几天的时间,这是jackins给我们带来最直观的好处。那么在这儿呢,Jackins它也是由Java语言开发出来的这么一套软件啊,或者说它是一套管理系统,它能够有机的把我们所有的呃这个开发的环节全部都给连接到一起啊,从源代码托管服务器上呢,我们可以把源代码拉取到jackins服务器上,然后jackins呢,啊,依托于我们呃一些额外的插件,比如说他也能够去运行这个maven或者grale,帮我们去在本机jackin的本机去完成构建啊,替掉替换掉了成这个管理员这一部分操作构建完成之后。
06:15
一旦要失败了啊,它会发送报告,成功之后呢,会帮我们去跑测试用例,测试用例跑完之后也没什么问题,还可以帮我们去在构建完成之后,自动化的把构建好的炸包或者挖包帮我们发送到目标服务器上,也就是我目标这个测试服务器上,以供我们的测试人员啊,直接来跑一些他的这些,呃,其他这些测试用例啊,那在座的小伙伴啊,如果你已经有了研发经验,比如说工作了一两年,你会深深深的感受到这个发版给我们带来的这种痛苦,那么一旦又有了jackins之后啊,这个过程呢,就变得更加美好了一些,那jackins他能打出来的这个口号也是no war啊,这个WARWAR包嘛,啊,就没有这种战争,一到发版的时候呢,互相扯皮,然后呢,互相这个推卸责任啊,当然如果要是直接压根把这个问题给他给规避掉,那么到这会儿我们也不至于的产生一些这种呃,口角上的或者。
07:15
就是这个啊,责任上的这种这种纷争了啊,这是ins能给我们带来的好处。
我来说两句