【发布时间】:2016-02-15 10:00:19
【问题描述】:
我们想利用 Octopus Deploy 中的 Channels 功能,因此当版本号包含“X.X.X.X-Beta”时,它应该使用 Beta 通道。
我们的问题是我们不知道如何在 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)]
基本上我们想要达到的目标:
- 从 Visual Studio Online 的 TFS 存储库中获取更改
- TeamCity 应读取该类并将其自己的构建版本设置为“1.12.0.{buildNumber}-Beta”
- TeamCity 应该使用该版本创建 Octopus 版本
我们的问题是,我们无法访问客户的 TeamCity 安装以更改那里的版本,因此我们依赖于双方都适用的解决方案(如该类)。
【问题讨论】:
-
如果你看一下Build Script Interaction documentation,你会发现如果你可以欺骗你的构建(也许是MSBuild?)将字符串输出到控制台,内容为
##teamcity[buildNumber 'XYZ'],那么你可以控制它,要获得{buildNumber}部分,您应该检查环境变量,其中应该包含 TeamCity 认为的内部版本号,认为它只是称为BUILD_NUMBER。
标签: c# teamcity octopus-deploy