手工搭建vc自动构建服务器

       在软件开发过程中能有一台实现自动构建代码、产生与svn关联的版本、定时输出代码行数和圈复杂度等报表的自动构建服务器是非常重要的,但可惜的在国内除掉一些特别大的公司之外很多软件公司都没有自己的自动构建服务器,甚至连自动构建的意识都还没有。本文主要介绍的就是通过公共资源搭建简单实用的自动构建服务器。

 

第一步:准备硬件环境

1)准备一台服务器,如果没有pc机也行

2)如果不想把svn服务器和自动构建服务器放在一起,需要再增加一台服务器,有钱可以好一点,没钱能跑就行。

 

第二步:搭建svn服务器

1)如果svn服务器已经存在,跳过。

2)在网上下载svn服务器安装包,安装方法网上大把,这里不介绍

3)为自动构建服务器分配一个只有读取权限的账号

 

第三步:创建测试工程

1)在一台安装了svn客户端TortoiseSVN软件的机器上创建一个vc 6.0测试工程,比如:version

2)把version工程添加到svn服务器

 

第四步:配置自动构建服务器环境

1)在配置服务器上svn客户端TortoiseSVN软件

2)使用分配给构建服务器的账号从svn服务器上chickout测试工程代码,存放到指定目录,比如:E:\test2

3)运行cmd,执行以下命令:

         TortoiseProc.exe /command:update /path:"E:\version"  /closeonend:2

      看是否可以从svn服务器上更新到最新的代码

4)安装SourceMonitor代码统计软件

5)把SourceMonitor的安装目录添加到环境变量的path中

6)安装vc6.0

7)创建存放构建程序,代码统计报表的目录,比如:D:\version,把该目录设置为共享。

8)运行cmd,执行以下命令:

            msdev  version.dsw  /make "all"   /rebuild

       看是否可以完成对工程全编译。

       注意:不可以不间断的连续执行。

 

第五步:产生与svn关联的程序版本

1)剪切version.rc的版本信息,如下:

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "Comments", "Sample Application\0"
VALUE "CompanyName", "Microsoft Corp.\0"
VALUE "FileDescription", "MyProject MFC Application\0"
VALUE "FileVersion", "1, 0, 0, 1\0"
VALUE "InternalName", "MyProject\0"
VALUE "LegalCopyright", "Copyright (C) 1999\0"
VALUE "OriginalFilename", "MyProject.EXE\0"
VALUE "ProductName", "MyProject Application\0"
VALUE "ProductVersion", "1, 0, 0, 1\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END

剪切到version.rc2文件的// Add manually edited resources here...下,并进行修改如下:
VS_VERSION_INFO VERSIONINFO
FILEVERSION FILEVER
PRODUCTVERSION PRODUCTVER
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "080404b0"
BEGIN
VALUE "Comments", "\0"
VALUE "CompanyName", "\0"
VALUE "FileDescription", "22 Microsoft 基础类应用程序\0"
VALUE "FileVersion", STRFILEVER
VALUE "InternalName", "22\0"
VALUE "LegalCopyright", "版权所有 (C) 2007\0"
VALUE "LegalTrademarks", "\0"
VALUE "OriginalFilename", "22.EXE\0"
VALUE "PrivateBuild", "\0"
VALUE "ProductName", "22 应用程序\0"
VALUE "ProductVersion", STRPRODUCTVER
VALUE "SpecialBuild", "\0"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x804, 1200
END
END

2)在version.rc2文件中添加#include "Version.h"

3)在工程中添加Version.h文件,内容如下:

      #define FILEVER 1,0,0,14
      #define PRODUCTVER 1,0,0,14
      #define STRFILEVER "1,0,0,14\0"
     #define STRPRODUCTVER "1,0,0,14\0"

    注意:VersionNo.h的最后一行一定要加回车

    其中FILEVER、PRODUCTVER、STRFILEVER、STRPRODUCTVER在version.rc2中使用,见上面version.rc2修改后的内容

4)编译,查看生成的exe版本是否与Version.h文件中配置的一致

5)在工程目录下添加Version_template.h,其中的内容如下:

      #define FILEVER        3.0.0.$WCREV$
     #define PRODUCTVER     3.0.0.$WCREV$
     #define STRFILEVER     "3.0.0.$WCREV$\0" 
    #define STRPRODUCTVER  "3.0.0.$WCREV$\0"

6)打开“cmd”,执行

       subwcrev  E:\test2\version Version_template.h  Version.h

     查看Version.h中的版本是否已经更新,并且版本最后一位与当前svn版本一致

     关于subwcrev的使用可以在网上查看相关资料。

7)编译,查看生成的exe版本是否更新

 

第六步:对于控制台程序需要手工添加资源文件

1)点击“插入--》资源”,进入插入资源对话框

2)选择“版本”插入,点击“保存”按钮

3)用记事本打开“.dsp”,添加rc文件文件路径到“.dsp”

 

第七步:代码自动统计配置

1)使用SourceMonitor创建统计version代码的工程名是“stat.smp”

