如何使用Sonar-Runner.bat动态设置ProjectVersion

时间:2014-04-28 17:01:59

标签: powershell parameters sonarqube sonar-runner

有没有办法使用sonar-runner动态更新每个构建的项目版本,而无需每次都手动更新sonar-project.properties文件? (注意:这是针对非mavenized的.NET MVC应用程序)

尝试参数化属性文件,让它自动引用环境变量集

在sonar-runner.bat

中添加
  
    

for / f“delims =”%% i in('hg identify -n')do set HG_LOCAL_REV = %% i

  

修改声纳-project.properites

  
    

sonar.projectVersion =%HG_LOCAL_REV%#不想手动更新此

  

如果我们可以将projectVersion作为sonar-runner.bat的参数传递,那将会很棒

3 个答案:

答案 0 :(得分:4)

你可以删除" sonar.projectVersion"完全来自sonar-project.properties,并在启动声纳运行器时将值作为命令行参数传递:

sonar-runner -Dsonar.projectVersion="something"

答案 1 :(得分:0)

我决定创建一个简单的模板文件作为快速解决方法。 只需在模板文件中搜索/替换唯一字符串,然后保存到项目的新sonar-project.properties文件中。

以下是一些示例代码,以防任何人感兴趣:

$hg_version = hg identify -n
(get-content {C:\dev\myProj\sonar-project.template | foreach-object {$_ -replace "my_proj_version", $hg_version}) | set-content c:\dev\myProj\sonar-project.properties
sonar-runner

希望这对其他人发现这一点很有帮助。

答案 2 :(得分:0)

注意: Sonar-runner(在原帖中提到)已弃用,已替换为SonarQube Scanner

这是使用TeamCity(版本2017.1.4)和SonarQube扫描仪(版本2.9.0.670)的iOS(Swift)项目的工作方法。我在这里添加它作为我自己的未来参考,以防其他人需要它:

<强> sonar-project.properties

  • 添加行: sonar.projectVersion=${env.APP_VERSION}-SNAPSHOT

TeamCity Build Config,&#34;参数&#34;

  • 定义一个名为APP_VERSION的环境变量+添加其他参数,例如sonar.host.url,以避免将源代码与实例版本,密码等耦合。

TeamCity Build Config,构建步骤1(命令行)

  • 添加脚本(请务必将$MY_APP_FOLDER$替换为该文件夹的真实名称: echo "##teamcity[setParameter name='env.APP_VERSION' value='$(/usr/libexec/PlistBuddy -c "Print :CFBundleShortVersionString" "$MY_APP_FOLDER$/Info.plist")']"

TeamCity Build Config,构建步骤2(命令行)

  • 添加脚本(假设develop是向SonarQube报告的分支): if [ %teamcity.build.branch% = "develop" ] then SONAR_RUNNER_OPTS=-Xmx1024m sonar-scanner -e \ -Dsonar.host.url=%system.sonar.host.url%\ -Dsonar.login=%system.sonar.login%\ -Dsonar.password=%system.sonar.password%\ -Dsonar.cfamily.build-wrapper-output.bypass=true fi