TeamCity 中复选框参数的默认值
Default value for checkbox parameter in TeamCity
我正在 TeamCity 中构建 nuget,并希望在签入触发构建时将后缀“-pre”附加到版本号。当手动触发构建时,如果此构建应该是预览版或生产版,我希望能够提供一个复选框。
我有一个这样创建的配置参数:
在这种情况下,我总是将 -pre
添加到版本号中,即使我手动触发构建并且不选中复选框也是如此。
如果我从参数的默认值中删除值 -pre
,复选框提示将按预期工作。但是当我的构建通过签入触发时,系统没有给我 -pre
后缀,我最终得到了一个只能手动创建的生产版本。
有什么方法可以实现我所需要的吗?
或者,我只想在构建的手动触发时发布 nugets,并不真正关心预发布,但我似乎找不到任何方法来检查构建是手动触发的还是通过签到。
第一部分相对简单,使用一个步骤来检查复选框的值并根据它设置参数 - 这里我使用了 powershell 但这可以在 bash 中完成(我'当您生成 nuget 包时,我们使用了 powershell)
请注意,我稍微颠倒了你的逻辑,但它产生了你想要的结果。
- 定义两个变量
- 设置复选框
- 设置两个构建步骤
- 第一步,测试参数并使用它来设置另一个参数
- 在第二步中,我将证明该值已正确设置
您应该可以在需要时使用 %ReleaseSuffix%。
关于你的第二个要求,我再次假设你只想发布一个 nuget 包,因为它是一个发布版本而不是 Pre-Release(如果我假设这个错误地让我知道)
基于参数值的条件构建步骤是我在 YouTrack 上跟踪了一段时间的内容。自 2011 年以来就有人提出要求,但仍未将其作为功能加入。我在 2014 年发表此评论作为解决方法,但没有 Java 技能(你可能)- My comment on YouTrack Issue
有另一种方法可以使它正常工作,这可能需要对您的构建配置进行一些修改。
如果你的 "Publish NuGet" 步骤没有被任何东西触发(假设它是由之前的构建完成触发的)那么你可以有一个构建步骤
- 检查 %ReleaseSuffix% 参数
- 调用 REST API 触发构建以发布 NuGet
它可能看起来像这样 - 只需确保替换突出显示的位
希望对您有所帮助
这里采纳的答案虽然很好,但也有瑕疵;您将无法使用 Assembly Info Patcher 构建功能,因为它在第一步之前执行。除非你想将你的构建链接在一起,否则在第一个中设置版本并在第二个中使用它(糟糕)。
我设法找到了一个解决方案,它通过修改参数来给你相同的结果,将它们设置如下:
之所以使用"EmptyString"参数是因为没有它,检查值默认为"true"。
我已经使用手动触发器(发布和预发布)和 VCS 触发器(仅限预发布)对此进行了测试,所有功能均按预期在 TeamCity v9.0.3(内部版本 32334)上运行。
我正在 TeamCity 中构建 nuget,并希望在签入触发构建时将后缀“-pre”附加到版本号。当手动触发构建时,如果此构建应该是预览版或生产版,我希望能够提供一个复选框。
我有一个这样创建的配置参数:
在这种情况下,我总是将 -pre
添加到版本号中,即使我手动触发构建并且不选中复选框也是如此。
如果我从参数的默认值中删除值 -pre
,复选框提示将按预期工作。但是当我的构建通过签入触发时,系统没有给我 -pre
后缀,我最终得到了一个只能手动创建的生产版本。
有什么方法可以实现我所需要的吗?
或者,我只想在构建的手动触发时发布 nugets,并不真正关心预发布,但我似乎找不到任何方法来检查构建是手动触发的还是通过签到。
第一部分相对简单,使用一个步骤来检查复选框的值并根据它设置参数 - 这里我使用了 powershell 但这可以在 bash 中完成(我'当您生成 nuget 包时,我们使用了 powershell)
请注意,我稍微颠倒了你的逻辑,但它产生了你想要的结果。
- 定义两个变量
- 设置复选框
- 设置两个构建步骤
- 第一步,测试参数并使用它来设置另一个参数
- 在第二步中,我将证明该值已正确设置
您应该可以在需要时使用 %ReleaseSuffix%。
关于你的第二个要求,我再次假设你只想发布一个 nuget 包,因为它是一个发布版本而不是 Pre-Release(如果我假设这个错误地让我知道)
基于参数值的条件构建步骤是我在 YouTrack 上跟踪了一段时间的内容。自 2011 年以来就有人提出要求,但仍未将其作为功能加入。我在 2014 年发表此评论作为解决方法,但没有 Java 技能(你可能)- My comment on YouTrack Issue
有另一种方法可以使它正常工作,这可能需要对您的构建配置进行一些修改。
如果你的 "Publish NuGet" 步骤没有被任何东西触发(假设它是由之前的构建完成触发的)那么你可以有一个构建步骤
- 检查 %ReleaseSuffix% 参数
- 调用 REST API 触发构建以发布 NuGet
它可能看起来像这样 - 只需确保替换突出显示的位
希望对您有所帮助
这里采纳的答案虽然很好,但也有瑕疵;您将无法使用 Assembly Info Patcher 构建功能,因为它在第一步之前执行。除非你想将你的构建链接在一起,否则在第一个中设置版本并在第二个中使用它(糟糕)。
我设法找到了一个解决方案,它通过修改参数来给你相同的结果,将它们设置如下:
之所以使用"EmptyString"参数是因为没有它,检查值默认为"true"。
我已经使用手动触发器(发布和预发布)和 VCS 触发器(仅限预发布)对此进行了测试,所有功能均按预期在 TeamCity v9.0.3(内部版本 32334)上运行。