2)在工程目录下建立stat_template.xml,内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!-- =======================================================================

导出sourcemonitor报表

======================================================================== -->
<sourcemonitor_commands>
<command>
    <project_file>E:\test2\version\stat.smp</project_file>
    <checkpoint_name>Baseline</checkpoint_name>
    <export>
       <export_insert>xml-stylesheet type='text/xsl' href='../../source.xslt'</export_insert>
        <export_file>bindir\version.xml</export_file>
        <export_type>1 (project summary as XML)</export_type>
    </export>
</command>
</sourcemonitor_commands>
3)在D:\version目录下建立展示代码统计的xsl样式文件:

<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <!-- Created by Edwin vd Burgt. No warranty whatsoever. Use and modify as you wish. -->

  <xsl:variable name="MaxComplexity">8</xsl:variable>
  <xsl:variable name="MaxDepth">6</xsl:variable>

<xsl:template match="/">
<html>

<head>
<title>代码统计</title>
</head>

<body>
<table>
 <tr style="height: 16.95pt">
  <td>项目</td>
  <td>结果</td>
 </tr>
 <tr style="height: 16.95pt">
  <td>代码量(k)</td>
  <td>
     <xsl:value-of select="number(sourcemonitor_metrics/project/checkpoints/checkpoint/metrics/metric[@id='M0']) div 1000"/>
  </td>
 </tr>
 <tr style="height: 16.95pt">
  <td>
     <xsl:value-of select="/sourcemonitor_metrics/project/checkpoints/checkpoint/metrics/metric[@id='M3']"/>
  </td>
4)检查是否能够正确输出代码统计报表,在工程目录下建立test.bat批处理文件

--------------------------------------test.bat  begin------------------------------------------------

:路径目录设置
Set nowtime=%time:~,5%
Set nowdate=%date:~,10%
set notime2=%nowtime: =0%
set bindir=D:\version\%nowdate:-=%\%notime2::=%

 

:创建路径

Md "%bindir%"

 

:动态设置存放输出报告路径

del E:\test2\version\stat.xml
setlocal enabledelayedexpansion
for /f "delims=" %%a in (E:\test2\version\stat_template.xml) do (
set aa=%%a
set aa=!aa:bindir=%bindir%!
echo !aa!>>E:\test2\version\stat.xml
)

 

:代码统计

SourceMonitor.exe /c E:\test2\version\stat.xml

------------------------------------------test.bat  end-------------------------------------------------

在“D:\version”目录下及子目录下是否有version.xml文件,打开version.xml显示如下内容:

项目

结果

代码量(k)

0.216

注释比例(%)

82.9

最大圈复杂度

1

加权平均圈复杂度

1.00

 

第八步:配置批处理脚本

完成以上工作以后在工程目录下新建一些配置文件

----------------------------------------------------------autobuild.bat  begin-----------------------------------------------

: 自动从svn上更新最新的文件

TortoiseProc.exe /command:update /path:"E:\version"  /closeonend:2

 

:自动产生版本号

 subwcrev  E:\test2\version Version_template.h  Version.h

 

:路径目录设置
Set nowtime=%time:~,5%
Set nowdate=%date:~,10%
set notime2=%nowtime: =0%
set bindir=D:\version\%nowdate:-=%\%notime2::=%

 

:设置保存编译日志路径

set buildlog=%bindir%\build.log

 

:设置拷贝文件路径
set  exePath=%bindir%\version.exe

 

:创建目录
Md "%bindir%"

 

: 工程全编译

msdev  version.dsw /make "all" /rebuild > "%buildlog%"

 

:拷贝生成文件文件
copy  E:\test2\version\Debug\version.exe   %exePath%

 

:动态设置存放输出报告路径

del E:\test2\version\stat.xml
setlocal enabledelayedexpansion
for /f "delims=" %%a in (E:\test2\version\stat_template.xml) do (
set aa=%%a
set aa=!aa:bindir=%bindir%!
echo !aa!>>E:\test2\version\stat.xml
)

 

:代码统计

SourceMonitor.exe /c E:\test2\version\stat.xml

------------------------------------------------------------------autobuild.bat  end-------------------------------------------

第九步:把autobuild.bat添加到“任务计划”中

1、点击“开始--->程序---->附件---->系统工具--->任务计划”,进入任务计划界面。

2、点击“添加任务计划”

3、添加autobuild.bat到任务计划

 

        好这样就完成了一个简单的vc 6.0简单自动构建服务器的搭建,大家可以通过“D:\version”这个共享目录下载到构建好的exe,代码统计,编译日志等。当然如果有必要还可以通过配置把编译日志中的错误、警告数字保存到另外专门的文件,其配置可以如下:

------------------------------------------------------------------例子-------------------------------------------

:路径目录设置
set buildlog=build.log
set warnstat=warnerr.txt

setlocal enabledelayedexpansion
for /f "delims=" %%a in (%buildlog%) do (
set aa=%%a
set aa=!aa!
echo !aa! | find "version.exe" && echo !aa! >> "%warnstat%"
)

-------------------------------------------------------------------------------------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值