【转】产品配置管理操作规范

  1. 开发库结构规范
  1.1. 概述
  本规范用于指导SCM经理创建开发库,保证开发库结构的通用性。
  1.2. 开发库结构规范
  开发库结构参考《开发库结构模版.zip》。
  2. 帐号命名规范
  2.1. 概述
  本规范归纳总结了配置管理过程中配置库的帐号命名规范。便于SCM工程师进行及时查询,保证用户帐号的唯一性和易用性。
  2.2. 开发库帐号命名规范
  开发库帐号的命名,主要依据用户的邮箱而定,根据邮箱不同而略有变化,每个用户的帐号名称统一为英文小写。如下:
  将邮箱域名中@变为“.”(不包括引号),然后作为cvs的登录帐号名称。
  例1:用户,李四
  邮箱为,lisi@***.com
  帐号为,lisi.***.com
  例2:同名用户,李四
  邮箱为,zblisi@***.com
  帐号为,zblisi.***.com
  2.3. 交付库帐号命名规范
  1. 与开发库的帐号名称要保持一致;
  2. 与开发库命名规范相同;
  2.4. sympa帐号命名规范
  1. 以对应开发库名字作为帐号开头;
  例1:开发库是scm
  sympa帐号为,scm@scm5.***.cn,scm-dept@scm5.***.cn等
  2.5. bugzilla帐号命名规范
  1. 每个用户以工作邮箱作为帐号;
  2.6. rt帐号命名规范
  1. 每个用户以工作邮箱作为帐号;
  2.7. tcedit帐号命名规范
  1. 每个用户以工作邮箱作为帐号;
  2.8. vpn帐号命名规范
  1. 与开发库的帐号名称要保持一致;
  2. 与开发库命名规范相同;
  3. 帐号需直属总监批准才能开通;
  2.9. 帐号密码命名规范
  1. 用户的帐号密码是由数字和字母随机生成的。例如:A86345、dFd438、7yue3s;
  2. 密码中不能包括“:”“@”等特殊符号;
  3. 每个帐号的密码是唯一的。
  2.10. 集团邮箱清单
  3. 帐号权限管理规范
  3.1. 概述
  公司为每个产品建立对应的开发库、交付库,为了便于管理项目组不同成员对配置库的访问权限,SCM工程师需要根据此规范进行操作。
  3.2. 帐号权限管理规范
  1. SCM经理在完成配置库的创建后的1个工作日内,给项目经理、产品经理,业务领域总监、QA工程师开通相关的配置库帐号,并发出“新建配置库的创建通知”或“不采用默认结构配置库的创建通知”或“新项目使用原有配置库的创建通知”邮件通知;
  2. 产品经理、项目经理从开发库获取《配置库结构及权限表》,将相关帐号、权限信息填入其中。完成后,将《配置库结构及权限表》作为邮件附件发给SCM工程师;
  3. SCM工程师应在收到邮件后的1个工作日内,完成帐号开通工作,发送“全体人员帐号通知”邮件给项目经理,同时抄送给帐号持有者、本领域总监、和QA工程师;
  4. 对于帐号、密码详细信息,SCM经理或SCM工程师须发送“CVS个人帐号通知”和(或)“FTP个人帐号上传权限通知”和(或)“FTP人帐号下载权限通知”单独邮件通知给各帐号持有人。
  5. 在某些特殊情况下,SCM工程师可以根据口头通知开通帐号、权限,但需同步更新《配置库结构及权限表》;
  6. SCM工程师需要长期保留收到、答复的开通、变更帐号、权限信息的相关邮件,存档备查。
  3.3. 权限的基本规则
  1. 权限按目录分别定义,避免对具体的文件定义权限;
  2. 权限按角色划分为权限组,不同的权限组有不同的权限,避免组与组之间权限相同;
  3. 不同的权限组有不同文档、源代码目录的权限,避免某个权限组有所有文档或源代码目录的权限;
  4. SCM工程师新建配置库时,提交的《配置库结构及权限表》中的权限信息是依照以上规则定义的默认权限,项目经理可以根据配置库的具体情况略做修改,但需符合以上规则;
  5. SCM工程师在开通、变更权限时,需检查是否符合以上规则,不符时需及时反馈确认。
  6. 开发库的权限一般不要超过三级目录。
 
