【问题标题】:How to work with dynamic parameters in TeamCity?如何在 TeamCity 中使用动态参数?
【发布时间】:2021-07-13 14:35:09
【问题描述】:

我正在整合BitBucketTeamCitySonarQube。我的场景如下:

  1. 开发人员启动新 PR 或更改现有 PR;
  2. TeamCity 开始自动构建 PR;
  3. TeamCity 将分析结果通过SonarQube Runner-Dsonar.branch.name=%teamcity.build.branch% 发布到SonarQube
  4. BitBucket 通过分支名称向SonarQube 请求分析详细信息,并显示在 PR 页面上。

所以问题是我无法推断 PR 所基于的分支的名称。这是发生了什么:

  1. 我将TeamCity配置为监听VCS分支规范中的+:refs/pull-requests/*/from引用;
  2. TeamCity 发现新的 PR 时,它会开始构建
  3. 分支名称 (teamcity.build.branch) 等于 PR 的编号(因为引用中的星号);
  4. BitBucket 无法通过 PR 的分支名称检索分析详细信息,因为它们存储在 SonarQube 中,名称等于 PR 的编号,而不是分支的名称。

方案一(动态参数):

  1. 定义某种动态参数;
  2. 在其中一个构建步骤中为参数赋值;
  3. 使用该值将分析结果发布到SonarQube

解决方案 2:

  1. 收听两个参考:+:refs/pull-requests/*/from+:refs/heads/*
  2. 设置一个只监听+:refs/heads/*VCS触发器;
  3. 如果未找到当前分支的拉取请求引用,则在第一个构建步骤中使构建失败。

这似乎不是一个好的解决方案。

所以在我看来,解决方案应该是这样的:

  1. 让 TeamCity 在找到新 PR 时触发构建(现在的工作方式);
  2. 使其找出正确的分支名称(通过提交哈希)并将其存储在动态参数中;
  3. 将此参数的值传递给SonarQube Runner (-Dsonar.branch.name=%dynamic.branch...%)

我阅读了documentation about TeamCity predefined branch parameters,但没有发现任何有用的信息。

请帮我弄清楚如何配置它。

【问题讨论】:

  • “这是不可能实现的,因为TeamCity不提供动态参数”不正确
  • @SeniorPomidor,请分享链接,我自己找不到。
  • 您可以使用Build Script Interaction with TeamCity动态创建\更改新参数
  • @SeniorPomidor,谢谢你给我看,我从来没有遇到过。这正是我所需要的。请发布答案,我会接受。

标签: git sonarqube bitbucket teamcity


【解决方案1】:

通过在构建脚本中使用专用服务消息,您可以从构建步骤动态更新构建的构建参数(这些参数需要在构建配置的参数部分中定义)。

Build Script Interaction with TeamCity

echo ##teamcity[setParameter name='ddd' value='fff']

附: echo 是必填项

【讨论】:

    【解决方案2】:

    配置参数(无前缀)

     Write-Host "##teamcity[setParameter name='ParameterName' value='NewValue']"
    

    环境变量(由 env. 前缀定义)

     Write-Host "##teamcity[setParameter name='env.ParameterName' value='NewValue']"
    

    系统属性(由system.前缀定义)

     Write-Host "##teamcity[setParameter name='system.ParameterName' value='NewValue']"
    

    例如

    1. 参数应该在构建的参数部分可用

    2. 添加“Write-Host”更新参数值

    【讨论】:

      猜你喜欢
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      相关资源
      最近更新 更多