1
0
Просмотр исходного кода

fix: sonar java can check branch specific commit

claws 4 лет назад
Родитель
Сommit
ca25d92326

+ 0 - 2
api/src/main/java/cn/seecoder/api/ApplicationProperties.java

@@ -108,8 +108,6 @@ public class ApplicationProperties {
 		@NotEmpty
 		private String host;
 		@NotEmpty
-		private String projectKey;
-		@NotEmpty
 		private String loginToken;
 	}
 

+ 15 - 9
web/src/main/java/cn/seecoder/web/core/pipeline/handler/SonarJavaImageBuildHandler.java

@@ -23,8 +23,6 @@ import org.eclipse.jgit.api.Git;
 import org.springframework.web.util.UriComponentsBuilder;
 
 import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
@@ -45,7 +43,7 @@ public class SonarJavaImageBuildHandler extends AbstractHandler {
 
     // properties from pipeline config json
 //    private String repoUrl;
-    private String branchName;
+    private String branchOrHash;
     private int projectId;
 //    private String commitHash;
 
@@ -71,12 +69,20 @@ public class SonarJavaImageBuildHandler extends AbstractHandler {
         // convert url for local test
         UriComponentsBuilder builder = UriComponentsBuilder.fromHttpUrl(repoUrl);
         repoUrl = builder.scheme("https").host("seecoder-gitlab-gitlab.seec.seecoder.cn").path(".git/").toUriString();
-        BranchVO branch = branchService.getBranchById(projectId, branchName);
+        BranchVO branch = branchService.getBranchById(projectId, branchOrHash);
+        String commitHash;
+        boolean isBranch;
         if (branch == null) {
-            throw new PipelineException(HttpStatus.SC_SERVICE_UNAVAILABLE, PipelineException.BRANCH_NOT_FOUND_ERROR);
+//            throw new PipelineException(HttpStatus.SC_SERVICE_UNAVAILABLE, PipelineException.BRANCH_NOT_FOUND_ERROR);
+            context.appendResult("未找到对应分支,尝试当做commit hash处理");
+            commitHash = branchOrHash;
+            isBranch = false;
+        } else {
+             commitHash = branch.getCommit().getId();
+             isBranch = true;
         }
-        String commitHash = branch.getCommit().getId();
-        String projectKey = applicationProperties.getSonar().getProjectKey();
+
+        String sonarProjectKey = String.format("%s-%s", imageName, commitHash); //TODO
         String loginToken = applicationProperties.getSonar().getLoginToken();
         String sonarHost = applicationProperties.getSonar().getHost();
 
@@ -86,7 +92,7 @@ public class SonarJavaImageBuildHandler extends AbstractHandler {
             //注:temp文件/目录系统会定时删,实际文件名喂 prefix + 它生成的suffix随机数,所以不会命名冲突
             directory = Files.createTempDirectory("seecoder-devcloud-");
             Git git = gitApi.clone(repoUrl, directory.toString());
-            git.checkout().setCreateBranch(false).setStartPoint("origin/" + branchName).setName("origin/" + branchName).call();
+            git.checkout().setCreateBranch(false).setStartPoint(branchOrHash).setName(branchOrHash).call();
         } catch (Exception e) {
             context.appendErrorResult(PipelineException.GIT_CLONE_ERROR, e);
             throw new PipelineException(HttpStatus.SC_SERVICE_UNAVAILABLE, PipelineException.GIT_CLONE_ERROR, e);
@@ -116,7 +122,7 @@ public class SonarJavaImageBuildHandler extends AbstractHandler {
                         .replace("%projectId%", Integer.toString(projectId))
                         .replace("%imageName%", imageName)
                         .replace("%imageTag%", imageTag)
-                        .replace("%projectKey%", projectKey)
+                        .replace("%projectKey%", sonarProjectKey)
                         .replace("%loginToken%", loginToken)
                         .replace("%host%", sonarHost);
 

+ 0 - 1
web/src/main/resources/application-lzl.yml

@@ -54,7 +54,6 @@ seecoder:
     tls: true
   sonar:
     host: https://sonarqube-test.seec.seecoder.cn
-    projectKey: test
     loginToken: 787658b11f0332f631bfb186aa1bfcd7898b0498
 
 

+ 0 - 1
web/src/main/resources/application-prod.yaml

@@ -42,7 +42,6 @@ seecoder:
     tls: false
   sonar:
     host: https://sonarqube-test.seec.seecoder.cn
-    projectKey: test
     loginToken: 787658b11f0332f631bfb186aa1bfcd7898b0498
 
 logging:

+ 2 - 2
web/src/main/resources/sql/data_init.sql

@@ -32,7 +32,7 @@ INSERT INTO devcloud.stage_config (id, name, value, editable, stage_id) VALUES (
 INSERT INTO devcloud.stage_config (id, name, value, editable, stage_id) VALUES (16, 'port', '3306', 0, 9);
 INSERT INTO devcloud.stage_config (id, name, value, editable, stage_id) VALUES (17, 'username', 'root', 0, 9);
 INSERT INTO devcloud.stage_config (id, name, value, editable, stage_id) VALUES (18, 'password', 'root', 1, 9);
-INSERT INTO devcloud.stage_config (id, name, value, editable, stage_id) VALUES (19, 'branchName', '#todo', 1, 10);
+INSERT INTO devcloud.stage_config (id, name, value, editable, stage_id) VALUES (19, 'branchOrHash', '#todo', 1, 10);
 INSERT INTO devcloud.stage_config (id, name, value, editable, stage_id) VALUES (20, 'projectId', '{projectId}', 0, 10);
-INSERT INTO devcloud.stage_config (id, name, value, editable, stage_id) VALUES (21, 'branchName', 'master', 1, 11);
+INSERT INTO devcloud.stage_config (id, name, value, editable, stage_id) VALUES (21, 'branchOrHash', '#todo', 1, 11);
 INSERT INTO devcloud.stage_config (id, name, value, editable, stage_id) VALUES (22, 'projectId', '{projectId}', 0, 11);

+ 1 - 1
web/src/main/resources/template/config/SONAR_JAVA8.json

@@ -3,7 +3,7 @@
     "name": "sonar-java",
     "active": true,
     "configs": {
-      "branchName": "#todo",
+      "branchOrHash": "#todo",
       "projectId": "#auto"
     }
   }