Skip to content

Commit

Permalink
Back port mc1arke#213 Add support for multiple pull request decoratio…
Browse files Browse the repository at this point in the history
…n in mono repo

If multiple micro-services are modified at once then only the final Sonarqube PR decoration appeared in the checks tab of Github. This change updates the name of the Status check to include the Sonarqube project name so that multiple checks can be attached to the one pull request.
  • Loading branch information
useful-devops-tools authored and Gong Yi committed Oct 14, 2020
1 parent c4405f3 commit fc155b1
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,10 @@ public String getAnalysisProjectKey() {
return project.getKey();
}

public String getAnalysisProjectName() {
return project.getName();
}

public List<QualityGate.Condition> findFailedConditions() {
return qualityGate.getConditions().stream().filter(c -> c.getStatus() == QualityGate.EvaluationStatus.ERROR)
.collect(Collectors.toList());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ public DecorationResult createCheckRun(AnalysisDetails analysisDetails, UnifyCon

Map<String, Object> inputObjectArguments = new HashMap<>();
inputObjectArguments.put("repositoryId", repositoryAuthenticationToken.getRepositoryId());
inputObjectArguments.put("name", appName + " Results");
inputObjectArguments.put("name", String.format("%s Sonarqube Results", analysisDetails.getAnalysisProjectName()));
inputObjectArguments.put("status", RequestableCheckStatusState.COMPLETED);
inputObjectArguments.put("conclusion", QualityGate.Status.OK == analysisDetails.getQualityGateStatus() ?
CheckConclusionState.SUCCESS : CheckConclusionState.FAILURE);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2019 Michael Clarke
* Copyright (C) 2020 Michael Clarke
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
Expand Down Expand Up @@ -363,6 +363,7 @@ private void createCheckRunHappyPath(QualityGate.Status status, String basePath,
when(analysisDetails.createAnalysisSummary(any())).thenReturn("dummy summary");
when(analysisDetails.getCommitSha()).thenReturn("commit SHA");
when(analysisDetails.getAnalysisProjectKey()).thenReturn("projectKey");
when(analysisDetails.getAnalysisProjectName()).thenReturn("projectName");
when(analysisDetails.getBranchName()).thenReturn("branchName");
when(analysisDetails.getAnalysisDate()).thenReturn(new Date(1234567890));
when(analysisDetails.getAnalysisId()).thenReturn("analysis ID");
Expand Down Expand Up @@ -491,7 +492,7 @@ private void createCheckRunHappyPath(QualityGate.Status status, String basePath,
assertThat(annotationArgumentCaptor.getValue()).isEqualTo(expectedAnnotationObjects);

verify(inputObjectBuilders.get(position + 1)).put(eq("repositoryId"), eq("repository ID"));
verify(inputObjectBuilders.get(position + 1)).put(eq("name"), eq("sonar.alm.github.app.name Results"));
verify(inputObjectBuilders.get(position + 1)).put(eq("name"), eq("projectName Sonarqube Results"));
verify(inputObjectBuilders.get(position + 1)).put(eq("headSha"), eq("commit SHA"));
verify(inputObjectBuilders.get(position + 1)).put(eq("status"), eq(RequestableCheckStatusState.COMPLETED));
verify(inputObjectBuilders.get(position + 1)).put(eq("conclusion"), eq(status == QualityGate.Status.OK ?
Expand Down

0 comments on commit fc155b1

Please sign in to comment.