有没有办法使用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的参数传递,那将会很棒
答案 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(命令行)
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