团队城市条件 SMB 上传路径



使用 TeamCity 版本 2017.2.3(内部版本 51047)。

我有一个 SMB 上传构建步骤,并希望将构建从默认分支上传到与所有其他构建不同的位置。

我看到了以下变量,它将告诉我它是否是一个糟糕的构建%teamcity.build.branch.is_default%但是我不太确定如何甚至是否可以为 SMB 上传步骤指定条件目标 URL。

要么在 IF 块上使用某种形式,要么内联三元语句。

这些都不是使用PowerShell完成的。在整个UI中,如果可能的话,我宁愿保持这种状态。我们旧的TeamCity安装基本上只是一个美化的PowerShell脚本运行器,并成长为这个不可维护的单体,除了PowerShell是一种相当糟糕的语言。

从本质上讲,我想要的是建立在任何分支上

//DataStore/builds/my-api-%build.number%.zip

虽然在默认分支上构建,但转到

//DataStore/builds/default/my-api-%build.number%.zip

任何帮助将不胜感激。

一般来说,这是不可能的。SMB 上传运行程序不允许在其中的任何位置指定条件。

如果可以执行条件步骤,则可以创建两个步骤:"从默认上传"和">从非默认上传",每个步骤都有不同的目标 URL。事实证明,条件构建步骤是TeamCity中投票最多的功能,请参阅此票证,但JetBrains非常反对这个想法。您可能想为票证投票,或者至少监控它。

除了Powershell之外,您还可以做一件事。"目标网址"字段用于展开变量。(您可以通过在文本字段中键入百分号来判断这一点:TeamCity 立即开始建议变量名称。将其与上面的步骤名称文本字段进行比较:没有变量扩展。因此,您可以按以下形式输入目标 URL

//DataStore/builds/%teamcity.build.branch.is_default%/my-api-%build.number%.zip

这样,您最终会以上传文件的形式上传

//DataStore/builds/true/my-api-1234.zip
//DataStore/builds/false/my-api-1235.zip

现在这有点丑陋。您可以通过两种方式对其进行改进:

1)在文件服务器上(在目录/文件系统级别)创建符号链接或联结,以便客户端可以访问上述内容

//DataStore/builds/default/my-api-1234.zip
//DataStore/builds/my-api-1235.zip

2)更好的是,您可以设置一个包含值"/default"或"的变量。然后,您可以将目标 URL更改为//DataStore/builds%myCleverVariable%/my-api-%build.number%.zip.为此,您需要在此步骤之前添加一个额外的步骤,即Powershell运行程序,该步骤将使用TeamCity服务消息测试%teamcity.build.branch.is_default%的值并相应地设置%myCleverVariable%

条件构建步骤功能已在 TeamCity 2020.1 中实现

最新更新