jenkins相关资料

jenkins相关资料 jenkins的前身是hudson,是为了做持续集成测试而诞生的框架. 简单说就是把代码流配置上去,然后该框架就能根据设定的时间或其他方式不间断的执行测试用例.并给出报告.这样就可以随时掌控代码质量.支持执行shell命令.支持短信通知等等. jenkins,首先从http://jenkins-ci.org/官方下载war包,然后有两种方式可以本地部署,一种直接执行 java -jar hudson.war,然后在本地的8080端口访问就可以了.另一种是我们希望部署在容器上,那么可以部署到tomcat,jetty等等.直接拷贝war包到对应的目录即可. 部署成功后,可以新建job,然后配置svn流,配置build时间,配置一下build之前的动作,配置一下各种命令,执行完成后通知等等就可以了. 最近因为有个功能感觉通过开发jenkins插件的方式会更加方便,周末大量读了一些文档,能找到的都是helloworl.摸索了一下,已经写出一个小的demo了,后面改进一下,.就ok了.先简单把这个过程中收集的资料整理一下.基本都看过觉得还不错的,官方文档不给力.下周希望可以写完,然后分享出来. jenkins入门文档 The hudson book Writing-first-hudson-plugin Hudson插件开发简介 Hudson插件开发入门体验 插件界面设计设计的各种tag介绍 官方插件开发 UI开发jelly介绍 jenkins入门(itech)

蓝绿发布的整个部署过程

一直听说蓝绿发布,不知道是怎么个过程. thanks toblue-green-deployment 蓝绿发布的意义 整个发布过程,用户没有感受到任何宕机或者服务重启。 蓝绿发布的过程 第0步:部署以前的配置 第1步: 把绿色集群的状态改为'备用’. 从负载均衡的池里把这些地址去掉,这样,绿色的集群就不再回接收到来自用户的请求了.转而进入备用负载均衡的池里. 第2步:在绿色集群里部署新的代码,直到应用启动成功 第3步:使用备用负载均衡简单测试一下备用集群的部署情况.理想状态下是全自动的. 第4步:把绿色备用集群的状态改成存货,于是进入了存活负载均衡的池里 看到 蓝色运行v1版本,绿色运行v2版本,都连接的是相同的数据库.这意味着v2版本也要在老的数据模型上运行.如果数据库有变更,要等到所有的集群升级到新的代码上. 第5步: 对蓝色集群也进行同样的操作. 最终v2代码完成部署. 第6步:根据情况.运行数据库迁移  

第一次给Spring-Framework贡献代码

鲁肃说建议去看Spring框架的代码,之前其实我想看来着,不过一看到还要gradlew,换jdk就好麻烦.这次各种折腾把代码fork下来,然后安装gradlew ,然后转换成eclipse支持的,期间升级了eclipse版本和jdk版本到8.否则会有个方法不支持, 流程很简单,先fork一下代码,然后自己改好提交上去,再去Spring框架的pull request请求一下.等大牛合并就行了. 刚开始看测试用例,我当时看到这个方法调用了一个下线的方法.于是改了一下.提交上去之后,**sbrannen ** 回复说: while you're at it, why don't you go ahead fix the related deprecated issues in all of the test classes in spring-jdbc 于是我把spring-jbdc包下面的几个方法调用都改掉了.记得谁说过,任何事情都不是别人的事情,你发现了你就要去做,不要等着别人去做,不会就去学.于是再次修改提交,sbrannen 问我有没有签CLA,这个坑爹的网站挂了.等了几天,昨天终于ok了.今天代码已经合并. 截图留念: https://github.com/spring-projects/spring-framework/commits?author=leizhiyuan 今天要吃两个煎饼果子.

Python学习资源

最近突然觉得需要学习一个轻便的语言,每次写个小工具啥的还要打开eclipse,很是不方便。于是学习了一下python,看看官方文档基本就可以上手了,剩下的就是多用了,个人用python写了个调用websevice的东西,suds这个库3.x已经不维护了,坑爹,需要使用http://pypi.python.org/pypi/suds-jurko 这个库代替,主要是为了批量测试mock的连通性的, 另外是python3.x和python2.x差异是在很大,我选了3…, 刚学习的人还是建议从2.x开始吧,否则很多源代码你下载回来基本运行不了。 本文是我在学习过程中看到的不错的文档,希望有所帮助。 先看官方文档,英文版觉得有难度看下中文版:Python3.4 入门指南 然后写写代码,小例子看看Python快速教程 遇到问题,可以去看看:stackoverflow python 百问 刚开始,你可能不知道module,package,这些都傻,先看看这篇文章python模块 如果你比较纳闷那个命名中的双下划线,但下划线都啥意思,看看单下划线和双下划线区别 之后,你可能想看看一个系统的组织,那么看看python最佳实践指南全版 如果你觉得上面的太多,看看中文的摘要版 后来我看到一个yield,不太明白,于是我看到了Python yield 使用浅析,只能说写的真是好,就是迭代器生成的 想看看正则?看看python正则表达式指南,非常全面 我只是想发个http请求,如果你用了python3.x,报错,Import error: No module name urllib,那么看看urllib这个坑,你可能要看看,你没有看错,他们合并了。。 Dive into Python 中文也看看,不要在意细节。 最后好像看看Expert Python Programming,因为我没看。