4. 邮件列表管理规范
  4.1. 概述
  通过邮件列表将公司各邮箱用户按所在项目组的不同进行分组,类似于群发邮件的功能,它提供便捷的项目团队沟通方式。
  4.2. 邮箱地址规范
  邮件列表只用于集团内部沟通,邮件列表中的邮箱地址只允许使用集团邮箱。集团邮箱清单参见2.5节。
  5. 版本管理规范
  5.1. 概述
  按照一定的规则保存配置项的所有版本记录,避免发生版本丢失或混淆等现象,并且可以快速准确的查找到配置项的任何版本。
  5.2. 源代码的版本命名规则
  1. 一般格式:“英文项目名或模块名.项目版本.流水号”。
  其中,项目版本格式:“主版本号.子版本号[.修正版本号]”;
  例如:
  webshop.3.0.2.1。其中,webshop,是英文项目名;3.0.2,是项目版本;1,是流水号;
  webshop.3.0.2.12。其中,webshop,是英文项目名;3.0.2,是项目版本;12,是流水号。
  2. 维护项目格式:“英文项目名或模块名.维护项目版本.流水号”。
  其中,维护项目版本格式:“{sp|fix|hotfix|…}主版本号”;
  例如:
  ***.sp1.1。其中,***,是英文项目名;sp1,是维护项目版本;1,是流水号。
  5.3. 文档的版本命名规则
  1. 一般格式:“v.项目版本.流水号”;
  其中,项目版本格式:“主版本号.子版本号[.修正版本号]”;
  例如:
  v.3.0.2.1。其中,v,是固定前缀;3.0.2,是项目版本;1,是流水号。
  2. 维护项目格式:“v.维护项目版本.流水号”;
  其中,维护项目版本格式:“{sp|fix|hotfix|…}主版本号”;
  例如:
  v.sp1.1。其中, v,是固定前缀;sp1,是维护项目版本;1是流水号。
  5.4. 版本的TAG标识
  1. 源代码和文档的版本号在开发库中用tag进行标识,由于CVS规定tag中不能有“.”,因此,版本中的“.”在tag中用“-”替换;
  2. 一般格式:“英文项目名或模块名-项目版本-流水号”、“v-项目版本-流水号”;
  其中项目版本格式:“主版本号-子版本号[-修正版本号]”
  例如:webshop-3-0-2-1、webshop-3-0-2-12、v-3-0-2-1。
  3. 维护项目版本格式:“英文项目名或模块名-维护项目版本-流水号”、“v-维护项目版本-流水号”;
  其中维护项目版本格式:“{sp|fix|hotfix|…}主版本号”
  例如:***-sp1-1、v-sp1-1。
  6. 自动编译操作规范
  6.1. 概述
  为保证开发库中源代码与交付库中程序包的一致性,提高源代码的编译效率,SCM工程师需要依据此规范进行自动编译的操作。
  6.2. 确定编译信息
  SCM工程师需根据《项目编译手册》、《虚拟机清单》的内容确定编译机、编译工具、编译所需环境变量等信息。
  6.3. 搭建自动编译客户端编译环境
  搭建客户端编译环境主要针对环境变量的配置,和编译工具的安装。
  例如,编译信息中指定安装apache-ant-1.6.5,定义环境变量ant1.6.5:
  1. 在编译机器上安装此程序;
  2. 找到cc-agent的安装文件夹,以记事本的形式打开start.bat,并填写一条环境变量记录:set ant1.6.5=e:apache-ant-1.6.5;
  6.4. 建立builder用户
  SCM工程师建立builder用户到该项目,并分配到BD权限组里面,便于编译系统能通过builder用户获取源代码。
  修改tagcheck文件,便于自动锁定自动编译标记的源代码tag。
  tagcheck文件示例如下
  #! /bin/sh
  # TAG add/mov/del repo files...
  # $1 $2 $3 $4 ...
  case "$1" in
  v-*)
  case "$CVS_USER" in
  zbwangjian | fengcui)
  exit 0 # ok;;
  *)
  echo "$CVS_USER does not have permission to perform this tag operation!" 1>&2
  exit 1;;
  esac;;
  DataCenter-*)
  case "$CVS_USER" in
  builder)
  exit 0 # ok;;
  *)
  echo "$CVS_USER does not have permission to perform this tag operation!" 1>&2
  exit 1;;
  esac;;
  *)
  exit 0 # not reserved, ok.;;
  esac
  6.5. 配置自动编译服务器端环境
  自动编译客户端环境变量及工具配置完成后,开始对自动编译服务器端进行配置。
  1. 首先,进入到自动编译服务器端的如下目录:
  $cd /cruisecontrol/projects/project11/
  在该目录中可以看到两个xml格式的模版:0linux.xml和0windows.xml分别针对linux系统的编译机和windows系统的编译机。根据实际编译机系统情况进行选择复制,并将名称修改为“英文项目名或模块名-项目版本.xml”的形式,名称开头必须和开发库名称一致,以保证tag锁有效。
  以0linux.xml为例,介绍一下如何修改配置文件。
  (“*”号处为需要修改的内容,“#”号后为注释)
  <?xml version="1.0" encoding="GBK"?>
  <cruisecontrol>
  <project name="***" buildafterfailed="false"> #英文项目名或模块名-项目版本,如***-1-0
  <property name="module" value="***/***"/> #编译脚本所在目录
  <property name="module2" value="***/***"/> #检出到本地的编译脚本所在目录(windows注意斜杠方向为“”)
  <property name="ftp2.dir" value="/repository/ftpdata/***/Output/${project.name}"/> #项目配置库名称,比如cvstrain
  <property name="tag" value="***"/> #系统集成工程师打上的tag号,为了便于记忆,取编译脚本名称中“.”的前缀作为tag号,例如:编译脚本名称是“build.sh”,tag就是“build”
  <property name="buildfile" value="***.sh"/> #编译脚本名称,例如:build.sh,windows为build.bat
  <property name="cvsroot" value=":pserver:builder:***@scm3.***.cn:/repository/***"/> #输入所建立builder的密码
  <property name="agent" value="agent.name=***"/> #编译服务器的agentname,可以到《虚拟机清单.doc》中查询到
  <property
  name="buildresultsurl" value="http://scm3.***.cn:8080/cruisecontrol/buildresults/${project.name}"/>
  <property name="mailto" value="***@***.cn"/> #执行编译操作人员的邮件地址,若有多人需接收时,使用邮件列表
  <property name="mailhost" value="mail.***.cn"/>
  <property name="returnaddress" value="cruise@mydomain.com"/>
  2. 然后,返回上一级目录,配置config.xml文件。
  该文件信息如下:
  <cruisecontrol>
  <property name="cruise.dir" value="/opt/cruisecontrol-2.7.1"/>
  <property name="jetty.dir" value="/opt/jetty-6.1.6"/>
  <property name="log.dir" value="${cruise.dir}/logs/${project.name}"/>
  <property name="checkout.dir" value="${cruise.dir}/checkout/${project.name}"/>
  <property name="output.dir" value="${cruise.dir}/output/${project.name}"/>
  <property name="ftp.dir" value="/repository/ftpdata/${project.name}/Output" />
  <property name="status.file" value="${log.dir}/status.txt"/>
  <pluginname="distributed" classname="net.sourceforge.cruisecontrol.builders.DistributedMasterBuilder"/>
  <pluginname="labelincrementer" classname="net.sourceforge.cruisecontrol.labelincrementers.CVSLabelIncrementer"/>
  <include.projects file="${cruise.dir}/projects/***"/> #项目xml文件的路径
  <system>
  <configuration>
  <threads count="20"/>
  </configuration>
  </system>
  </cruisecontrol>
  至此,编译环境配置完成。
  6.6. 显示编译项目记录
  打开cruisecontrol编译页面,例如http://scm1.***.cn:8080/cruisecontrol5/,并没有新建的编译项目记录,此时,应该先点击预先设计好的一个测试项目工程,例如cvstrain-win-5-0,点击build按钮,触发后就看到了刚新建的编译项目记录。
  6.7. 记录编译环境信息
  编译环境搭建完成后,
  1. SCM工程师记录编译环境信息到《项目基线记录表》中;
  2. SCM工程师回复邮件“自动编译通知”给系统集成工程师;
  3. 系统集成工程师按照邮件中提示进行操作,给需要编译的代码打约定的tag号,然后登陆相关页面进行编译工作。
  注意:
  1. 如果该项目并非第一次进行自动编译,可以简化以上操作:
  SCM工程师检查《项目编译手册》和前序版本的《项目编译手册》,如果编译环境说明相同,就可以仅对自动编译服务器端配置新的编译项目记录。
  首先,进入到自动编译服务器端的如下目录:
  $ cd /cruisecontrol/projects/
  在该目录中可以选择该项目的前一版本的xml文件作为模板,进行复制,并将名称修改为此次项目的版本名称,形式为“英文项目名或模块名-项目版本.xml”。
  进入该配置文件,修改project name为本次项目名称,如果没有特殊说明,其他都同之前版本,配置完成后,保存退出。
  然后,返回上一级目录,配置config.xml文件。复制前一版本的include节点信息,并修改xml文件名字为上面修改的.xml文件的名字即可。
  l 搭建完成后,SCM工程师回复邮件“自动编译通知”给系统集成工程师。
  2. 编译过程中,若有问题,SCM工程师需及时协助编译人员解决问题,直至编译成功;
  3. 自动编译系统故障、网络故障等情况,暂时无法使用自动编译时,SCM工程师要以邮件方式通知相关QA和SCM经理,获得批准后,由SCM工程师根据系统集成工程师提供的tag号,按规范标注新的tag号,手动编译,手动上传至交付库(FTP)上,交付库目录的规则为:最后成功自动编译tag号-*(*为字母a,b,c…),比如:VOMS-1-1-7-a,VOMS-1-1-7-b
  4. 经批准暂不采用自动编译的项目,由系统集成工程师或SCM工程师手动编译,由SCM工程师手动上传至交付库(FTP)上,交付库目录的规则为:tag号-a,比如:VOMS-1-1-7-a,VOMS-1-1-8-a;记录不采用自动编译的原因到《项目基线记录表》中,比如:经批准不做自动编译
posted @ 2015-09-16 11:00  我只吃大碗  阅读(397)  评论(0编辑  收藏  举报