使用TFS在自动构建部署中获取构建版本

时间:2014-05-19 17:10:07

标签: deployment tfs continuous-integration build-automation tfs2012

我正在使用TFS CI自动构建部署将Web应用程序部署到azure。
在我们的配置中维护构建版本,如 2014.05.19.1 ,即$(日期)。$(rev)格式。
所有我想在每次构建部署时更新配置。为此,我将价值传递给了#Build; BuildVersion'模板中的参数到PowerShell脚本,它实际上执行发布到azure。

我尝试使用$(Date:yyyyMMdd)$(Rev:.r),但它被认为是字符串。 我想获得当前版本的版本,就像IBuildDetail.BuildNumber一样 在模板中。

我的问题是如何获得构建版本?

3 个答案:

答案 0 :(得分:1)

如果您的TFS构建正在执行PowerShell脚本,那么应该可以访问特定于构建的TFS上下文的环境变量。如果是这种情况,您实际上并不需要将$(BuildVersion)参数传递给脚本,因为$env:TF_BUILD_BUILDNUMBER环境变量中的PS脚本已经可以访问它。尝试在脚本中测试$env:TF_BUILD_BUILDNUMBER | Out-File "D:\Dev\BuildNumber.txt"之类的内容。在运行构建之后,您应该希望看到包含构建号的文件。

(我假设您正在使用一个相对较新的构建过程模板...一个包含"构建后脚本路径"参数,例如TfvcTemplate.12.xaml)

希望这有用。

答案 1 :(得分:1)

我建议您使用正确的工具来完成正确的工作。构建系统实际上只用于构建(编译和测试)。多年来我们一直在将它用于其他事情因为我们没有其他集成解决方案。然而,微软最近购买了InRelease并重新命名为Release Management for Visual Studio 2013。我也成功地将其与TFS 2012集成在一起。

答案 2 :(得分:1)

如果您正在使用Invoke Process,而不是为BuildVersion参数传递值,您可以直接在参数中使用“BuildDetail.BuildNumber”来处理
String.Format("-BuildNumber ""{0}""",BuildDetail.BuildNumber)
这将提供所需的内部编号。