手工搭建vc自动构建服务器
2017-08-29 21:58
183 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。
在软件开发过程中能有一台实现自动构建代码、产生与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显示如下内容:
第八步:配置批处理脚本
完成以上工作以后在工程目录下新建一些配置文件
----------------------------------------------------------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%"
)
-------------------------------------------------------------------------------------------------------------
在软件开发过程中能有一台实现自动构建代码、产生与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%"
)
-------------------------------------------------------------------------------------------------------------
相关文章推荐
- 手工搭建vc自动构建服务器
- 使用Hudson搭建自动构建服务器
- CI持续集成服务器搭建创建bot服务实现自动构建
- 使用Hudson搭建自动构建服务器
- 使用阿里云服务器搭建Android自动构建平台Jenkins
- LINUX系统服务器上搭建DHCP服务,实现两大基本功能:1,自动分配ip;2,手工指定ip
- Jenkins构建本地项目到服务器上自动部署的方法
- CentOS邮件服务器搭建系列—— POP / IMAP 服务器的构建( Dovecot )
- 搭建Pxe服务器无人听应答全自动安装CentOS6.7系统 推荐
- 构建网站运行平台 - 搭建本地服务器(二)
- Webpack详细入门教程(五)之构建本地服务器(eg:自动刷新页面)
- macos下使用jenkins+tomcat搭建自动构建环境的脚本配置
- Openssh服务器的搭建,并使用PSFTP实现文件自动上传,下载的script命令
- Centos上搭建SVN服务器并实现自动同步至web目录
- VMWARE 构建局域网 + VMWARE SQL Server 服务器搭建
- Linux下搭建SVN服务器及自动更新项目文件到web发布目录(www)
- VMware Workstation 12 Pro Ubuntu操作系统vmware怎么安装windows7,Ubuntu下 SVN 服务器搭建及使用快速构建SVN局域网服务器
- 搭建git服务器及利用git hook自动布署代码
- 使用idea搭建自己的SpringBoot initializer构建服务器
- 用华硕服务器搭配FreeNAS构建企业存储系统——华硕服务器IT硬件平台搭建大赛获奖方案 推荐