转自:http://www.almnetworks.net/zh-CN/post/2010/07/07/Getting-Started-with-TFS-Deployer.aspx
微软在昨天发布了TFS Deployer http://tfsdeployer.codeplex.com, 这个产品最初是由一家澳大利亚的咨询公司Readify 开发的,并且被他们广泛用于内部开发系统中。下面这篇文章是Readify的CTO, Mitch Denny写于2006年的介绍TFS Deployer的博客。可能听上去有点老,但是如果你想在TFS系统实现真正的持续集成,并把产品自动的从开发部署到测试环境,再由测试环境部署到生产环境,这是个非常好的工具。
TFS Deployer (TFS部署管理器)介绍
简单来说,TFS部署管理器是安装在你的测试以及生产环境中的一个代理程序,它可以监听TFS所发出的一些事件,并自动执行制定的PowerShell脚本以便进行自动化部署。更加准确一点,TFS部署管理器会监听构建质量变化事件(build quality change notificaions),当你修改构建质量标签的时候,TFS就会发出这些事件。
在TFS部署管理器中,包含一个发布管理器(Release Manager),发布管理器通过团队浏览器来更新构建的质量标签,构建服务会发出一个事件,发送给所有监听这个事件的监听代理。所以,你可以部署多个服务器上部署监听代理。当然TFS部署管理器并不知道应该如何这个事件,除非你在部署配置文件中进行配置。
对于每一个不同的质量标签变化事件,可以在部署配置文件中制定需要在哪台服务器上执行什么样的PowerShell脚本,通过这个脚本,我们就可以完成需要的部署操作。
Readify 在完成TFS部署管理器的开发后就一直在内部使用这个产品来完成即时的更新,构建和部署我们的timesheet系统;这些操作还需要配合TFS集成服务(TFS Integrator)。下面的内容是关于如何配置TFS部署管理器来完成这些自动化的操作。
安装TFS部署管理器
首先下载部署管理的安装包。这个安装包非常超简单,仅仅是把程序文件和默认配置文件安装到C:/Program Files/TFS Deployer 目录,然后你需要完成一系列的配置来完成自动化的操作。
第一步:你需要注册TFS部署管理器的服务,使用-i参数来执行TFSDeployer.exe 可执行文件。完成以后你就可以在服务管理器(services.msc)中找到TFS Deployer 这个服务。你需要跟新这个服务的登录帐户,确保这个账户可以访问你的TFS。
在启动服务之前,你需要更新TfsDeployer.exe.config配置文件,主要参数如下:
- FromAddress:邮件发送地址
- SmtpServer:smtp服务器地址
- ToAddress:默认通知邮件地址,当TFS部署管理器发现部署失败或者成功的时候,会想这个地址发送通知邮件;
- BaseAddress:这是TFS部署管理器实例的地址,你需要使用一个网络地址以便确保TFS可以通过网络访问到这个服务实例。
- RegistrationUserName:这是进程所使用的用户账户名称,也是由于监听TFS事件的账户;
- TeamFoundationServerUrl:TFS服务器的URL;
- UseDefaultCredentials:是否使用默认身份,除非你使用域环境进行部署,否则应该为true.
配置完成后你就可以启动服务了,启动之后TFS部署管理器服务会连接到TFS,并且开始监听所有的构建质量变化事件。
准备部署脚本
部署脚本需要和不同的构建定义对应,并且针对不同的构建质量变化进行设计。
部署配置信息文件需要存放在构建定义目录的deployment子目录中。比如:下面的截图显示我们在CrmOntTime这个项目中定义了一个叫CrmOnTimeContinuous的构建定义, 在这种情况下,TFS部署管理器会在$/CrmOnTime/TeamBuildTypes/CrmOnTimeContinuous/Deployment 目录中寻找DeploymentMapping.xml文件作为部署配置文件。
DeploymentMappings.xml 文件内容非常简单,其内容就是根据不同的构建质量变化在那台服务器上执行哪一个脚本,另外还需要配置一个邮件地址来发送相应的通知。
TFS部署管理器会找到这个配置文件,并把它和相应的脚本下载到Deployment 补录中,比如在上图中的UnexaminedToTest.ps1。这个PowerShell脚本执行怎样的操作完全由开发人员决定,值得一提的是在脚本中你可以使用BuildData (refer to Team Foundation Server SDK) 对象,通过这个对象你可以很容易的从构建目录中获取相应的文件。
脚本准备完成后,就可以测试你的部署流程了,希望这个TFS部署管理器对大家有所帮助。
(以上内容大部分翻译自Mitch的blog)。