Jenkins + pipeline SonarQube task ‘AX8z8yYQBX52uSHGbNy6‘ status is ‘IN_PROGRESS‘

1.在使用pipeline 来实现Sonarqube自动化代码检测获取质检状态时,一直等不到‘OK’的状态,如下图所示,一开始的执行代码和运行的截图,等待一会之后报超时错误

script {
         timeout(1) {
            //这里设置超时时间1分钟,如果Sonar Webhook失败,不会出现一直卡在检查状态
            //利用Sonar webhook功能通知pipeline代码检测结果,未通过质量阈,pipeline将会fail
            def qg = waitForQualityGate('SonarQube')
            //注意:这里waitForQualityGate()中的参数也要与之前SonarQube servers中Name的配置相同
            if (qg.status != 'OK') {
                   error "未通过Sonarqube的代码质量阈检查,请及时修改!failure: ${qg.status}"
             }
          }
 }


 

 

2.后来反复查看很久,检查了SonarQube的webhook,Jenkins里面配置的Sonarqube服务端和SonarScanner,都没啥问题,最后在 Stack Overflow 的帖子里面,发现这是一个 SonarQube 的bug, 解决方案是在 Sonar Qube状态确认前,先让 SonarQube 跑一会儿,确保 SonarQube Task 成功运行状态。

3.下面时修改后的jenkinsfile脚本和运行截图

script {
						Integer waitSeconds = 10
          				Integer timeOutMinutes = 10
          				Integer maxRetry = (timeOutMinutes * 60) / waitSeconds as Integer
                        //  未通过代码检查,中断
                        for (Integer i = 0; i < maxRetry; i++) {
				            try {
				              timeout(time: waitSeconds, unit: 'SECONDS') {
				              	//利用sonar webhook功能通知pipeline代码检测结果,未通过质量阈,pipeline将会fail
				                def qg = waitForQualityGate()
				                echo "${qg.status}"
				                if (qg.status != 'OK') {
				                  error "Sonar quality gate status: ${qg.status}"
				                } else {
				                  i = maxRetry
				                }
				              }
				            } catch (Throwable e) {
				              if (i == maxRetry - 1) {
				                throw e
				              }
				            }
          				}
                    }

 

从上面的运行截图可以看到,在第一次获取状态到最后一次成功获取状态中间等待了几十秒钟,所以这中间的时间有个不确定性,不是大家写的不对,是等待的时间不够长,导致了超时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值