TeamCity条件SMB上传路径

时间:2018-04-23 08:52:26

标签: teamcity

使用TeamCity版本2017.2.3(build 51047)。

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

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

使用IF块上的某种形式,或者内联的三元语句。

非使用PowerShell完成此操作。通过用户界面,我希望尽可能保持这种方式。我们的旧TeamCity安装基本上只是一个美化的PowerShell脚本运行器,并且发展成为这个不可维护的整体,除了PowerShell是一种相当糟糕的语言。

基本上我想要的是建立在任何分支上

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

虽然默认分支的构建转到

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

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

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

如果可以采取条件步骤,您可以创建两个步骤:从默认上传从非默认上传,每个步骤都有不同的目标网址。事实证明,条件构建步骤是TeamCity中投票最多的功能,请参阅this ticket,但JetBrains完全反对这一想法。您可能想要为票证投票,或者至少对其进行监控。

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

//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”或“”的变量。然后,您可以将目标网址更改为//DataStore/builds%myCleverVariable%/my-api-%build.number%.zip。要做到这一点,你需要在这个之前做一个额外的步骤,一个Powershell跑步者,它会测试%teamcity.build.branch.is_default%的值并相应地设置%myCleverVariable%,使用TeamCity service messages

答案 1 :(得分:0)

conditional build step功能已在TeamCity 2020.1中实现