teamcity - TeamCity 中复选框参数的默认值

标签 teamcity teamcity-9.0

我正在 TeamCity 中构建 nuget,并且希望在 checkin 触发构建时将后缀“-pre”附加到版本号。当手动触发构建时,我希望能够提供一个复选框,以确定此构建应该是预览版本还是适合生产。

我已经创建了一个这样的配置参数:

Prerelease configuration parameter

-Pre is always added

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

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

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

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

最佳答案

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

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

  1. 定义两个变量

Variables

  • 设置复选框
  • Checkbox definition

  • 设置两个构建步骤
  • Build Steps

  • 第一步,测试参数并用它来设置另一个参数
  • First Step

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

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

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

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

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

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

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

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

    Trigger Build

    TeamCity Documentation

    希望这有帮助

    关于teamcity - TeamCity 中复选框参数的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30270315/

    相关文章:

    selenium - 使用或不使用 headless 浏览器运行 Karma 和 Protractor 测试

    android - TeamCity 上的 Android 无法读取 Jacoco 数据文件

    c# - Teamcity Nunit 3.0 控制台运行器不工作

    c++ - TeamCity 中的 Visual Studio 企业代码覆盖率报告

    git - Teamcity - 成功构建后创建 git 标签

    java - TeamCity XML 报告处理结果

    git - 仅当链中的第一个是从默认分支构建时,是否可以触发依赖构建?

    teamcity - 在服务器日志中找不到 TeamCity 的维护 token

    github - 如何解决 Teamcity 中未找到存储库错误?

    java - XL-部署错误 : Error: this script should be run with the -expose-proxies flag. 线程 "main"javax.script.ScriptException 中出现异常: