跳过TeamCity中个人构建的步骤

时间:2013-09-18 08:29:14

标签: teamcity teamcity-8.0

运行TeamCity 8.0的CI服务器上的

我有一个构建配置,其最后一步是创建和推送新版本的NuGet包。

我想知道如果当前版本是个人版本,是否有办法禁止这两个步骤。

有任何线索吗?

5 个答案:

答案 0 :(得分:6)

在团队城中暴露的环境变量可以告诉您这是否是个人构建BUILD_IS_PERSONAL:

请参阅http://confluence.jetbrains.com/display/TCD7/Predefined+Build+Parameters

E.g。使用msbuild运行器(你只需要提供nuget路径)

<Project DefaultTargets="Pack" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <Target Name="Pack" Condition="$(BUILD_IS_PERSONAL)!='True'">
    <Message Text="Personal: $(BUILD_IS_PERSONAL)"/>
    <Exec Command="$(NUGETPATH)\nuget pack $(NugetProject)"/>
  </Target>
</Project>

或者,您可以使用额外的构建步骤暂停构建步骤的条件。从而使它们成为有条件的:

添加一个使用powershell的额外构建步骤 -

if (([environment]::GetEnvironmentVariable("BUILD_IS_PERSONAL","Process")) -eq "True")
{ 
  throw
}

在每个构建步骤中都有选项:执行步骤 如果您选择选项&#34;如果之前的所有构建成功&#34;然后步骤将通过 如果您选择:&#34;即使某些先前的构建步骤失败&#34;它会执行。

答案 1 :(得分:0)

您可以创建新的构建配置 - 省略这两个步骤。然后 - 安装TeamCity Visual Studio插件(假设您使用的是VS),然后运行个人构建,选择您要使用的构建配置。

答案 2 :(得分:0)

与Jordan的响应类似,我认为最好的方法是将编译与打包/部署构建配置分开。事实上,如果您使用Octopus进行部署,则必须将TeamCity Octopus部署步骤保留在编译的单独构建配置中,因为NuGet源不会在构建配置成功完成之后填充。

如果使您的打包/部署构建配置成为编译构建配置的依赖项,并将构建触发器设置为仅在成功构建编译构建配置后触发,那么即使成功构建,也不会在个人构建后触发: -

TeamCity packaging / deployment build trigger

这样,无论是通过Web上的开发人员通过Web UI使用AddIn还是Release Team,您都可以调用相同的编译配置

希望这有帮助

答案 3 :(得分:0)

我们遇到类似的问题,我们只想在更改后构建并部署我们的本地Apache Maven存储库。

一种可能的解决方案:如果构建步骤是命令行(或可以),请创建一个小的shell脚本来决定是否应该运行这些步骤。

答案 4 :(得分:0)

TeamCity 2020.1增加了对conditional build steps的支持,并且有一个快速捷径可以跳过个人构建的构建步骤。