Explorar o código

获取最近几次 build 记录和最近一次 build 结果的桩

Shifang Lei %!s(int64=7) %!d(string=hai) anos
pai
achega
5b3a8bf345

+ 2 - 1
src/main/java/nju/seec/SEECdemo/data/entity/assignment/BuildRecord.java

@@ -12,6 +12,7 @@ import java.sql.Timestamp;
 public class BuildRecord {
 
     @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
     @Column(name = "id")
     private Integer id;
 
@@ -28,7 +29,7 @@ public class BuildRecord {
     private Timestamp buildTime;
 
     @Basic
-    @Column(name = "console_output")
+    @Column(name = "console_output", columnDefinition = "LONGTEXT NOT NULL")
     private String consoleOutput = "";
 
     @Basic

+ 2 - 2
src/main/java/nju/seec/SEECdemo/logic/api/impl/JenkinsApiImpl.java

@@ -73,7 +73,7 @@ public class JenkinsApiImpl implements JenkinsApi {
 			reference = server.getJob(String.valueOf(id)).build();
 		} else {
 			// 0.3.7版本的Jenkins客户端库中build(Map<String, String> params)方法存在BUG,会触发两次构建
-			reference = server.getJob(String.valueOf(id)).build(paramMap, false);
+			reference = server.getJob(String.valueOf(id)+"-build").build(paramMap, false);
 		}
 		QueueItem item = server.getQueueItem(reference);
 		while (item.getExecutable() == null) {
@@ -96,7 +96,7 @@ public class JenkinsApiImpl implements JenkinsApi {
 	public BuildDetails fetchBuildDetails(int id, int buildNumber, String target, boolean waitFinished) throws IOException {
 		BuildDetails result = new BuildDetails();
 		BuildWithDetails build;
-		build = server.getJob(String.valueOf(id)).getBuildByNumber(buildNumber).details();
+		build = server.getJob(String.valueOf(id)+"-build").getBuildByNumber(buildNumber).details();
 		while (waitFinished && (build.getResult() == null || build.getDuration() == 0)) {
 			try {
 				Thread.sleep(500);

+ 29 - 2
src/main/java/nju/seec/SEECdemo/web/controller/ProjectController.java

@@ -1,13 +1,40 @@
 package nju.seec.SEECdemo.web.controller;
 
+import nju.seec.SEECdemo.web.dto.BuildRecordDTO;
 import org.springframework.web.bind.annotation.*;
 
+import java.sql.Timestamp;
+import java.util.ArrayList;
+import java.util.List;
+
 @RestController
-@RequestMapping("/api")
+@RequestMapping("/api/project")
 public class ProjectController {
 
+    private static final int BUILD_SUCCESS = 1;
+    private static final int BUILD_FAILURE = -1;
+    private static final int UNCOMMITTED = 0;
+
     @GetMapping("/test")
-    public String create(){
+    public String create() {
         return "success";
     }
+
+    @PostMapping("/{id:\\d+}/recentBuild")
+    public List<BuildRecordDTO> getBuildRecords(@PathVariable int id, @RequestParam(value = "count") int count) {
+
+        List<BuildRecordDTO> recordDTOList = new ArrayList<>();
+        for (int i = 1; i <= count; i++) {
+            BuildRecordDTO recordDTO = new BuildRecordDTO();
+            recordDTO.setId(i);
+            recordDTO.setBuildTime(new Timestamp(System.currentTimeMillis() - i * 10000));
+            recordDTOList.add(recordDTO);
+        }
+        return recordDTOList;
+    }
+
+    @PostMapping("/lastBuild")
+    public int getLastBuildResult() {
+        return BUILD_SUCCESS;
+    }
 }

+ 12 - 0
src/main/java/nju/seec/SEECdemo/web/dto/BuildRecordDTO.java

@@ -0,0 +1,12 @@
+package nju.seec.SEECdemo.web.dto;
+
+import lombok.Data;
+
+import java.sql.Timestamp;
+
+@Data
+public class BuildRecordDTO {
+
+    private int id;
+    private Timestamp buildTime;
+}