final ProjectStatusWsRequest wsRequest = new ProjectStatusWsRequest(); wsRequest.setProjectKey(key); final ProjectStatusWsResponse wsResponse = wsClient.qualityGates() .projectStatus(wsRequest); status = QualityGateBadge.valueOf(wsResponse.getProjectStatus()
@VisibleForTesting void checkQualityGate(WsClient wsClient, String analysisId) { LOGGER.debug("Requesting quality gate status for analysisId {}", analysisId); ProjectStatusWsResponse projectStatusResponse = wsClient .qualityGates() .projectStatus(new ProjectStatusWsRequest().setAnalysisId(analysisId)); ProjectStatus projectStatus = projectStatusResponse.getProjectStatus(); Status status = projectStatus.getStatus(); LOGGER.info("Quality gate status: {}", status); int errors = 0; if (Status.ERROR.equals(status) || Status.WARN.equals(status)) { errors = logConditions(projectStatus.getConditionsList()); } if (Status.ERROR.equals(status)) { LOGGER.error("{} Project did not meet {} conditions", BuildBreakerPlugin.LOG_STAMP, errors); throw new IllegalStateException("Project does not pass the quality gate."); } }
private MeasureHolder applyQualityGateTreshold(final WsClient wsClient, final String key, final String metric, final MeasureHolder measureHolder) { final ProjectStatusWsRequest projectStatusWsRequest = new ProjectStatusWsRequest(); projectStatusWsRequest.setProjectKey(key); final ProjectStatusWsResponse projectStatusWsResponse = wsClient.qualityGates() .projectStatus(projectStatusWsRequest); final List<Condition> conditions = projectStatusWsResponse.getProjectStatus() .getConditionsList(); for (final Condition condition : conditions) { if (metric.equals(condition.getMetricKey())) { final Status status = condition.getStatus(); switch (status) { case ERROR: measureHolder.setBackgroundColor(SVGImageColor.RED); break; case OK: measureHolder.setBackgroundColor(SVGImageColor.GREEN); break; case WARN: measureHolder.setBackgroundColor(SVGImageColor.ORANGE); break; default: measureHolder.setBackgroundColor(SVGImageColor.GRAY); break; } } } return measureHolder; } }