迫使gitlab CI中的sonarqube工作失败

时间:2017-10-16 15:40:33

标签: gitlab gitlab-ci

在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”中的任何事件。

如果声纳分析失败,如何强制失败?

谢谢,

1 个答案:

答案 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。基于限制,中断构建。