在gitlab-ci中有一个类似下面的工作:
static_test_service:
stage: test code
script:
- docker run --rm -v $(pwd):/data -w /data dparra0007/sonar-scanner:20171010-1 sonar-scanner
-Dsonar.projectKey=$CI_PROJECT_NAMESPACE:$CI_PROJECT_NAME
-Dsonar.projectName=$CI_PROJECT_NAME
-Dsonar.branch=$CI_COMMIT_REF_NAME
-Dsonar.projectVersion=$CI_JOB_ID
-Dsonar.sources=./greetingapi/src
-Dsonar.java.binaries=./greetingapi/target
-Dsonar.gitlab.project_id=$CI_PROJECT_ID
-Dsonar.gitlab.commit_sha=$CI_COMMIT_SHA
-Dsonar.gitlab.ref_name=$CI_COMMIT_REF_NAME
当sonarqube分析失败时,我需要使gitlab工作失败。但在这种情况下,会报告分析中的错误,但不会在Gitlab CI中向作业发送失败状态,并且该步骤始终成功完成。
似乎无法通过gitlab job来管理“docker run”中的任何事件。
如果声纳分析失败,如何强制失败?
谢谢,
答案 0 :(得分:0)
要为失败的Quality Gate中断CI构建,您已根据以下步骤编写了脚本
1。在/report-task.txt中搜索CE任务URL(ceTaskUrl)和CE任务ID(ceTaskId)的值
2.Call / api / ce / task?id = XXX,其中XXX是从步骤1中获取的CE任务ID,例如:-https://yourSonarURL/api/ce/task?id=Your ceTaskId
3。等待一段时间,直到步骤2中的状态为“成功”,“已取消”或“失败”
4。如果失败,则中断构建(此处失败,无法生成声纳报告)
5。如果成功,则使用/ api / ce / task返回的JSON中的analysisId? id = XXX(第2步)并立即调用/ api / qualitygates / project_status?analysisId = YYY来检查质量门的状态。 例如:-https://yourSonarURL/api/qualitygates/project_status?analysisId=Your analysisId
6。步骤5给出了严重,严重和轻微错误阈值限制的状态
7。基于限制,中断构建。