diff --git a/deploy-ease-core/pom.xml b/deploy-ease-core/pom.xml index 845bd39..eb6ef0b 100644 --- a/deploy-ease-core/pom.xml +++ b/deploy-ease-core/pom.xml @@ -136,6 +136,10 @@ com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config + + org.springframework.cloud + spring-cloud-loadbalancer + com.alibaba.nacos nacos-client @@ -143,7 +147,10 @@ org.apache.commons commons-lang3 - 3.12.0 + + + org.springframework.cloud + spring-cloud-starter-openfeign diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/DeployEaseApplication.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/DeployEaseApplication.java index 0cc18e9..42d5191 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/DeployEaseApplication.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/DeployEaseApplication.java @@ -3,16 +3,17 @@ package com.qc.soft.deploy.ease; import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.ComponentScan; import org.springframework.scheduling.annotation.EnableAsync; -import java.net.URL; -import java.net.URLClassLoader; - @SpringBootConfiguration @EnableAutoConfiguration @ComponentScan("com.qc.soft.deploy.ease") @EnableAsync +@EnableFeignClients +@EnableDiscoveryClient public class DeployEaseApplication { public static void main(String[] args) { diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/DruidConfig.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/DruidConfig.java index 34c7182..9e495ae 100644 --- a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/DruidConfig.java +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/config/DruidConfig.java @@ -7,8 +7,10 @@ import com.alibaba.druid.support.http.WebStatFilter; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.web.client.RestTemplate; import javax.sql.DataSource; import java.util.Arrays; @@ -50,4 +52,11 @@ public class DruidConfig { bean.setUrlPatterns(Arrays.asList("/*")); return bean; } + + @Bean + @LoadBalanced + public RestTemplate restTemplate() { + return new RestTemplate(); + } + } diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/mgmt/JenkinsController.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/mgmt/JenkinsController.java new file mode 100644 index 0000000..5983e1b --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/controller/mgmt/JenkinsController.java @@ -0,0 +1,31 @@ +package com.qc.soft.deploy.ease.controller.mgmt; + + +import com.qc.soft.deploy.ease.fegin.ITenantAdapterService; +import com.qc.soft.deploy.ease.fegin.response.JenkinsAggregateResponse; +import com.qc.soft.framework.basic.context.TenantContext; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestTemplate; + +import javax.annotation.Resource; + +@RestController +@RequestMapping("/mgmt") +public class JenkinsController { + + + @Resource + private ITenantAdapterService tenantAdapterService; + + @Resource + private RestTemplate restTemplate; + + @GetMapping(value = "jenkins/aggregate") + public JenkinsAggregateResponse aggregate() { +// JenkinsAggregateResponse aggregate = tenantAdapterService.aggregate(); + return restTemplate.getForObject("http://deploy-ease-tenant-adapter-" + TenantContext.getCurrentTenant() + "/mgmt/jenkins/aggregate", JenkinsAggregateResponse.class); + } + +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/ITenantAdapterService.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/ITenantAdapterService.java new file mode 100644 index 0000000..a73272e --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/ITenantAdapterService.java @@ -0,0 +1,14 @@ +package com.qc.soft.deploy.ease.fegin; + + +import com.qc.soft.deploy.ease.fegin.response.JenkinsAggregateResponse; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.GetMapping; + +@FeignClient(name = "deploy-ease-tenant-adapter-longi") +public interface ITenantAdapterService { + + @GetMapping("/mgmt/jenkins/aggregate") + JenkinsAggregateResponse aggregate(); + +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/response/JenkinsAggregateResponse.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/response/JenkinsAggregateResponse.java new file mode 100644 index 0000000..7c95bc7 --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/response/JenkinsAggregateResponse.java @@ -0,0 +1,14 @@ +package com.qc.soft.deploy.ease.fegin.response; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +import java.util.List; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Data +public class JenkinsAggregateResponse { + + private List views; + +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/response/JenkinsViewAggregateResponse.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/response/JenkinsViewAggregateResponse.java new file mode 100644 index 0000000..358bd24 --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/response/JenkinsViewAggregateResponse.java @@ -0,0 +1,16 @@ +package com.qc.soft.deploy.ease.fegin.response; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +import java.util.List; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Data +public class JenkinsViewAggregateResponse { + + private String viewName; + + private List projects; + +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/response/JenkinsViewProjectAggregateResponse.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/response/JenkinsViewProjectAggregateResponse.java new file mode 100644 index 0000000..88ae34b --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/response/JenkinsViewProjectAggregateResponse.java @@ -0,0 +1,37 @@ +package com.qc.soft.deploy.ease.fegin.response; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Data +public class JenkinsViewProjectAggregateResponse { + + String projectName; + + String color; + + String description; + + String displayName; + + String fullDisplayName; + + String fullName; + +// List builds; +// +// JenkinsViewProjectTaskAggregateResponse firstBuild; + + JenkinsViewProjectTaskAggregateResponse lastBuild; + +// JenkinsViewProjectTaskAggregateResponse lastCompletedBuild; +// +// JenkinsViewProjectTaskAggregateResponse lastStableBuild; +// +// JenkinsViewProjectTaskAggregateResponse lastSuccessfulBuild; + + int nextBuildNumber; + + boolean disabled; +} diff --git a/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/response/JenkinsViewProjectTaskAggregateResponse.java b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/response/JenkinsViewProjectTaskAggregateResponse.java new file mode 100644 index 0000000..2674673 --- /dev/null +++ b/deploy-ease-core/src/main/java/com/qc/soft/deploy/ease/fegin/response/JenkinsViewProjectTaskAggregateResponse.java @@ -0,0 +1,28 @@ +package com.qc.soft.deploy.ease.fegin.response; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +import java.util.Map; + +@JsonInclude(JsonInclude.Include.NON_NULL) +@Data +public class JenkinsViewProjectTaskAggregateResponse { + + private Integer number; + + private Boolean inProgress; + + private Boolean building; + + private String result; + + private String timestamp; + + private Long duration; + + private Integer queueId; + + private Map changeSet; + +} \ No newline at end of file diff --git a/deploy-ease-tenant-adapter/pom.xml b/deploy-ease-tenant-adapter/pom.xml index 595a685..dde2c4f 100644 --- a/deploy-ease-tenant-adapter/pom.xml +++ b/deploy-ease-tenant-adapter/pom.xml @@ -101,10 +101,6 @@ com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config - - org.springframework.boot - spring-boot-starter-webflux - org.springframework.cloud spring-cloud-starter-openfeign