TFS build server搭建,搭建自动化构建服务器
TFS build 服务器的搭建主要步骤如下:
一:环境准备:
- 新建一台build服务器
- 安装Visual Studio。主要目的是: a. 生成Build脚本所需要的build命令;b.与TFS组合,方便下载最新源代码
- 安装TFS。在Build Server触发build时,会通过tfs的命令从源代码服务器下载最新代码
- 安装InstallShield。通过InstallShield命令自动打包软件包
- 启动Visual Studio,手动Mapping源代码到build server本地目录。(供源代码下载使用)
二:脚本代码的编写(.bat),以下是bat脚本文件的工作流程
- 启用Visual Studio tool,这样就可以使用visual studio的命令。
- 删除本地的所有代码
- 从服务器下载最新的源代码
- 开始触发最新源代码的Build
- 开始触发InstallShield项目的build
- 把最新生成的软件包.exe上传到某个文件夹备用
- checkout 项目源代码的版本文件并+1,大于9999则从1重新开始。
- checkout InstallShield的版本文件并+1
- checkin 以上两个文件,供下次使用。
三:编写一个计划任务,自动调用步骤二中的.bat脚本,完成build server的搭建
四:代码示例
以下是一个示例,共有两个文件,一个.bat文件,一个vbs文件。
.bat文件是整个build脚本的入口,负责整体build server脚本的流程和大部分的工作
.vbs文件主要是用来取出文件的版本信息;版本信息加1;并把新的版本号重新写入存储版本的文件
下面是这两个文件的代码,部分隐私信息已用*号处理
AutoBuildScript:
@echo off ::Need to manually configure the Path
set VisualStudio2010Tool="C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86
set SourceCodeItemSpecPath="$/Company_1003/Product/dev/EGS/Product/source/Product/App/eProduct/eProduct-1.7.0/CLK/source/eProduct"
set InstallshieldCommandTool="C:\Program Files (x86)\InstallShield\2012\System\IsCmdBld.exe"
set TeamforgeProjectName="eProduct 1.7"
set TeamforgePackage="eProduct 1.7" ::Relative Path, Manually configure if needed
::SourceCodeFolder e.g. "C:\Code\eProduct1.7\eProduct-1.7.0\CLK\source\eProduct"
set SourceCodeFolder=%~f0\..\..\eProduct
set ForceDownloadLatestSourceCode=True
::BuildSolutionFile e.g."C:\Code\eProduct1.7\eProduct-1.7.0\CLK\source\eProduct\2008sln\eProduct.sln"
set BuildSolutionFile=%~f0\..\..\eProduct\2008sln\eProduct.sln
::BuildModel e.g. Debug or Release
set BuildModel=Release
::eProductDriverProject e.g. "C:\Code\eProduct1.7\eProduct-1.7.0\CLK\source\eProduct\ProductNameeProductDriver\ProductNameeProductDriver.ism"
set eProductDriverProject=%~f0\..\..\eProduct\ProductNameeProductDriver\ProductNameeProductDriver.ism
::TeamforgeUploadExecutableFile e.g. "C:\Data\SFEEUploadFiles\UploadFiles.exe"
set TeamforgeUploadExecutableFile=%~f0\..\SFEEUploadFiles\UploadFiles.exe
::DriverReleaseFilePath e.g. "C:\Code\eProduct1.7\eProduct-1.7.0\CLK\source\eProduct\ProductNameeProductDriver\ProductNameeProductDriver\PROJECT_ASSISTANT\Release 1\DiskImages\DISK1"
set DriverReleaseFilePath="%~f0\..\..\eProduct\ProductNameeProductDriver\ProductNameeProductDriver\PROJECT_ASSISTANT\Release 1\DiskImages\DISK1"
::e.g "C:\Code\eProduct1.7\eProduct-1.7.0\CLK\source\eProduct\libfsl\include\version.h"
set VersionFilePath=%~f0\..\..\eProduct\libfsl\include\version.h
::e.g. "C:\Code\eProduct1.7\eProduct-1.7.0\CLK\source\eProduct\ProductNameeProductDriver\ProductNameeProductDriver.ism"
set DriverFilePath=%~f0\..\..\eProduct\ProductNameeProductDriver\ProductNameeProductDriver.ism
::e.g. C:\Code\eProduct1.7\eProduct-1.7.0\CLK\source\eProduct\ProductNameeProductDriver\ProductNameeProductDriver\PROJECT_ASSISTANT\Interm\IsConfig.ini
set DriverConfigFilePath=%~f0\..\..\eProduct\ProductNameeProductDriver\ProductNameeProductDriver\PROJECT_ASSISTANT\Interm\IsConfig.ini
::e.g. C:\Code\eProduct1.7\eProduct-1.7.0\CLK\source\eProduct\Product\2008win32\
set eProductReleaseFilePath=%~f0\..\..\eProduct\Product\2008win32\
set ModifyVersionVBSFilePath=%~f0\..\autoincreaseversionnumber.vbs
set eProductDriverFilesPath=%~f0\..\..\eProduct\ProductNameeProductDriver\eProductDriverFiles
set eProductDriverCreatePath=%~f0\..\..\eProduct\Product\2008win32\Create @echo on echo Set the vs 2010 command tool as the default command prompt.
call %VisualStudio2010Tool% echo Start to download source code from TFS
if not exist %SourceCodeFolder% ( echo please maping the tfs source code to build server local folder
echo Build Failed.
exit )
echo Delete the old source code
rd %SourceCodeFolder%/s/q echo Downloading source code...
IF %ForceDownloadLatestSourceCode% EQU False (tf get %SourceCodeItemSpecPath% /recursive) ELSE (tf get %SourceCodeItemSpecPath% /all /recursive)
echo Download source code Finished. echo Start Build the solution
MSBuild %BuildSolutionFile% /property:Configuration=%BuildModel%
echo Build Finished. echo Start to build Installshield Project
tf checkout %DriverConfigFilePath% echo Copy files under Create folder to eProduct Driver installer
rd /s /q %eProductDriverFilesPath%
md %eProductDriverFilesPath%
xcopy /E /F /Y %eProductDriverCreatePath% %eProductDriverFilesPath% %InstallshieldCommandTool% -p %eProductDriverProject%
echo Build Installshield Project Finished echo Start checkout and increase version number, then checkin the increased version number tf checkout %VersionFilePath% %DriverFilePath% for /f "delims=" %%i in ('cscript //nologo %ModifyVersionVBSFilePath% %VersionFilePath% %DriverFilePath%') do set "d=%%i"
set TeamforgeVersion=%d% tf checkin %VersionFilePath% %DriverFilePath% /comment:"Build Server New Build on %TeamforgeVersion%" /noprompt /override:"Build Server Checkin" echo Start to Upload the Image files to Teamforge
set eProductReleaseUploadFile=%eProductReleaseFilePath%eProduct%TeamforgeVersion%.ZIP
if not exist %eProductReleaseUploadFile% ( echo Do not exist %eProductReleaseUploadFile%, maybe build solution failed.
echo Build Failed.
exit ) if not exist %DriverReleaseFilePath% ( echo Do not exist %DriverReleaseFilePath%, maybe build Driver Disk failed.
echo Build Failed.
exit ) %TeamforgeUploadExecutableFile% %eProductReleaseUploadFile% %TeamforgeProjectName% %TeamforgePackage% %TeamforgeVersion% "http://sourceforge.is.ad.Company.com/sf-soap43/services" "Cruise_Control" "Mikohn123"
%TeamforgeUploadExecutableFile% %DriverReleaseFilePath% %TeamforgeProjectName% %TeamforgePackage% %TeamforgeVersion% "http://sourceforge.is.ad.Company.com/sf-soap43/services" "Cruise_Control" "Mikohn123" echo Upload the Image files to Teamforge Finished echo Build Finished. exit
Auto Increase Version Number:
If Wscript.Arguments.Count <> Then
WScript.Echo "Arguments Count Error"
wscript.quit
End If Set objFS = CreateObject("Scripting.FileSystemObject")
'version.h path
versionFilePath=Wscript.Arguments()
'ProductNameeProductDriver.ism path
driverFilePath=Wscript.Arguments() Dim newFileContent
Dim newDriverContent
Dim currentVersion
Dim nextVersion 'Manually configure if needed.
'Below 5 variables is used for search the special version number
'This is used for search the postfix number 888 (e.g. 1.7.0.888)
versionPostfixString="#define Product_INT_VERSION "
'This is used for search the prefix string 1.7.0 (e.g. 1.7.0.888)
versionPrefixString="#define PACKAGE_VERSION " & chr()
'This is used for search the Product version number in ism file (e.g. 1.7.0.888)
driverProductVersionPrefixString=" <row><td>ProductVersion</td><td>"
'This is used for search the EProduct version number in ism file (e.g. 1.7.0.888)
driverEProductVersionPrefixString=" <row><td>EProductVERION</td><td>"
'the last charactor in the row (ism file)
driverCommonPostfixString="</td><td/></row>" ' Auto Increase version.h file version number
Set versionFile = objFS.OpenTextFile(versionFilePath)
'Read the lines one by one
Do Until versionFile.AtEndOfStream
strLine = versionFile.ReadLine
' Search if this line has versionPostfixString , Then get the postfix number and set the next number: nextVersionPostfix
If InStr(strLine,versionPostfixString)> Then
versionPostfixLength=Len(strLine)-Len(versionPostfixString)
versionPostfix=Right(strLine,versionPostfixLength)
nextVersionPostfix=versionPostfix+
If nextVersionPostfix>= Then
nextVersionPostfix=
End If
strLine = Replace(strLine,versionPostfix,nextVersionPostfix)
End If
'Search if this line has versionPrefixString
If InStr(strLine,versionPrefixString)> Then
versionPrefixLength=Len(strLine)-Len(versionPrefixString)
versionPrefix=Right(strLine,versionPrefixLength)
versionPrefix=Left(versionPrefix,versionPrefixLength-)
End If
'Store all the lines to newFileContent, it will be write to the version.h again.
newFileContent = newFileContent & strLine & vbcrlf
Loop
versionFile.Close 'Write the new content to the version.h
Set versionFile = objFS.OpenTextFile(versionFilePath,)
versionFile.Write newFileContent
versionFile.Close currentVersion=versionPrefix & "." & versionPostfix
nextVersion = versionPrefix & "." & nextVersionPostfix 'Auto increase driver version number
Set driverFile = objFS.OpenTextFile(driverFilePath)
'Read the lines one by one
Do Until driverFile.AtEndOfStream
strLine = driverFile.ReadLine
' Search if this line has driverProductVersionPrefixString
If InStr(strLine,driverProductVersionPrefixString)> Then
driverPreProductLength=Len(strLine)-Len(driverProductVersionPrefixString)
driverLastVersionString=Right(strLine,driverPreProductLength)
driverProductLength=Len(driverLastVersionString)-Len(driverCommonPostfixString)
driverLastVersionString=Left(driverLastVersionString,driverProductLength)
strLine = Replace(strLine,driverLastVersionString,nextVersion) End If 'Search if this line has driverEProductVersionPrefixString
If InStr(strLine,driverEProductVersionPrefixString)> Then
driverPreEProductLength=Len(strLine)-Len(driverEProductVersionPrefixString)
driverLastEProductVersionString=Right(strLine,driverPreEProductLength)
driverEProductLength=Len(driverLastEProductVersionString)-Len(driverCommonPostfixString)
driverLastEProductVersionString=Left(driverLastEProductVersionString,driverEProductLength) strLine = Replace(strLine,driverLastEProductVersionString,nextVersion)
End If
'Store all the lines to newDriverContent, it will be write to the version.h again.
newDriverContent = newDriverContent & strLine & vbcrlf Loop
driverFile.Close 'Write the new content to the driver file
Set driverFile = objFS.OpenTextFile(driverFilePath,)
driverFile.Write newDriverContent
driverFile.Close 'This is the file version number, return to the result.
WScript.Echo currentVersion
TFS build server搭建,搭建自动化构建服务器的更多相关文章
- TFS2010单独安装配置tfs build server
记录一下确实很磨人. 同样硬件和软件环境的两台服务器,其中一台服务器很久之前就配置好了tfs2010 build ,然后最近想再配置一台tfs build server,但是按照以前的配置流程始终提示 ...
- 搭建yeoman自动化构建工具
yeoman可以快速的搭建一个项目的手脚架,初次接触yeoman,在搭建的过程中遇到了很多的问题. yeoman需要node.js(http://nodejs.org)和git(http://git- ...
- Jenkins+Ant+TestNG+Testlink自动化构建集成(完整版)
这段时间折腾自动化测试,之前都是在Eclipse工程里面手工执行自动化测试脚本,调用Testlink API执行测试用例,目前搭建Jenkins自动化构建测试的方式,实现持续构建,执行自动化测试. 硬 ...
- Jenkins+Ant+TestNG+Testlink自动化构建集成
这段时间折腾自动化测试,之前都是在Eclipse工程里面手工执行自动化测试脚本,调用Testlink API执行测试用例,目前搭建Jenkins自动化构建测试的方式,实现持续构建,执行自动化测试. 硬 ...
- 边缘化搭建 DotNet Core 2.1 自动化构建和部署环境(上)
写在前面 写这篇文章的缘由是由于笔者的对新兴技术方向有所追求,但个人资产有限,只能容许购买一台阿里云低配1核2G服务器.服务器上搭建了 Centos7 & Docker & Jenki ...
- 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...
原文:手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 本文你将学到什么? 本文将以原理+实战的方式,首先对& ...
- 使用Hudson搭建自动构建服务器
环境: ubuntu1404_x64 说明: 使用hudson和git搭建自动构建服务器的简单示例 安装hudson及相关插件 安装hudson 安装命令如下: sudo sh -c "ec ...
- 我是如何进行Spring MVC文档翻译项目的环境搭建、项目管理及自动化构建工作的
感兴趣的同学可以关注这个翻译项目 . 我的博客原文 和 我的Github 前段时间翻译的Spring MVC官方文档完成了第一稿,相关的文章和仓库可以点击以下链接.这篇文章,主要是总结一下这个翻译项目 ...
- Geoserver+Openlayers+MySQL设计思想,GeoServer服务器搭建(Docker构建镜像)
Geoserver+Openlayers+MySQL设计思想,GeoServer服务器搭建(Docker构建镜像) 一.geoserver+openlayers+mysql主要设计思想 1.1 Geo ...
随机推荐
- angular.js小知识总结
angular-watch.html 代码如下: <script> var app = angular.module('app',[]); app.controller('ctrl',fu ...
- fastJson将json字符串转换为map
public class JsonUtil { /** * 将json转化成map * @param jsonStr * @return */ public static Map<String, ...
- 给linux虚拟机添加Samba用户
Window系统连上我们的开发机Linux,自然需要在Samba里添加一个新用户. linux-06bq:/usr/local/services/samba/bin # ./smbpasswd -a ...
- MySQL 5.7 在windows下修改max_allowed_packet变量
(一)执行sql遇到的错误如下: ### Cause: com.mysql.jdbc.PacketTooBigException: Packet for query is too large (387 ...
- bootstrap图标字体不出来问题的解决办法
@font-face { font-family: 'Glyphicons Halflings'; src: url('/Scripts/bootstrap/fonts/glyphicons-half ...
- 微信小程序的开发环境搭建(Windows版本)
前言: 小程序是指微信公众平台小程序,小程序可以帮助开发者快速的开发小程序,小程序可以在微信内被便捷地获取和传播:是一种不需要下载安装即可使用的应用小程序,和原有的三种公众号是并行的体系.2017年1 ...
- asp.net 在新的页面打开的问题。
在自己写的代码中,有些页面需要在新的页面中打开,基于页面的数据十分繁琐,一直没有找到方法.通过自己不断的测试,找到了一个方法. 后台页面中 for (int j = 0; j < listMod ...
- (转)基于 Token 的身份验证
原文:https://ninghao.net/blog/2834 最近了解下基于 Token 的身份验证,跟大伙分享下.很多大型网站也都在用,比如 Facebook,Twitter,Google+,G ...
- Logback 基础知识
1.Logback使用logback 是log4j的替代者,其需要slf4j.其配置文件主要有以下三种1. logback.groovy2. logback-test.xml3. logback.xm ...
- Centos7架设NMP服务器笔记
安装centos7.3 1.从mirrors.163.com下载7.3 2.准备虚拟机vitualbox,网络我使用的桥接到无线网卡,直接连我到路由器,IP自动分配(本来想搞静态IP的,搞了好久没成功 ...