2016-02-15 48 views
1

我们希望在Octopus Deploy中使用Channels功能,因此当版本号包含“X.X.X.X-Beta”时,它应该使用Beta通道。TeamCity内部版本号为常数

我们的问题是,我们不知道如何在TeamCity中设置版本号,因为它只允许硬编码的字符串与一些变量。 我们不想把它设置成TeamCity,我们想在课堂上使用它。 所以我们有一个类调用VersionInformation.cs有以下内容:

public static class VersionInformation 
{ 
    public const string ProductVersion = "1.12.0.0"; 
    public const string ProductStage = "Beta"; 
} 

AssemblyInfo.cs文件下面一行包含:

[assembly: AssemblyVersion(VersionInformation.ProductVersion)] 

基本上我们要做到:

  1. 获取来自Visual Studio Online的TFS存储库的更改
  2. TeamCity应读取该类并设置自己的构建版本“1.12.0。{} buildNumber-β”
  3. 的TeamCity应该创建一个八达通发布该版本

我们的问题是,我们不能访问我们的客户的TeamCity的安装变化那里的版本,所以我们依赖于一个双方工作的解决方案(就像那个类)。

+0

如果你看一看的:

echo ##teamcity[buildNumber '1.2.0.%env.BUILD_NUMBER%-Beta'] 

运行它两次我得到了这个之后[构建脚本交互文档](https://confluence.jetbrains.com/display/TCD8/Build+Script+Interaction+with+TeamCity)你可以看到,如果你可以欺骗你的构建(MSBuild也许?)输出一个字符串到内容为'## teamcity [buildNum然后你可以控制它,为了得到'{buildNumber}'部分,你应该检查应该包含TeamCity认为是的内部版本号的环境变量,认为它被简称为'BUILD_NUMBER'。 –

回答

0

您可以执行的操作是使用生成步骤中的Built Script Interaction自定义输出。

你需要欺骗你的构建,我会假设是MSBuild,将其输出到标准控制台。

基本上,你需要输出什么应该是这样的:

##teamcity[buildNumber 'XYZ'] 

哪里XYZ是要输出的版本号。

这里有一个简单的测试批处理文件,我创建并连接到TeamCity的生成配置:

TeamCity screenshot after two builds

+0

我们使用启用OctoPack的“Visual Studio(.sln)”构建步骤。我需要改变吗? –

相关问题