本文介绍了将Quality Gate添加到Jenkins Maven项目的构建部分的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个Jenkins Maven项目,它为我的构建运行SonarQube分析。我想添加质量门,这样当质量门失败时我的构建就会失败。我也希望不使用Jenkinsfile(所以只使用Jenkins项目配置)。目前,我使用Build部分来执行SonarQube分析。‘Goals and Options’字段的代码如下:
clean package -Dmaven.test.skip=true sonar:sonar -Dsonar.projectKey=someName -Dsonar.sources=src/main/java这里是我希望定义和实施质量门的地方:
我试图将Quality Gate添加到‘Post Build’部分,但没有可用的选项对我起作用(我本来想尝试让‘SonarQube Analysis with Maven’选项起作用,但现在它已被弃用)。我还发现‘Quality Gate’插件对Jenkins是可用的,但它有一个我不想要的漏洞(但我想知道是否有其他插件可以替代)。
我认为‘Pre-Steps’部分中的‘Execute SonarQube Scanner’选项可以做到这一点,但我找不到需要添加到Sonar-project t.Properties文件中的正确行(是否有类似sonar.qualityGateFailBuild = true选项的行?)
This这里的问题提到Maven版本是个问题。不知道是否有可能解决这个问题?(我的maven版本是3.8.0,无法更改)更新
找到允许配置sonar.Property文件的"Post Step"部分。目前,它看起来如下,但质量门仍然没有失败的我的构建。我还需要添加哪些其他参数?: 推荐答案经过反复试验,我发现thisPOST是救命稻草。当我尝试使用Nanotron的代码(上一个答案)时,我遇到了一些错误,所以我添加了一些调整。以下是对我有效的方法(我使用了Jenkins项目的‘Post Steps’-->;‘Execute Shell Command’部分):
if [ -e tmp.txt ]; then rm tmp.txt rm error.txt rm task.json fi url=$(cat $WORKSPACE/[your pathway here]/target/sonar/report-task.txt | grep ceTaskUrl | cut -c11- ) echo ${url} pswd=${SONAR_AUTH_TOKEN} // env variable that fetches sonar token curl -s -X GET -u "${pswd}" "$url" | python -m json.tool stsCheck=1 while [ $stsCheck = 1 ] do sleep 10 curl -s -X GET -u "${pswd}" "$url" -o task.json status=$(python -m json.tool < task.json | grep -i "status" | cut --delimiter=: --fields=2 | sed 's/"//g' | sed 's/,//g' ) echo ${status} if [ $status = SUCCESS ]; then analysisID=$(python -m json.tool < task.json | grep -i "analysisId" | cut -c24- | sed 's/"//g' | sed 's/,//g') analysisUrl="my-sonar-server/api/qualitygates/project_status?analysisId=${analysisID}" echo ${analysisID} echo ${analysisUrl} stsCheck=0 fi done curl -s -X GET -u "${pswd}" -L $analysisUrl | python -m json.tool curl -s -X GET -u "${pswd}" -L $analysisUrl | python -m json.tool | grep -i "status" | cut -c28- | sed 's/.$//' >> tmp.txt cat tmp.txt sed -n '/ERROR/p' tmp.txt >> error.txt cat error.txt if [ $(cat error.txt | wc -l) -eq 0 ]; then echo "Quality Gate Passed ! Setting up SonarQube Job Status to Success ! " else echo "Quality Gate Failed ! Setting up SonarQube Job Status to Failure ! " exit 1 fi更多推荐
将Quality Gate添加到Jenkins Maven项目的构建部分
发布评论