分类目录归档:软件工程与软件方法学

如何保证一个项目可持续集成发布[转]

这俩天稍微有点空,赶紧补补功课。

持续集成就是利用所谓的cc,cruisecontrol工具对我们的项目进行持续的测试,得以保证项目可以保持持续的可发布状态。

但是光靠一个cc,肯定是无法解决这个问题的,还需要一套机制,这个就是敏捷管理。
需要我们把项目的需要开始调研做起,就要专业有深度,过程一丝不苟,进行严格的质量管控和结果输出,对于正式发布上线要严肃认真做好各种意外准备。从代码角度而言,要保证代码必须有测试代码,测试代码必须达到一定的覆盖率才有意义。而测试代码的加入必须意味着我们的项目必须层次清晰,结构分明,即所谓的mvc分层体系,方便测试用例针对各个层次进行不同的场景模拟和测试。

集成员通过配置CruiseControl工具,可以将部分较为简单、不需要人工干预和希望经常重复执行的集成工作交给工具来自动完成。集成员可以配置多个持续集成项目,包括若干个多人同时在开发的子构件、最终发布的集成包等。
CruiseControl在活动时段,循环执行各构建周期,包含:引导初始化—〉检测源码变化—〉集成构建—〉单元测试—〉发布构建和测试结果等步骤。
每当实施员在私有开发工作站上,将源码检入(Checkin)、加入源码控制(Add to Source Control)、或者向集成流(Stream)提交成果(delivery)时,CruiseControl在随后的构建周期循环中,将通过检测源码变化步骤检测到这一变化,CruiseControl此时会等待预定的间隔,看看是否有新的源码变化出现,避免实施员批量检入或加入源码控制时遗漏后续变更;CruiseControl开始调用Ant封装(wrapper)配置文件执行构建,它首先更新目标源码目录下的所有内容(调用ClearCase ccupdate指令),以同步变化的源码,再进行编译、链接,完成预定的冒烟测试,并将结果记录到相应的日志中;CruiseControl在构建完成后,通过e-mail将成功或失败的结果通知提交源码变更的实施员、以及指定的其他人员,并生成构建报告网页,相关人员通过e-mail接受通知的同时,也可以登陆CruiseControl的发布网页来浏览构建报告详细信息。

其他方面就不说了。附上一些关于cc的使用注意点。

CC可能需要用到下面一些工具
Ø CruiseControl
Ø Tomcat 或者 JETTY
Ø VisualSVN server
Ø Svnant
Ø svn-win32-1.6.5.zip
Ø TortoiseSVN(可选)
Ø Eclipse + subclipse插件(可选)

CC主要就是利用JAVA的一些特性和ANT工具以及SVN对我们的项目进行自动编译,自动检验,自动测试,自动生成一些测试报告,自动部署发布的一系列工作的应用程序。

linux下的部署反而相对方便些,在window下需要主要引入SVN的环境变量,否则无法使用SVN自动更新,windown下安装Subversion,然后把bin路径加入到环境变量中区,在cmd中输入svn试试,如果有结果说明SVN环境已经安装成功,然后就可以在config.xml中构建我们的CC环境。

CC主要包括几个东西,一个是时间控制器,用于管理执行的时间要求。一个是ANT的脚本的调用,可以调用具体的项目中的target任务执行。一个是java工具的使用,包括编译、打包等。一个是LOG日志的输出,可以产生各种格式的报表日志。另外支持一些插件,比如htmlmail插件,支持自动发送结果邮件到具体的邮箱。另外CC包括一个控制台,在控制台中可以查看各个项目执行测试的结果。

不说了,这个工具很重要,用过的人都知道的。

转自:http://xosadan.iteye.com/blog/1068938

BitNami Stack之一redmine安装及修改[转]

公司要求在redmine基础上开发FaceProject

下载bitnami-redmine-1.2.1-1-linux-installer.bin后安装倒不麻烦,

麻烦的是安装成功后如何改成FaceProject,

之前在windows 上修改过,现在又要在linux上修改,额滴神,

为了下次再做类似的事时不再忘记,特意写到博客上做个备忘。

在windows上需要修改的有
[bash]
/BitNami Redmine Stack/serviceinstall.bat

/BitNami Redmine Stack/servicerun.bat

/BitNami Redmine Stack/apps/FaceProject/scripts/redmineini.bat

/BitNami Redmine Stack/apps/FaceProject/scripts/serviceinstall.bat

/BitNami Redmine Stack/apps/FaceProejct/conf/redmine.conf

/BitNami Redmine Stack/apache2/conf/httpd.conf
[/bash]
 

而在linux下就不一样了,需要修改的有
[bash]
/opt/redmine-1.2.1-1/ctlscript.sh

/opt/redmine-1.2.1-1/apps/FaceProject/scripts/ctl.sh

/opt/redmine-1.2.1-1/apps/FaceProject/scripts/redmineini.sh

/opt/redmine-1.2.1-1/apps/FaceProject/conf/redmine.conf

/opt/redmine-1.2.1-1/apps/FaceProject/config/mongrel_cluster.yml

/opt/redmine-1.2.1-1/apache2/conf/httpd.conf
[/bash]
 

其他的修改还有很多是FaceProject中具体ruby类的修改了,我曾经尝试着将

windows下已经修改后的FaceProject直接upload到linux下,发现主要不同的地方有

FaceProejct/config(windows下没有mongrel_cluster.yml文件)

和FaceProject/tmp/pids(windows下没有该目录,如果linux无该目录,启动mongrel_rails报错)

其他差别暂时未发现。

 

windows下启动用manager-windows.exe即可管理各个服务的启动与停止

linux下启动关闭用
[bash]
/opt/redmine-1.2.1-1/ctlscript.sh start|stop|restart
[/bash]
如果成功会显示类似如下信息

111026 16:53:14 mysqld_safe Logging to ‘/opt/redmine-1.2.1-1/mysql/data/mysqld.log’.
111026 16:53:14 mysqld_safe Starting mysqld.bin daemon with databases from /opt/redmine-1.2.1-1/mysql/data
/opt/redmine-1.2.1-1/mysql/scripts/ctl.sh : mysql  started at port 3316
starting port 3001
starting port 3002
Syntax OK
/opt/redmine-1.2.1-1/apache2/scripts/ctl.sh : httpd started at port 80

 

数据库可以直接从已经配置好的windows mysql到出成utf8,再在linux下用命令导入即可。

如果不知道Bitnami Stack安装后的mysql用户名密码,可以到apps/FaceProject/config/database.yml中查看。

 

如果安装时没有选择配置邮件服务器或是需要修改邮件服务器配置,可以直接在

apps/FaceProject/config/email.yml中配置

内容大致如:
[bash]
production:
delivery_method: :smtp
smtp_settings:
address: smtp.yeah.net
port: 25
domain: yeah.net
authentication: :login
user_name: xxx

password: xxx

development:
delivery_method: :smtp
smtp_settings:
address: smtp.yeah.net
port: 25
domain: yeah.net
authentication: :login
user_name: xxx

password: xxx
[/bash]