posts - 62, comments - 41, trackbacks - 0, articles - 0
   :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

谈谈我们项目的部署策略

Posted on 2008-05-08 12:23 马达+斯加 阅读(930) 评论(1)  编辑  收藏 所属分类: Websphere Portal

E项目终于在年初出街了,进入维护期,由于deployment team人手短缺,被调去做parttime了。
一直都知道deployment不是一个好差事,千躲万躲都还是没躲掉,唉,既来之则安之吧。
E项目分了DEV, SIT, UAT, PRE-PRODUCTION, PRODUCTION数个环境,各自有WAS, WPS, DB, COGNOS, EFORM数台服务器,单是理清这一堆东西就已经甚是复杂了。而我们的部署策略是:DEV, SIT, UAT, PRE-PRODUCTION 是 daily, PRODUCTION受CCC控制,定期发布版本。最要命的是,deployment一定是非办公时间做,任务那是相当的繁重,因此,如何减轻工作量,减少其中的人为疏忽是首当其冲的任务。

首先需要解决的是各个不同环境的配置问题。
这个前人已经搞好了,在workspace中针对不同的环境,在相应的文件夹下准备好不同配置文件。例如:
|-Web
|  |-config.xml
|
|-Deployment
   |-DEV
   |  |-Web
   |     |-config.xml
   |-UAT
      |-Web
         |-config.xml
利用RSD导出部署用ear, war文件后,编写一个批处理命令解开包,然后用不同环境里面的配置文件覆盖掉,再重新打包。这样,针对不同环境的部署包只需要制定不同的文件目录就可以了。

接下来就是把准备好的包upload到不同的环境中部署了,我们考虑的只有一个:自动化!
以前使用WAS的admin console需要stepbystep的去做,太麻烦了,利用jacl文件就简单多了:stop_app.jacl, uninstall_app.jacl, install_app.jacl, start_app.jacl四个命令就一气呵成了(参考http://www.ibm.com/developerworks/websphere/library/samples/SampleScripts.html)。
WPS的部署也可以通过配置几个xml搞定(参考http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0303_buczak/buczak.html)。

接下来把这几个动作都串起来:用pscp命令上载包,用plink命令调部署script,再用clearcase的命令(见最后)做一个baseline,一个命令就能搞定daily deployment啦!

PRODUCTION的deployment就没这么轻松了,客户的PRODUCTION环境受严格控制的,顺便也吹一吹我们的流程吧:
12:00 Cutcode from UAT, deploy to PRE_PRODUCTION to verify, 俗称“过冷河”
16:00 Prepare packages.
18:00 Data path, deploy Cognos reports, eForm templates
19:30 Call TSS 开始部署WAS(三个集群)
21:30 call TSS 开始部署WPS(四个集群)
24:00 要是还没做完,或者出错的话,TSS就会还原部署前备份。

Clearcase make baseline command:
@echo OFF
setlocal

set defaultViewName=XXXXX

set timestampStart=%date:~6,4%%date:~0,2%%date:~3,2%_%time:~0,2%%time:~3,2%

set defaultBaselineName=XXXXX_%timestampStart%


if "%1"=="" set viewName=%defaultViewName%
if not "%1"=="" set viewName=%1

shift

if "%1"=="" set baselineName=%defaultBaselineName%
if not "%1"=="" set baselineName=%1_%timestampStart%

echo =============================================
echo ViewTag=%viewName%
echo BaselineName=%baselineName%
echo start creating baseline at %timestampStart%
echo =============================================

if "%viewName%"=="" echo Fatal Error: viewName is mandatory!
if "%viewName%"=="" goto endAnchor
if "%baselineName%"=="" echo Fatal Error: baselineName is mandatory!
if "%baselineName%"=="" goto endAnchor

cleartool mkbl -nc -incremental -view %viewName% %baselineName%

:endAnchor
set timestampEnd=%date:~6,4%%date:~3,2%%date:~0,2%%time:~0,2%%time:~3,2%
echo =============================================
echo update mainstream at %timestampStart% (start)
echo update mainstream at %timestampEnd% (end)
echo =============================================


 

Feedback

# re: 谈谈我们项目的部署策略  回复  更多评论   

2008-05-13 09:36 by lizhiyang
说啥呢?

标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交