From 87a10999203785af716147d4c4338ce5787fa384 Mon Sep 17 00:00:00 2001 From: even <827656971@qq.com> Date: Thu, 3 Jul 2025 20:56:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B0=B4=E6=9C=A8=E6=8E=A5=E5=8F=A3=E5=AF=B9?= =?UTF-8?q?=E6=8E=A5=EF=BC=8C=E9=85=8D=E7=BD=AE=E6=96=87=E4=BB=B6=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../process/constant/ShuiMuUrlConstant.java | 17 ++ .../dto/req/shuimu/ShuiMuBuildAndSaveReq.java | 10 + .../req/shuimu/ShuiMuProjectCreateReq.java | 23 ++ .../req/shuimu/ShuiMuUpdateWFuzzJsonReq.java | 9 + .../resp/shuimu/ShuiMuProjectInfoResp.java | 18 ++ .../resp/shuimu/ShuiMuProjectVersionResp.java | 68 ++++++ .../dto/resp/shuimu/ShuiMuTokenResp.java | 12 + .../process/service/shuimu/ShuiMuService.java | 32 +++ .../shuimu/impl/ShuiMuServiceImpl.java | 231 ++++++++++++++++++ .../process/properties/ShuiMuProperties.java | 23 ++ .../src/main/resources/application-local.yaml | 14 +- .../test/java/cd/casic/server/ShuiMuTest.java | 43 ++++ 12 files changed, 496 insertions(+), 4 deletions(-) create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/constant/ShuiMuUrlConstant.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/shuimu/ShuiMuBuildAndSaveReq.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/shuimu/ShuiMuProjectCreateReq.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/shuimu/ShuiMuUpdateWFuzzJsonReq.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/shuimu/ShuiMuProjectInfoResp.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/shuimu/ShuiMuProjectVersionResp.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/shuimu/ShuiMuTokenResp.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/shuimu/ShuiMuService.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/shuimu/impl/ShuiMuServiceImpl.java create mode 100644 modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/properties/ShuiMuProperties.java create mode 100644 ops-server/src/test/java/cd/casic/server/ShuiMuTest.java diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/constant/ShuiMuUrlConstant.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/constant/ShuiMuUrlConstant.java new file mode 100644 index 00000000..5b21a07c --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/constant/ShuiMuUrlConstant.java @@ -0,0 +1,17 @@ +package cd.casic.ci.process.constant; + +public class ShuiMuUrlConstant { + // 获取检测镜像 + public static final String imageList = "/api/image/list"; + public static final String getToken = "/oauth/token"; + // 创建项目 + public static final String createProject = "/api/driverGeneration/createDriverProject"; + // 获取检测配置 + public static final String readWfuzzJsonFile = "/api/driverGeneration/readWfuzzJsonFile"; + // 获取检测 构建配置需要填写的信息 + public static final String readHelpersJsonFile = "/api/driverGeneration/readHelpersJsonFile"; + public static final String getProjectVersion = "/api/project/code/getProjectVersion"; + public static final String buildAndSaveConfig = "/api/driverGeneration/buildAndSaveConfig"; + public static final String getProjectById = "/api/project/"; + public static final String uploadWfuzzJson = "/api/project/code/uploadWfuzzJson"; +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/shuimu/ShuiMuBuildAndSaveReq.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/shuimu/ShuiMuBuildAndSaveReq.java new file mode 100644 index 00000000..7cae26bf --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/shuimu/ShuiMuBuildAndSaveReq.java @@ -0,0 +1,10 @@ +package cd.casic.ci.process.dto.req.shuimu; + +import lombok.Data; + +@Data +public class ShuiMuBuildAndSaveReq { + private String projectId; + private String env; + private String fileName; +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/shuimu/ShuiMuProjectCreateReq.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/shuimu/ShuiMuProjectCreateReq.java new file mode 100644 index 00000000..851efcf8 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/shuimu/ShuiMuProjectCreateReq.java @@ -0,0 +1,23 @@ +package cd.casic.ci.process.dto.req.shuimu; + +import lombok.Data; + +@Data +public class ShuiMuProjectCreateReq { + /** + * 语言 例如 java + * */ + private String language; + /** + * 应用分析资源 + * */ + private String env; + /** + * 2c4g + * */ + private String envSpecs; + /** + * 流水线id + * */ + private String pipelineId; +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/shuimu/ShuiMuUpdateWFuzzJsonReq.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/shuimu/ShuiMuUpdateWFuzzJsonReq.java new file mode 100644 index 00000000..ef6253aa --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/req/shuimu/ShuiMuUpdateWFuzzJsonReq.java @@ -0,0 +1,9 @@ +package cd.casic.ci.process.dto.req.shuimu; + +import lombok.Data; + +@Data +public class ShuiMuUpdateWFuzzJsonReq { + private String projectId; + private String build; +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/shuimu/ShuiMuProjectInfoResp.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/shuimu/ShuiMuProjectInfoResp.java new file mode 100644 index 00000000..ab1df5f8 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/shuimu/ShuiMuProjectInfoResp.java @@ -0,0 +1,18 @@ +package cd.casic.ci.process.dto.resp.shuimu; + +import lombok.Data; + +@Data +public class ShuiMuProjectInfoResp { + private Integer id; + private String name; + private String language; + private String description; + private String product; + private String ownerId; + private Integer createBy; + private Long createAt; + private Long updateAt; + private Long deleteAt; + private Integer projectFlag; +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/shuimu/ShuiMuProjectVersionResp.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/shuimu/ShuiMuProjectVersionResp.java new file mode 100644 index 00000000..ae060144 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/shuimu/ShuiMuProjectVersionResp.java @@ -0,0 +1,68 @@ +package cd.casic.ci.process.dto.resp.shuimu; + +import com.alibaba.fastjson.JSON; +import lombok.Data; + +@Data +public class ShuiMuProjectVersionResp { + private Integer id; + private String vcs; + private String versionCode; + private Repo repo; + private Integer projectId; + private Integer createBy; + private Long createAt; + private Long updateAt; + private Long deleteAt; + private String ownerId; + private String workSpaceState; + private BuildState buildState; + private Boolean containsNeedFile; + private String buildResult; + private String buildLog; + private VerifyState verifyState; + private String verifyLog; + public void setRepo(Object repo) { + if (repo instanceof String) { + this.repo = JSON.parseObject((String) repo, Repo.class); + } else if (repo instanceof Repo) { + this.repo = (Repo) repo; + } + } + + public void setBuildState(Object buildState) { + if (buildState instanceof String) { + this.buildState = JSON.parseObject((String) buildState, BuildState.class); + } else if (buildState instanceof BuildState) { + this.buildState = (BuildState) buildState; + } + } + + public void setVerifyState(Object verifyState) { + if (verifyState instanceof String) { + this.verifyState = JSON.parseObject((String) verifyState, VerifyState.class); + } else if (verifyState instanceof VerifyState) { + this.verifyState = (VerifyState) verifyState; + } + } + + @Data + public static class Repo { + private String env; + private String envSpecs; + private String filename; + private String filesize; + private String hash; + private String totalCount; + } + + @Data + public static class BuildState { + private Integer state; + } + + @Data + public static class VerifyState { + private Integer state; + } +} \ No newline at end of file diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/shuimu/ShuiMuTokenResp.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/shuimu/ShuiMuTokenResp.java new file mode 100644 index 00000000..05522e67 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/dto/resp/shuimu/ShuiMuTokenResp.java @@ -0,0 +1,12 @@ +package cd.casic.ci.process.dto.resp.shuimu; + +import lombok.Data; + +@Data +public class ShuiMuTokenResp { + private String accessToken; + private Integer expiresIn; + private Integer refreshExpiresIn; + private String refreshToken; + private String tokenType; +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/shuimu/ShuiMuService.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/shuimu/ShuiMuService.java new file mode 100644 index 00000000..330ceea6 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/shuimu/ShuiMuService.java @@ -0,0 +1,32 @@ +package cd.casic.ci.process.process.service.shuimu; + +import cd.casic.ci.process.dto.req.shuimu.ShuiMuBuildAndSaveReq; +import cd.casic.ci.process.dto.req.shuimu.ShuiMuProjectCreateReq; +import cd.casic.ci.process.dto.req.shuimu.ShuiMuUpdateWFuzzJsonReq; +import cd.casic.ci.process.dto.resp.shuimu.ShuiMuProjectInfoResp; +import cd.casic.ci.process.dto.resp.shuimu.ShuiMuProjectVersionResp; + +import java.util.List; + +public interface ShuiMuService { + String getToken(); + /** + * 获取编译环境 + * */ + List imageList(String label); + void createProject(ShuiMuProjectCreateReq req); + /** + * 获取检测配置 + * */ + String readWfuzzJsonFile(String projectId); + /** + * 获取需要填写的表单项信息 + * */ + String readHelpersJsonFile(String projectId); + + ShuiMuProjectVersionResp getProjectVersion(String projectId); + ShuiMuProjectInfoResp getProjectInfo(String projectId); + + void buildAndSaveConfig(ShuiMuBuildAndSaveReq req); + void uploadWfuzzJson(ShuiMuUpdateWFuzzJsonReq req); +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/shuimu/impl/ShuiMuServiceImpl.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/shuimu/impl/ShuiMuServiceImpl.java new file mode 100644 index 00000000..390dc63b --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/process/service/shuimu/impl/ShuiMuServiceImpl.java @@ -0,0 +1,231 @@ +package cd.casic.ci.process.process.service.shuimu.impl; + +import cd.casic.ci.process.dto.req.shuimu.ShuiMuBuildAndSaveReq; +import cd.casic.ci.process.dto.req.shuimu.ShuiMuProjectCreateReq; +import cd.casic.ci.process.dto.req.shuimu.ShuiMuUpdateWFuzzJsonReq; +import cd.casic.ci.process.dto.resp.shuimu.ShuiMuProjectInfoResp; +import cd.casic.ci.process.dto.resp.shuimu.ShuiMuProjectVersionResp; +import cd.casic.ci.process.dto.resp.shuimu.ShuiMuTokenResp; +import cd.casic.ci.process.engine.manager.RunContextManager; +import cd.casic.ci.process.process.dataObject.pipeline.PipPipeline; +import cd.casic.ci.process.process.dataObject.target.TargetVersion; +import cd.casic.ci.process.process.service.pipeline.PipelineService; +import cd.casic.ci.process.process.service.shuimu.ShuiMuService; +import cd.casic.ci.process.process.service.target.TargetVersionService; +import cd.casic.ci.process.properties.ShuiMuProperties; +import cd.casic.framework.commons.exception.ServiceException; +import cd.casic.framework.commons.exception.enums.GlobalErrorCodeConstants; +import cd.casic.framework.redis.core.RedisTemplateUtils; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import jakarta.annotation.Resource; +import org.apache.commons.lang3.StringUtils; +import org.springframework.core.io.FileSystemResource; +import org.springframework.http.*; +import org.springframework.stereotype.Service; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; +import org.springframework.web.client.RestTemplate; +import org.springframework.web.util.UriComponentsBuilder; + +import java.io.*; +import java.util.*; + +import static cd.casic.ci.process.constant.ShuiMuUrlConstant.*; + +@Service +public class ShuiMuServiceImpl implements ShuiMuService { + @Resource + private ShuiMuProperties shuiMuProperties; + @Resource + private RestTemplate restTemplate; + @Resource + private RedisTemplateUtils redisTemplateUtils; + private static final String REDIS_SHUI_MU_TOKEN_KEY = "REDIS_SHUI_MU_TOKEN_KEY"; + private static final String SHUI_MU_TOKEN_PREFIX = "Bearer "; + private static final String SHUI_MU_IMAGE_LIST_FILTER = "wfuzz-built"; + @Resource + private TargetVersionService targetVersionService; + @Resource + private PipelineService pipelineService; + private ShuiMuTokenResp getTokenRemote(){ + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setContentType(MediaType.MULTIPART_FORM_DATA); + HttpEntity> httpEntity = new HttpEntity<>(buildMapReq(),httpHeaders); + ResponseEntity exchange = restTemplate.exchange(shuiMuProperties.getBaseUrl() +getToken, HttpMethod.POST, httpEntity, String.class, new HashMap<>()); + String body = exchange.getBody(); + JSONObject bodyObject = JSON.parseObject(body); + ShuiMuTokenResp tokenResp = new ShuiMuTokenResp(); + tokenResp.setAccessToken(bodyObject.getString("access_token")); + tokenResp.setExpiresIn(bodyObject.getInteger("expires_in")); + tokenResp.setRefreshToken(bodyObject.getString("refresh_token")); + tokenResp.setTokenType(bodyObject.getString("token_type")); + return tokenResp; + } + private MultiValueMap buildMapReq(){ + MultiValueMap req = new LinkedMultiValueMap<>(); + req.add("username",shuiMuProperties.getUsername()); + req.add("password",shuiMuProperties.getPassword()); + req.add("grant_type",shuiMuProperties.getGrantType()); + req.add("client_id",shuiMuProperties.getClientId()); + return req; + } + + @Override + public String getToken() { + Object o = redisTemplateUtils.get(REDIS_SHUI_MU_TOKEN_KEY); + String token = o instanceof String ? ((String) o) : ""; + if (StringUtils.isEmpty(token)) { + synchronized(this){ + o = redisTemplateUtils.get(REDIS_SHUI_MU_TOKEN_KEY); + token = o instanceof String ? ((String) o) : ""; + if (StringUtils.isEmpty(token)) { + ShuiMuTokenResp tokenRemote = getTokenRemote(); + String accessToken = tokenRemote.getAccessToken(); + redisTemplateUtils.set(REDIS_SHUI_MU_TOKEN_KEY,accessToken,tokenRemote.getExpiresIn()); + token = accessToken; + } + } + } + return SHUI_MU_TOKEN_PREFIX+token; + } + + @Override + public List imageList(String label) { + + String uriString = UriComponentsBuilder.fromUriString(shuiMuProperties.getBaseUrl()+imageList).queryParam("label", label).toUriString(); + HttpEntity entity = new HttpEntity<>(null,getHeaders()); + ResponseEntity exchange = restTemplate.exchange(uriString, HttpMethod.GET, entity, String.class, new HashMap<>()); + JSONObject jsonObject = JSONObject.parseObject(exchange.getBody()); + JSONArray objects = JSONArray.parseArray(jsonObject.getString("data")); + List res = new ArrayList<>(objects.size()); + for (int i = 0; i < objects.size(); i++) { + JSONObject item = objects.getJSONObject(i); + String name = item.getString("name"); + if (StringUtils.isNotEmpty(name)) { + res.add(name); + } + } + return res.stream().filter(item->item.startsWith(SHUI_MU_IMAGE_LIST_FILTER)).toList(); + } + + @Override + public void createProject(ShuiMuProjectCreateReq req) { + MultiValueMap body = new LinkedMultiValueMap<>(); + body.add("projectName","应用检测_"+ UUID.randomUUID().toString().replaceAll("-","")); + body.add("language",req.getLanguage()); + body.add("env",req.getEnv()); + body.add("envSpecs",req.getEnvSpecs()); + PipPipeline pipeline = pipelineService.getById(req.getPipelineId()); + String targetVersionId = pipeline.getTargetVersionId(); + TargetVersion targetVersion = targetVersionService.getById(targetVersionId); + File targetFile = new File(targetVersion.getFilePath()); + if (!targetFile.exists()) { + throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"找不到目标文件"); + } + FileSystemResource resource = new FileSystemResource(targetFile); + body.add("file",resource); + HttpEntity> entity = new HttpEntity<>(body,getHeaders()); + ResponseEntity exchange = restTemplate.exchange(shuiMuProperties.getBaseUrl() + createProject, HttpMethod.POST, entity, String.class, new HashMap<>()); + HttpStatusCode statusCode = exchange.getStatusCode(); + if (statusCode.isError()) { + throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"创建项目失败"); + } + } + + @Override + public String readWfuzzJsonFile(String projectId) { + HttpEntity entity = new HttpEntity<>(null,getHeaders()); + String uriString = UriComponentsBuilder.fromUriString(shuiMuProperties.getBaseUrl() + readWfuzzJsonFile) + .queryParam("projectId", projectId).toUriString(); + ResponseEntity exchange = restTemplate.exchange(uriString, HttpMethod.GET, entity, String.class, new HashMap<>()); + return exchange.getBody(); + } + + @Override + public String readHelpersJsonFile(String projectId) { + HttpEntity entity = new HttpEntity<>(null,getHeaders()); + String uriString = UriComponentsBuilder.fromUriString(shuiMuProperties.getBaseUrl() + readHelpersJsonFile) + .queryParam("projectId", projectId).toUriString(); + ResponseEntity exchange = restTemplate.exchange(uriString, HttpMethod.GET, entity, String.class, new HashMap<>()); + return exchange.getBody(); + } + + @Override + public ShuiMuProjectVersionResp getProjectVersion(String projectId) { + HttpEntity entity = new HttpEntity<>(null,getHeaders()); + String uriString = UriComponentsBuilder.fromUriString(shuiMuProperties.getBaseUrl() + getProjectVersion) + .queryParam("projectId", projectId).toUriString(); + ResponseEntity exchange = restTemplate.exchange(uriString, HttpMethod.GET, entity, String.class, new HashMap<>()); + if (exchange.getStatusCode().isError()) { + throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"保存并且构建失败"); + } + String data = JSON.parseObject(exchange.getBody()).getString("data"); + return JSON.parseObject(data, ShuiMuProjectVersionResp.class); + } + + @Override + public ShuiMuProjectInfoResp getProjectInfo(String projectId) { + HttpEntity entity = new HttpEntity<>(null,getHeaders()); + String uriString = UriComponentsBuilder.fromUriString(shuiMuProperties.getBaseUrl() + getProjectById +projectId) + .toUriString(); + ResponseEntity exchange = restTemplate.exchange(uriString, HttpMethod.GET, entity, String.class, new HashMap<>()); + if (exchange.getStatusCode().isError()) { + throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"保存并且构建失败"); + } + return JSON.parseObject(JSON.parseObject(exchange.getBody()).getString("data"), ShuiMuProjectInfoResp.class); + } + + @Override + public void buildAndSaveConfig(ShuiMuBuildAndSaveReq req) { + MultiValueMap body = new LinkedMultiValueMap<>(); + body.add("projectId",req.getProjectId()); + body.add("env",req.getEnv()); + body.add("fileName",req.getFileName()); + HttpEntity> entity = new HttpEntity<>(body,getHeaders()); + ResponseEntity exchange = restTemplate.exchange(shuiMuProperties.getBaseUrl() + buildAndSaveConfig, HttpMethod.POST, entity, String.class, new HashMap<>()); + if (exchange.getStatusCode().isError()) { + throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"保存并且构建失败"); + } + } + + @Override + public void uploadWfuzzJson(ShuiMuUpdateWFuzzJsonReq req) { + ShuiMuProjectInfoResp projectInfo = getProjectInfo(req.getProjectId()); + String projectName = projectInfo.getName(); + Map restReq = new HashMap<>(); + restReq.put("project",projectName); + restReq.put("product",projectInfo.getProduct()); + restReq.put("language",projectInfo.getLanguage()); + restReq.put("build",req.getBuild()); + ByteArrayOutputStream bis = new ByteArrayOutputStream(); + try { + ObjectOutputStream oos =new ObjectOutputStream(bis); + oos.writeObject(restReq); + File tempFile = File.createTempFile(UUID.randomUUID().toString().replaceAll("-", ""), ""); + FileSystemResource resource = new FileSystemResource(tempFile); + MultiValueMap body = new LinkedMultiValueMap<>(); + body.add("projectId",req.getProjectId()); + body.add("file",resource); + HttpEntity> entity = new HttpEntity<>(body,getHeaders()); + ResponseEntity exchange = restTemplate.exchange(shuiMuProperties.getBaseUrl() + uploadWfuzzJson, HttpMethod.POST, entity, String.class, new HashMap<>()); + if (exchange.getStatusCode().isError()) { + throw new ServiceException(GlobalErrorCodeConstants.PIPELINE_ERROR.getCode(),"更新配置文件失败"); + } + tempFile.deleteOnExit(); + } catch (IOException e) { + throw new RuntimeException(e); + } + + } + + + private HttpHeaders getHeaders(){ + HttpHeaders httpHeaders = new HttpHeaders(); + httpHeaders.setContentType(MediaType.APPLICATION_JSON); + httpHeaders.set("authorization",getToken()); + return httpHeaders; + } + +} diff --git a/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/properties/ShuiMuProperties.java b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/properties/ShuiMuProperties.java new file mode 100644 index 00000000..5bfafec7 --- /dev/null +++ b/modules/module-ci-process-biz/src/main/java/cd/casic/ci/process/properties/ShuiMuProperties.java @@ -0,0 +1,23 @@ +package cd.casic.ci.process.properties; + +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; + +@ConfigurationProperties(prefix = "shuimu") +@Component +@Data +public class ShuiMuProperties { + @Value("username") + private String username; + @Value("password") + private String password; + @Value("baseUrl") + private String baseUrl; + @Value("grant_type") + private String grantType; + @Value("client_id") + private String clientId; + +} diff --git a/ops-server/src/main/resources/application-local.yaml b/ops-server/src/main/resources/application-local.yaml index 8a6a726c..2367598c 100644 --- a/ops-server/src/main/resources/application-local.yaml +++ b/ops-server/src/main/resources/application-local.yaml @@ -70,10 +70,10 @@ spring: # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优 data: redis: - host: 127.0.0.1 # 地址 - port: 16379 # 端口 -# host: 192.168.1.120 # 地址 -# port: 6379 # 端口 +# host: 127.0.0.1 # 地址 +# port: 16379 # 端口 + host: 192.168.1.120 # 地址 + port: 6379 # 端口 database: 0 # 数据库索引 # password: dev # 密码,建议生产环境开启 @@ -175,4 +175,10 @@ tartet: username: roots password: hnidc0327cn!@#xhh remoteDir: /home/ops/ops-pro/file/ +shuimu: + base-url: http://175.6.27.155:10200 + password: saas@2022 + username: admin + grant-type: password + client-id: client diff --git a/ops-server/src/test/java/cd/casic/server/ShuiMuTest.java b/ops-server/src/test/java/cd/casic/server/ShuiMuTest.java new file mode 100644 index 00000000..899245fa --- /dev/null +++ b/ops-server/src/test/java/cd/casic/server/ShuiMuTest.java @@ -0,0 +1,43 @@ +package cd.casic.server; + +import cd.casic.ci.process.dto.resp.shuimu.ShuiMuProjectVersionResp; +import cd.casic.ci.process.process.service.shuimu.ShuiMuService; +import jakarta.annotation.Resource; +import lombok.extern.slf4j.Slf4j; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; + +@SpringBootTest(classes = {OpsServerApplication.class}) +@ActiveProfiles("local") +@Slf4j +public class ShuiMuTest { + @Resource + ShuiMuService shuiMuService; + @Test + public void getToken(){ + System.out.println(shuiMuService.getToken()); + } + @Test + public void imageList(){ + System.out.println(shuiMuService.imageList("java")); + } + @Test + public void readWfuzzJsonFile(){ + System.out.println(shuiMuService.readWfuzzJsonFile("6")); + } + @Test + public void readHelpersJsonFile(){ + System.out.println(shuiMuService.readHelpersJsonFile("6")); + } + @Test + public void getProjectVersion(){ + ShuiMuProjectVersionResp projectVersion = shuiMuService.getProjectVersion("6"); + System.out.println(projectVersion); + System.out.println(projectVersion.getRepo()); + } + @Test + public void getProjectInfo(){ + System.out.println(shuiMuService.getProjectInfo("4")); + } +}