TeamCity 中复选框参数的默认值

tra*_*max 5 teamcity teamcity-9.0

我正在 TeamCity 中构建 nuget,并希望在签入触发构建时将后缀“-pre”附加到版本号。当构建被手动触发时,我希望能够提供一个复选框,如果这个构建应该是预览版本或值得生产的。

我有一个这样创建的配置参数:

预发布配置参数

- 总是添加预

在这种情况下,我总是-pre添加到版本号,即使我手动触发构建并且不选中复选框。

如果我-pre从参数的默认值中删除该值 ,则复选框提示会按预期工作。但是当我通过签入触发我的构建时,系统没有给我-pre后缀,我最终得到了一个只能手动创建的生产版本。

有什么方法可以实现我需要的吗?

或者,我只想在构建的手动触发器上发布 nuget,并不真正关心预发布,但我似乎找不到任何方法来检查构建是手动触发还是通过签入触发.

Evo*_*Ltd 3

第一部分相对简单,使用一个步骤来检查复选框的值并根据它设置参数 - 这里我使用了 powershell,但这可以在 bash 中完成(我假设使用 powershell,因为你正在生成 nuget包)

请注意,我稍微颠倒了你的逻辑,但它产生了你想要的结果。

  1. 定义两个变量

变量

  1. 设置复选框

复选框定义

  1. 设置两个构建步骤

构建步骤

  1. 第一步,测试该参数并用它来设置另一个参数

第一步

  1. 在第二步中,我证明该值已正确设置

在此输入图像描述

您应该能够在需要时使用%ReleaseSuffix% 。

关于您的第二个要求,我再次假设您只想发布一个基于发布构建而不是预发布的 nuget 包(如果我错误地假设了这一点,请告诉我)

基于参数值的条件构建步骤是我在 YouTrack 上跟踪了一段时间的内容。自 2011 年以来就已提出要求,但仍未将其作为一项功能纳入其中。我在 2014 年发表此评论作为一种解决方法,但没有 Java 技能(你可能会这样做) -我对 YouTrack Issue 的评论

有一种替代方法可以实现此功能,这可能需要对构建配置进行一些修改。

如果您的“Publish NuGet”步骤没有被任何东西触发(假设它是由之前的构建完成触发的),那么您可以有一个构建步骤

  • 检查 %ReleaseSuffix% 参数
  • 调用 REST API 触发构建以发布 NuGet

它可能看起来像这样 - 只需确保替换突出显示的位

触发构建

TeamCity 文档

希望这可以帮助