TeamCity 条件 SMB 上传路径
TeamCity Conditional SMB Upload path
使用 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 中投票最多的功能,请参阅 this ticket,但 JetBrains 非常反对这个想法。您可能想为这张票投票,或者至少对其进行监控。
除了 Powershell,您还可以做一件事。 Target URL 字段扩展变量。 (您可以通过在文本字段中键入百分号来说明这一点:TeamCity 立即开始建议变量名称。将此与上面的 Step name 文本字段进行比较:没有变量扩展。)因此,您可以按以下形式输入 目标 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) 在您的文件服务器上创建符号链接或联结(在 directory/filesystem 级别),以便客户端可以访问上述内容,如
//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.build.branch.is_default%
的值并使用 TeamCity service messages.[=18= 相应地设置 %myCleverVariable%
]
conditional build step 功能已在 TeamCity 2020.1 中实现
使用 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 中投票最多的功能,请参阅 this ticket,但 JetBrains 非常反对这个想法。您可能想为这张票投票,或者至少对其进行监控。
除了 Powershell,您还可以做一件事。 Target URL 字段扩展变量。 (您可以通过在文本字段中键入百分号来说明这一点:TeamCity 立即开始建议变量名称。将此与上面的 Step name 文本字段进行比较:没有变量扩展。)因此,您可以按以下形式输入 目标 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) 在您的文件服务器上创建符号链接或联结(在 directory/filesystem 级别),以便客户端可以访问上述内容,如
//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.build.branch.is_default%
的值并使用 TeamCity service messages.[=18= 相应地设置 %myCleverVariable%
]
conditional build step 功能已在 TeamCity 2020.1 中实现