7. 自动编译调用接口文件规范
7.1. 概述
SCM工程师协助系统集成工程师根据此规范准备编译脚本,并验证编译脚本的规范性,反馈存在的缺陷。
7.2. 交付库(FTP)上传文件规则
为了保证版本的一致性,《产品项目工作成果清单》中列名的程序包、工具包文件必须通过自动编译工具上传到交付库上,而后让部署人员从交付库上获取,除非自动编译系统出现故障。
7.3. 自动编译规则
只要不是《产品项目工作成果清单》中列名的,也就是不在版本控制范围内的文件,可以不经过自动编译,方式不限,直接发给相关人员。
7.4. 获取文件方式
最终发布前,部署人员、测试人员需要从开发库中获取《产品项目工作成果清单》中列名的的文件,这些文件只有在最终发布时,才会由SCM工程师放到交付库上。
7.5. 自动编译的启动接口文件
要实现cruisecontrol下的自动编译,要求项目源代码必须能够以命令行方式完全自动编译,项目组和SCM工程师商定自动编译的启动接口文件名,比如build.bat或build.sh。
在项目源代码的根目录下添加build.bat或build.sh文件,内容为调用项目代码自动编译。
1. windows系统编译使用build.bat,linux系统编译使用build.sh;
举例:
在windows系统编译ant项目,在项目源代码的根目录下添加build.bat,内容如下
setlocal
if "%java.1.3.0%" == "" goto ERROR
if "%ant.1.5.0%" == "" goto ERROR
set JAVA_HOME=%java.1.3.0% //标红部分根据实际使用的版本号修改
set ANT_HOME=%ant.1.5.0%
set PATH=%JAVA_HOME%bin;%ANT_HOMEbin;%PATH%
ant //标红部分就是实际的编译程序,不同项目会不一样
IF %ERRORLEVEL% NEQ 0 GOTO ERROR
echo Succeeded!
endlocal
exit 0
:ERROR
ECHO Failed!
endlocal
exit 1
在linux系统编译ant项目,在项目源代码的根目录下添加build.sh,内容如下:
#! /bin/sh
if [ "${java_1_3_0}" = "" ]; then exit 1 ; fi
if [ "${ant_1_5_0}" = "" ]; then exit 1 ; fi
export JAVA_HOME="${java_1_3_0}" //标红部分根据实际使用的版本号修改
export ANT_HOME="${ant_1_5_0}"
export PATH="${ANT_HOME}/bin:${JAVA_HOME}/bin:${PATH}"
ant //标红部分就是实际的编译程序,不同项目会不一样
if [ $? -ne 0 ]; then exit 1 ; fi
2. 对接口文件的要求:
JAVA_HOME= 等这些定义,不要直接写绝对路径,用调用环境变量的方式,保证基本的可移植性;
build.sh或build.bat 不带任何参数时即执行编译,不要包括cvs的相关操作,这些都由CruiseControl去做了;
编译结果放在output目录下,CruiseControl会自动把output下的所有内容传到ftp上,但cvs中不能有output目录,需要在编译时新建;
build.sh或build.bat执行异常时要能中断退出,报exit 1,便于CruiseControl判断build.sh或build.bat执行是否成功;
build.sh或build.bat要放在cvs中的源代码的根目录下,作为源码的一部分,便于CruiseControl调用;
编译结果建议以tar、zip形式放在output目录下,便于使用。
8. 基线管理操作规范
8.1. 概述
对于产品中经过评审、批准的重要工作成果,SCM工程师需要根据此流程对该配置项进行基线管理。
8.2. 确认配置项
1. SCM工程师接收到项目组签字后的《工作成果签字确认表》、《阶段验收签字确认表》或“评审通过确认邮件”之后,确认要入基线的配置项的名称、版本、路径在开发库中是否确实存在且完全一致,是否符合《项目工作成果清单》说明,如果表中的信息不正确,需退回重新确认。
以工作成果确认表为例:(请看图中红字标注的几个注意点)
8.3. 获取配置项
1. 在Wincvs中,选择checkout(检出)或Update(更新)该配置项到本地;入基线时,必须根据指定的Rev.将配置项下载到本地。如图:
2. 检查配置项提交的格式是否正确,是否能正常打开。