我正在寻找一种在多个构建配置之间共享构建号的方法。目标是拥有某种类型的全局计数器,并且所有构建配置都将递增它并在其自己的构建号中使用它。
7 回答
如果构建配置 A 之一对构建配置 B 具有快照或工件依赖项,则您可以借助依赖参数从 A 中的 B 获取构建号:
%dep.<B id>.build.number%
其中 <B id> 是构建配置 B 的 id(参见 URL 中的 buildTypeId 参数)。
这个解决方案对我有用:
- 创建构建配置。比方说“GenerateBuildNumber”,不要附加模板。不要指定任何构建步骤。单击保存。
- 编辑项目的配置。转到“构建配置设置->依赖项”。单击“添加新快照依赖项”。
- 在“取决于”部分中选择先前创建的“GenerateBuildNumber”。取消选中“如果有合适的版本,请勿运行新版本”选项。单击保存。
- 进入“常规设置”,清除“内部版本号格式:”,点击左侧3行按钮。选择“%dep.YouProjName_GenerateBuildNumber.env.BUILD_NUMBER%”。单击保存。
运行您的项目构建。首先它应该启动“GenerateBuildNumber”项目,然后你的项目使用生成的数字。为您希望生成唯一编号的每个项目执行步骤 2-4。利润!
我相信 AutoIncrementer 插件应该可以解决问题。它允许您在配置之间共享内部版本号。http://confluence.jetbrains.com/display/TW/Autoincrementer
您可以按照以下步骤使一个 Team City 项目使用另一个项目的内部版本号:
打开要导入内部版本号的配置的 TeamCity 项目配置属性。
转到“依赖项”部分。
添加“工件依赖项”并选择要从中获取内部版本号的项目配置作为依赖项目。
在“Get artifacts from”字段中选择“Build with specified build number”
在“内部版本号”输入框旁边有一个按钮,您可以单击以选择从何处获取内部版本号。在此列表中,您应该看到类似“dep.bt2.build.number”的选项(对于您的配置,该数字可能不是 2)。
AutoIncrementer 很好,但现在有一个新插件试图做一些用户说他们不能用 AutoIncrementer 做的事情:
http://java.nicholaswilliams.net/TeamCityPlugins/introduction#SharedBuildNumber
当您将其添加到 TeamCity 时,它有一个 UI,并且还可以处理您可能想要使用的格式的日期使用。
到目前为止,最简单的方法是使用暴露的变量:
%dep.<build configuration id here>.build.number%
您可以使用依赖项中的任何参数来使用该变量。如果您开始%
在旁边的方框中输入一个允许您选择变量的字段,它将在那里弹出构建配置 ID。