技术开发 频道

实战每晚构建之分析模型

    类描述

    经过分析不难知道,所有的构建信息用非结构化数据来描述比较合适。在这里可以做一个决策:要求他们是独立的,也就是说进入相应的信息地址,它们可以自我显示;需求定义要求用www的方式浏览这些信息,所以同时要求他们对普通的browser是可浏览的。我们没必要用类来描述这些信息。

    构建显示信息系统只有一个类来显示构建信息目录:每晚构建显示类(NightlyBuild)

    另外从上下文图和数据流程图,我们可以得到我们构建系统的类:操作系统定时服务(OSScheduler),构建管理服务(BuildAdmin),应用项目构建服务(ProjectBuild)。

    两个系统之间有一个定义构建信息存放位置的类BuildInfoDir,这个类定义了两个系统之间的协议。

    注意书写约定:

    ${变量名}为取变量名所代表的值的含义。

    构建信息存放位置类 类名 构建信息存放位置类 类英文名 BuildInfoDir

    成员变量

    变量名 变量说明

    nightly_Build_Tags 保存所有的构建标签,是构建标签列表

    logTopDir 保存构建管理服务运行的日志的目录

    statCVSTopDir 保存了所有应用项目的项目度量结果的顶层路径

    projectLogTopDir 保存了所有应用项目构建服务实例运行日志的顶层路径

    testCoverTopDir 保存了所有应用项目的测试覆盖率计算结果的顶层路径

    distTopDir 保存了所有应用项目的发布版的顶层路径

    testTopDir 保存了所有应用项目的测试结果的顶层路径

    方法

    方法名 参数 执行步骤 方法说明

    每晚构建显示类

    类名 每晚构建显示类 类英文名 NightlyBuild

    成员变量

    变量名 变量说明

    方法

    方法名 参数 执行步骤 方法说明

    list_ Buildinfo_table (1)读取nightly_Build_Tags内容,格式化显示每个构建标签指示的构建信息目录。

    操作系统定时服务

    类名 操作系统定时服务 类英文名 OSScheduler

    成员变量

    变量名 变量说明

    方法

    方法名 参数 执行步骤 方法说明

    excute 利用系统当前时间形成日志文件名;

    执行BuildAdmin的excute()方法,并把BuildAdmin的正常输出和错误输出记录到日志文件名中;

    保存日志文件到${logTopDir}指定的目录中。

    启动构建管理服务并记录日志

    构建管理服务

    类名 构建管理服务 类英文名 BuildAdmin

    成员变量

    变量名 变量说明

    cvsroot 保存了cvsroot环境变量

    buildDir 保存了临时存放应用项目源代码的路径

    方法

    方法名 参数 执行步骤 方法说明

    cvs_check_out 应用项目cvs系统中的名字 利用cvsroot 登录cvs系统;

    执行cvs co指令,把参数制定的应用项目源代码取出并放在成员变量${buildDir}指定的目录/项目名字/目录下。

    从cvs中取出项目源代码

    statcvs module:应用项目cvs系统中的名字;

    project_Build_Tag:每个项目的当前构建标签

    (1) 对源代码进行项目度量,并把结果放在${statCVSTopDir}目录下的${project_Build_Tag}目录下。 对源代码进行度量execute 对每一个应用项目执行:

    cvs_check_out

    statcvs

    执行ProjectBuild的execute()方法

    应用项目构建服务

    类名 构建管理服务 类英文名 BuildAdmin

    成员变量

    变量名 变量说明

    project_Build_Tag 保存了当前正在构建的项目由项目名称和当前系统时间组成的构建标签

    方法

    方法名 参数 执行步骤 方法说明

    test_project 为测试而编译连接源代码;

    安装测试版产品;

    测试产品;

    计算测试覆盖率;

    输出测试结果到${testTopDir}指定目录下的${project_Build_Tag}目录下;

    输出测试覆盖率结果到${testCoverTopDir}指定目录下的${project_Build_Tag}目录下;

    dist_project 编译连接源代码;

    安装发布版产品到${distTopDir}指定目录下的${project_Build_Tag}目录下。

    execute 执行test_project方法

    执行dist_project方法

    把两个方法的日志合并成一个日志文件,命名为${project_Build_Tag}.txt,并把其放在${ projectLogTopDir }指定的目录下。

    执行场景

0
相关文章