【问题标题】:Different nunit versions per branch in teamcityteamcity 中每个分支的不同 nunit 版本
【发布时间】:2017-11-15 11:50:29
【问题描述】:

当使用 teamcity NUnit 3 构建步骤时,它会询问 nunit 控制台运行程序的路径。它被配置为在包中的特定文件夹中搜索它,例如packages\NUnit.ConsoleRunner.3.6.1\tools

但是在将 nunit 升级到更新版本 (3.7.0) 后,需要更改此路径,但它位于构建步骤中。有没有办法根据分支名称设置参数值或如何解决需要多个 nunit 版本的问题?

【问题讨论】:

    标签: continuous-integration nunit teamcity nunit-console


    【解决方案1】:

    这是一个很好的问题。是的,这是可以做到的;这是一种方法:

    根据分支动态设置 TeamCity 参数

    首先,在 TeamCity 中新建一个参数:


    接下来,打开一个 PowerShell IDE 并创建一个简单的脚本来修改 TeamCity 参数,如下所示:

    代码:

    Write-Host "##teamcity[setParameter name='MyNewParameter' value='someValue']"
    

    将此脚本保存在您的源代码树中(例如,SetTeamCityParameters.ps1),根据分支根据需要修改参数值。例如,您可以这样做:

    Write-Host "##teamcity[setParameter name='NUnitVersion' value='3.7']"
    

    最后,创建一个 PowerShell 构建步骤(作为 TeamCity 配置中的第一个构建步骤)并在“脚本源”中包含以下代码(根据您保存脚本的源树中的位置修改路径):

    If (Test-Path "Source/SetTeamCityParameters.ps1") { invoke-expression "Source/SetTeamCityParameters.ps1" }
    

    您的 TeamCity 构建现在将根据正在构建的分支获得此参数的正确值。


    基于分支在 TeamCity 中运行不同的 NUnit 版本

    但是,仅更改参数可能不足以满足您的需求,因为据我所知,您无法动态更改 NUnit 构建步骤的该属性。 幸运的是,有一个解决方法: 创建 两个 TeamCity NUnit 构建步骤(一个从另一个克隆),其中唯一的区别是目标 NUnit 版本,如下所示:

    请注意,除了目标 NUnit 版本和使用参数的测试程序集路径之外,这两个构建步骤是相同的​​。 (在此示例中,它们使用了多个参数,但您的情况可能更简单。)

    现在您需要在 TeamCity 中创建两个参数,称为 TestsNUnitv2 和 `TestsNUnitv3',然后修改您的 PowerShell 脚本以设置它们:

    Write-Host "##teamcity[setParameter name='TestsNUnitv2' value='RealTests.dll']"
    Write-Host "##teamcity[setParameter name='TestsNUnitv3' value='DummyTests.dll']"
    

    请注意,这里我们将 NUnit v2 测试运行程序指向真正的测试程序集,将 NUnit v3 测试运行程序指向一个虚拟测试程序集。您需要自己创建此测试程序集并将其包含在您的解决方案中(在所有分支上) - 只需在其中进行一项简单通过的测试即可。

    最后,修改两个构建步骤,使“v2”构建步骤使用“TestsNUnitv2”路径来查找其测试程序集,而“v3”构建步骤使用其他参数。

    具有上述脚本的任何分支都将运行真正的测试(在 NUnit v2 上)并“通过”虚拟测试程序集(在 NUnit v3 上)。如果您希望在特定分支上以 NUnit v3 为目标,则只需在脚本中切换参数值仅在该分支上。 TeamCity 将动态设置参数,嘿,你的测试现在正在针对 NUnit v3 运行。

    如果有任何不清楚的地方,请告诉我,我会尽力解释得更好。希望这会有所帮助,对不起,我迟到了一年!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 2016-11-11
      • 2012-09-24
      • 1970-01-01
      相关资源
      最近更新 更多