TeamCity中checkbox参数的默认值

时间:2015-05-15 23:49:09

标签: teamcity teamcity-9.0

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

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

Prerelease configuration parameter

-Pre is always added

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

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

任何实现我需要的方式?

或者我只想在构建的手动触发器上发布nugets并且不关心预发布,但我似乎无法找到任何方法来检查构建是手动触发还是通过入住。

2 个答案:

答案 0 :(得分:3)

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

请注意,我已经改变了你的逻辑,但它会产生你想要的结果。

  1. 定义两个变量
  2. Variables

    1. 设置复选框
    2. Checkbox definition

      1. 设置两个构建步骤
      2. Build Steps

        1. 在第一步中,测试参数并使用它来设置另一个参数
        2. First Step

          1. 在第二步中,我证明该值已正确设置
          2. enter image description here

            您应该可以在需要时使用%ReleaseSuffix%

            关于你的第二个要求,我再次假设你只想发布一个nuget包,它基于它是Release版本而不是Pre-Release(如果我已经假设这个错误地让我知道)

            基于参数值的条件构建步骤是我在YouTrack上已经跟踪了一段时间的事情。这是自2011年以来的要求,但仍然没有作为一个功能。我在2014年作为一个解决方案发表了这个评论,但是没有Java技能(你可能) - My comment on YouTrack Issue

            有另一种方法可以使其工作,这可能需要对构建配置进行一些修改。

            如果你的"发布NuGet"步骤不是由任何事物触发的(假设它由之前的构建完成触发)然后你可以有一个构建步骤

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

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

            Trigger Build

            TeamCity Documentation

            希望这有帮助

答案 1 :(得分:2)

虽然这里接受的答案非常好,但确实存在缺陷;您将无法使用Assembly Info Patcher构建功能,因为这将在第一步之前执行。除非您希望将构建链接在一起,否则在第一个中设置版本并在第二个中使用该版本(yuck)。

我设法找到了一个解决方案,通过修改参数可以给你相同的结果,设置如下:

Configuration Parameters

PrereleaseLabel

使用“EmptyString”参数的原因是因为没有它,选中的值默认为“true”。

我已经使用手动触发器(release& prerelease)和VCS触发器(仅预发布)测试了这一点,所有这些都在TeamCity v9.0.3(build 32334)上按预期运行。