Spring揭秘-23章,Spring MVC初体验

鸟瞰Spring MVC与其他请求驱动的Web框架思路类似。org.springframework.web.servlet.DispatcherServlet就是Spring mvC中的Front Controller。负责处理请求,但是不针对具体的处理逻辑。而是委派给下一级的控制器,也就是org.

Spring揭秘-第13章 统一的数据访问异常层次体系

Spring揭秘-第13章 统一的数据访问异常层次体系 <span class="typ">Customer</span><span class="pln"> findCustomerByPK</span><span class="pun">(</span><span class="typ">String</span><span class="pln"> customerId</span><span class="pun">)</span><span class="kwd">throws</span><span class="typ">SQLExcepiton</span><span class="pun">;</span>

Spring揭秘-第三章IoC Service Provider读书笔记

我们虽然已经通过IoC声明了相应的依赖,但是最终总要有个啥东西将这些依赖对象绑定在一起,这里而IoC Service Provider, 来啦,表示一种绑定的实现方式,可以使一段代码,也可以是一组相关的泪,甚至是框架或容器。

《Spring揭秘》读书笔记-第二章IoC的基本概念

理念就是让别人为你服务,中文名控制反转,也叫依赖注入DI 假设这个类用来处理新闻,IFXNewsListener 用来获取新闻,IFXNewsPersister 用来把获取的新闻持久化当我们需要获取不同的新闻源,比如道琼斯的新闻时,我们会写一个DowJonesNewsListener类和DowJonesNewsPersister类,然后实例化 如果我们依赖于某个类或服务,最简单而有效的方式就是直接在类的构造函数中新建相应的依赖类。注意看,,我们都是自己主动地去获取依赖的对象!可是回头想想,我们自己每次用到什么依赖对象都要主动地去获取,这是否真的必要?我们最终所要做的,其实就是直接调用依赖对象所提供的某项服务而已能不能我们用的时候自动送过来呢?。现在是用什么,让别人直接送过来就成。所以,简单点儿说,IoC的理念就是,让别人为你服务!在图2-1中,也就是让IoC Service Provider来为你服务!这里,被注入对象就是FXNewsProvider,被依赖于对象IFXNewsListener和IFXNewsPersister 通常情况下,被注入对象会直接依赖于被依赖对象。但是,在IoC的场景中,二者之间通过IoC ServiceProvider来打交道,所有的被注入对象和依赖对象现在由IoC Service Provider统一管理。被注入对象需要什么,直接跟IoC Service Provider招呼一声,后者就会把相应的被依赖对象注入到被注入对象中,从而达到IoC Service Provider为被注入对象服务的目的。IoC Service Provider在这里就是通常的IoC容器所充当的角色。从被注入对象的角度看,与之前直接寻求依赖对象相比,依赖对象的取得方式发生了反转,控制也从被注入对象转到了IoC Service Provider那里这里我们想知道的是?怎么跟IoC Service Provider打招呼在IoC模式中,被注入对象又是通过哪些方式来通知IoC Service Provider为其提供适当服务的呢?三种打招呼的方式,即构造方法注入(constructorinjection)、setter方法注入(setter injection)以及接口注入(interface injection)。构造方法注入:  IoC Service Provider会检查被注入对象的构造方法,取得它所需要的依赖对象列表,进而为其注入相应的对象。setter方法注入  外界就可以通过调用setNewsListener和setNewPersistener方法为FXNewsProvider对象注入所依赖的对象了。接口注入,这个基本不用了。接口注入。从注入方式的使用上来说,接口注入是现在不甚提倡的一种方式,基本处于"退役状态”。因为它强制被注入对象实现不必要的接口,带有侵入性。而构造方法注入和setter方法注入则不需要如此。8q构造方法注入。这种注入方式的优点就是,对象在构造完成之后,即已进入就绪状态,可以 9马上使用。缺点就是,当依赖对象比较多的时候,构造方法的参数列表会比较长。而通过反射构造对象的时候,对相同类型的参数的处理会比较困难,维护和使用上也比较麻烦。而且在Java中,构造方法无法被继承,无法设置默认值。对于非必须的依赖处理,可能需要引入多个构造方法,而参数数量的变动可能造成维护上的不便。10qsetter方法注入。因为方法可以命名,所以setter方法注入在描述性上要比构造方法注入好一些。 11另外,setter方法可以被继承,允许设置默认值,而且有良好的IDE支持。缺点当然就是对象无法在构造完成后马上进入就绪状态。12综上所述,构造方法注入和setter方法注入因为其侵入性较弱,且易于理解和使用,所以是现在使用最多的注入方式;而接口注入因为侵入性较强,近年来已经不流行了。回到开头的代码  由于这里已经写死了,所以当我们添加了一个新的新闻源,比如M4网站的时候,这个对象不能用了,我们要新写一个M4NewsProvider的类,然后新写新闻获取类,然后重新实现。而使用了IoC之后,  我们只要实现一个MarketWin24NewsListener雷就可以,而且FXNewsProvider 可以重用。而且使用了IoC之后,单元测试变得简单,我们只有写一个MockNewsPersister就可以来测试了。