【问题标题】:Execute sonar-runner in TFS build在 TFS 构建中执行 sonar-runner
【发布时间】:2013-08-19 11:32:51
【问题描述】:

在持续集成中,如何在构建 TFS(Team Foundation Server)结束时运行 sonar-runner 的命令? 信息:TFS 2013、Windows Server 2008 R2、sonar-runner 2.3

【问题讨论】:

  • 以下是卡瓦略的答案吗?如果是,请采纳!

标签: tfs sonarqube


【解决方案1】:

在构建过程中执行任意命令的唯一方法是将 InvokeProcess 活动添加到 BuildProcessTemplate。这并不像起初看起来那么困难。

  1. 复制位于团队项目的 /BuildProcessTemplates 文件夹中的 DefaultTemplate.xaml。随意命名 - SonarRunnerTemplate.xaml 之类的。

  2. 在 Visual Studio 中打开新模板

  3. 点击右上角的“全部折叠”可轻松导航到正确的活动。

  4. 浏览到Process > Sequence > Run On Agent > Try Compule, Test, and Associate Changesets and Work Items > 在Finally 子句中 > Revert Workspace and Copy Files > If DropBuild And DropLocation is Set

  5. 在“然后”框中,您将看到 Copy Files to Drop Location 活动。暂时将其移至“其他”框中。

  6. 将工具箱中的Sequence 活动添加到(现在为空)然后框

  7. Copy Files to Drop Location(我们之前移动过的)移回您刚刚添加到 Then 框中的 Sequence 活动。

  8. 从工具箱中添加一个InvokeProcess 活动以运行之后“复制文件到放置位置”活动

  9. 打开 InvokeProcess 活动的 属性FileName 字段是您需要执行的命令。在这种情况下,执行 Sonar runner 的命令。编写运行 Sonar 的批处理或 powershell 脚本可能是最简单的方法......然后调用它。

  10. 保存构建过程模板并将其添加到 TFS。然后,您可以将此模板用于您的构建定义

这种方法的一个问题是,在 InvokeProcess 命令返回之前,构建不会“完成”。因此,如果您的声纳运行需要很长时间(我知道我已经看到大型代码库需要超过 24 小时),那么构建将需要很长时间才能完成。这可以通过让脚本异步生成 Sonar 进程来缓解。

【讨论】:

    【解决方案2】:

    作为 Microsoft 和 SonarQube 合作的一部分,现在有一种官方方法可以让 MsBuild 和 TeamBuild 与 SonarQube 一起工作。您可以在 SonarQube 网站上找到所有详细信息:

    http://www.sonarqube.org/announcing-sonarqube-integration-with-msbuild-and-team-build/

    在 Microsoft ALM 网站上:

    http://blogs.msdn.com/b/visualstudioalm/archive/2015/04/28/technical-debt-management-announcing-sonarqube-integration-with-msbuild-and-team-build.aspx

    还有由 ALM 管理员准备的文档,描述如何安装 SonarQube 并将其与现有 TFS 服务器集成:

    https://vsarguidance.codeplex.com/downloads/get/1452516

    【讨论】:

      猜你喜欢
      • 2014-09-12
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      • 2014-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-03
      相关资源
      最近更新 更多