nacos加入到项目当中

This commit is contained in:
dengqichen 2024-08-28 09:42:46 +08:00
parent aaacbc9c3f
commit 39cbf699ad
10 changed files with 161 additions and 8 deletions

View File

@ -136,6 +136,10 @@
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-loadbalancer</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-client</artifactId>
@ -143,7 +147,10 @@
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
</dependencies>

View File

@ -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) {

View File

@ -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();
}
}

View File

@ -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);
}
}

View File

@ -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();
}

View File

@ -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<JenkinsViewAggregateResponse> views;
}

View File

@ -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<JenkinsViewProjectAggregateResponse> projects;
}

View File

@ -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<JenkinsViewProjectTaskAggregateResponse> builds;
//
// JenkinsViewProjectTaskAggregateResponse firstBuild;
JenkinsViewProjectTaskAggregateResponse lastBuild;
// JenkinsViewProjectTaskAggregateResponse lastCompletedBuild;
//
// JenkinsViewProjectTaskAggregateResponse lastStableBuild;
//
// JenkinsViewProjectTaskAggregateResponse lastSuccessfulBuild;
int nextBuildNumber;
boolean disabled;
}

View File

@ -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<String, Object> changeSet;
}

View File

@ -101,10 +101,6 @@
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>