如何在持续集成的构建TFS(Team Foundation Server)结束时使命令运行sonar-runner? 信息:TFS 2013,Windows Server 2008 R2,声纳 - 跑步者2.3
答案 0 :(得分:2)
在构建过程中执行任意命令的唯一方法是将InvokeProcess活动添加到BuildProcessTemplate。这并不像最初看起来那么困难。
制作DefaultTemplate.xaml的副本,该副本位于团队项目的/ BuildProcessTemplates文件夹中。将它命名为您想要的任何名称 - SonarRunnerTemplate.xaml或其他。
在Visual Studio中打开新模板
点击右上方的“全部折叠”,可以轻松导航到正确的活动。
浏览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
在“然后”框中,您会看到Copy Files to Drop Location
个活动。暂时将其移至“Else”框中。
从工具箱中添加Sequence
个活动到(现在为空)然后框
将Copy Files to Drop Location
(我们之前移动过的)移回刚刚添加到Then框中的Sequence活动。
从工具箱中添加InvokeProcess
个活动以运行 AFTER “将文件复制到放置位置”活动
打开InvokeProcess活动的属性。 FileName
字段是您需要执行的命令。在这种情况下,执行Sonar runner的命令。编写运行Sonar的批处理或powershell脚本可能是最简单的...然后调用它。
保存构建过程模板并将其添加到TFS。然后,您可以将此模板用于构建定义。
这种方法的一个问题是,在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网站上:
ALM游侠准备的文档描述了如何安装SonarQube并将其与现有的TFS服务器集成: