将Quality Gate添加到Jenkins Maven项目的构建部分

编程入门 行业动态 更新时间:2024-10-26 04:19:37
本文介绍了将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项目的构建部分

本文发布于:2023-11-17 05:45:54,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1609041.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:项目   Gate   Quality   Maven   Jenkins

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!