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

Powershell 如何使用Sonar-Runner.bat动态设置ProjectVersion,powershell,parameters,sonarqube,sonar-runner,Powershell,Parameters,Sonarqube,Sonar Runner,是否有一种方法可以使用sonar runner动态更新每个构建的项目版本,而无需每次手动更新sonar-project.properties文件? (注意:这适用于非mavenized.NET MVC应用程序) 试图参数化属性文件,使其自动引用环境变量集 添加在sonar-runner.bat中 对于/f“delims=“%%i in('hg identify-n'),请设置hg_LOCAL_REV=%%i 改进型声纳-project.properites sonar.projectVersio

是否有一种方法可以使用sonar runner动态更新每个构建的项目版本,而无需每次手动更新sonar-project.properties文件? (注意:这适用于非mavenized.NET MVC应用程序)

试图参数化属性文件,使其自动引用环境变量集

添加在sonar-runner.bat中

对于/f“delims=“%%i in('hg identify-n'),请设置hg_LOCAL_REV=%%i

改进型声纳-project.properites

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

如果我们可以将projectVersion作为sonar runner的参数传递,那就太好了。bat

启动sonar runner时,您可以从sonar-project.properties中删除“sonar.projectVersion”,并将该值作为命令行参数传递:


sonar runner-Dsonar.projectVersion=“something”
我决定创建一个简单的模板文件作为快速解决方法。 只需在模板文件中搜索/替换唯一字符串,并保存到项目的新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

希望这有助于其他人找到这个

注意:Sonar runner(在原始帖子中提到)已被弃用并替换为

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

声纳项目。属性

  • 添加行:
    sonar.projectVersion=${env.APP_VERSION}-快照
TeamCity构建配置,“参数”

  • 定义一个名为:
    APP\u VERSION
    +的环境变量,添加其他参数,如
    sonar.host.url
    ,以避免将源代码与实例版本、密码等耦合
TeamCity构建配置,构建步骤1(命令行)

  • 添加脚本(确保用文件夹的真实名称替换
    $MY\u APP\u FOLDER$
    
    echo“##teamcity[setParameter name='env.APP_VERSION'value='$”(/usr/libexec/PlistBuddy-c“Print:CFBundleShortVersionString”“$MY_APP_FOLDER$/Info.plist”)”
    
TeamCity构建配置,构建步骤2(命令行)

  • 添加脚本(假设develope是报告给SonarQube的分支):
    
    如果[%teamcity.build.branch%=“开发”]
    然后
    SONAR_RUNNER_OPTS=-Xmx1024m声纳扫描仪-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
    

Hi Dinish,我以前确实尝试过,但sonar runner似乎无法识别该特定选项。不幸的是,引发了以下错误:错误:无法识别的选项:.projectVersion=1234。也许我遗漏了什么?我还认为一个可能的选项可能是,每次使用模板生成新属性文件启动sonar runner…请注意属性名称前面的D,这不是输入错误。因此,您真正想要的是“-Dsonar.projectVersion”,而不仅仅是“-sonar.projectVersion”。感谢您的回复,Dinesh。我没有忘记-D switch.Ex)sonar runner-Dsonar.projectVersion=1234