在TFS构建中执行sonar-runner

时间:2013-08-19 11:32:51

标签: tfs sonarqube

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

2 个答案:

答案 0 :(得分:2)

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

  1. 制作DefaultTemplate.xaml的副本,该副本位于团队项目的/ BuildProcessTemplates文件夹中。将它命名为您想要的任何名称 - 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个活动。暂时将其移至“Else”框中。

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

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

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

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

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

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

答案 1 :(得分:0)

作为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