diff --git a/ruoyi-modules/management-platform/pom.xml b/ruoyi-modules/management-platform/pom.xml
index 37234ad0..c004f9ae 100644
--- a/ruoyi-modules/management-platform/pom.xml
+++ b/ruoyi-modules/management-platform/pom.xml
@@ -140,7 +140,12 @@
com.github.docker-java
docker-java
- 3.1.1
+ 3.2.13
+
+
+ com.github.docker-java
+ docker-java-transport-httpclient5
+ 3.2.13
com.baomidou
@@ -216,6 +221,12 @@
3.0.8
compile
+
+ commons-lang
+ commons-lang
+ 2.6
+ compile
+
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java
new file mode 100644
index 00000000..9d2fe7fb
--- /dev/null
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/constant/Constant.java
@@ -0,0 +1,10 @@
+package com.ruoyi.platform.constant;
+
+public class Constant {
+
+ public final static int Image_Type_Pub = 1; // 公共镜像
+ public final static int Image_Type_Pri = 0; // 私有镜像
+
+ public final static int State_valid = 1; // 有效
+ public final static int State_invalid = 0; // 无效
+}
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/codeConfig/CodeConfigController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/codeConfig/CodeConfigController.java
new file mode 100644
index 00000000..6a599028
--- /dev/null
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/codeConfig/CodeConfigController.java
@@ -0,0 +1,61 @@
+package com.ruoyi.platform.controller.codeConfig;
+
+import com.ruoyi.common.core.web.controller.BaseController;
+import com.ruoyi.common.core.web.domain.GenericsAjaxResult;
+import com.ruoyi.platform.domain.CodeConfig;
+import com.ruoyi.platform.service.CodeConfigService;
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.http.ResponseEntity;
+
+import javax.annotation.Resource;
+
+@RestController
+@RequestMapping("codeConfig")
+@Api("代码配置")
+public class CodeConfigController extends BaseController {
+
+ @Resource
+ private CodeConfigService codeConfigService;
+
+ /**
+ * 分页查询
+ * @param codeConfig 筛选条件
+ * @param page 页数
+ * @param size 每页大小
+ * @return 查询结果
+ */
+ @GetMapping
+ public GenericsAjaxResult> queryByPage(CodeConfig codeConfig, int page, int size) {
+ PageRequest pageRequest = PageRequest.of(page,size);
+ return genericsSuccess(this.codeConfigService.queryByPage(codeConfig, pageRequest));
+ }
+
+ /**
+ * 通过主键查询单条数据
+ * @param id
+ * @return 单条数据
+ */
+ @GetMapping("{id}")
+ public ResponseEntity queryById(@PathVariable("id") Long id) {
+ return ResponseEntity.ok(this.codeConfigService.queryById(id));
+ }
+
+
+ @PostMapping
+ public GenericsAjaxResult add(@RequestBody CodeConfig codeConfig){
+ return genericsSuccess(this.codeConfigService.insert(codeConfig));
+ }
+
+ @PutMapping
+ public GenericsAjaxResult update(@RequestBody CodeConfig codeConfig){
+ return genericsSuccess(this.codeConfigService.update(codeConfig));
+ }
+
+ @DeleteMapping("{id}")
+ public GenericsAjaxResult delete(@PathVariable("id") Long id){
+ return genericsSuccess(this.codeConfigService.removeById(id));
+ }
+}
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageController.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageController.java
index a0b117d8..1af9c983 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageController.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/controller/image/ImageController.java
@@ -78,16 +78,15 @@ public class ImageController extends BaseController {
* @param image 实体
* @return 新增结果
*/
- @PostMapping
@ApiOperation("新增镜像,不包含镜像版本")
public GenericsAjaxResult add(@RequestBody Image image) {
return genericsSuccess(this.imageService.insert(image));
}
/**
- * 新增镜像和版本
*
* @param imageVo 实体
+ * 新增镜像和版本 @PostMapping
* @return 新增结果
*/
@PostMapping("/addImageAndVersion")
@@ -149,5 +148,11 @@ public class ImageController extends BaseController {
return genericsSuccess(this.imageService.uploadImageFiles(file));
}
+
+ @PostMapping("/saveImage")
+ @ApiOperation(value = "保存环境为镜像", notes = "docker commit方式保存,并推送到horbor")
+ public GenericsAjaxResult saveImage(@RequestBody ImageVo imageVo){
+ return genericsSuccess(this.imageService.saveImage(imageVo));
+ }
}
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/CodeConfig.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/CodeConfig.java
new file mode 100644
index 00000000..957dabef
--- /dev/null
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/domain/CodeConfig.java
@@ -0,0 +1,56 @@
+package com.ruoyi.platform.domain;
+
+import com.fasterxml.jackson.databind.PropertyNamingStrategy;
+import com.fasterxml.jackson.databind.annotation.JsonNaming;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
+public class CodeConfig implements Serializable {
+
+
+ private Long id;
+
+ @ApiModelProperty(value = "代码仓库名称")
+ private String codeRepoName;
+
+ @ApiModelProperty(value = "代码仓库可见性(1-公开,0-私有)")
+ private Integer codeRepoVis;
+
+ @ApiModelProperty(value = "Git地址")
+ private String gitUrl;
+
+ @ApiModelProperty(value = "代码分支/Tag")
+ private String gitBranch;
+
+ @ApiModelProperty(value = "验证方式(0-用户名密码,1-SSH-Key)")
+ private Integer verifyMode;
+
+ @ApiModelProperty(value = "Git用户名")
+ private String gitUserName;
+
+ @ApiModelProperty(value = "Git密码")
+ private String gitPassword;
+
+ private String createBy;
+ /**
+ * 创建时间
+ */
+ private Date createTime;
+ /**
+ * 更新者
+ */
+ private String updateBy;
+ /**
+ * 更新时间
+ */
+ private Date updateTime;
+ /**
+ * 状态,0失效1生效
+ */
+ private Integer state;
+}
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/CodeConfigDao.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/CodeConfigDao.java
new file mode 100644
index 00000000..db896b59
--- /dev/null
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/mapper/CodeConfigDao.java
@@ -0,0 +1,20 @@
+package com.ruoyi.platform.mapper;
+
+import com.ruoyi.platform.domain.CodeConfig;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.data.domain.Pageable;
+
+import java.util.List;
+
+public interface CodeConfigDao {
+
+ long count(@Param("codeConfig") CodeConfig codeConfig);
+
+ List queryAllByLimit(@Param("codeConfig") CodeConfig codeConfig, @Param("pageable") Pageable pageable);
+
+ CodeConfig queryById(Long id);
+
+ int insert(@Param("codeConfig") CodeConfig codeConfig);
+
+ int update(@Param("codeConfig") CodeConfig codeConfig);
+}
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/CodeConfigService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/CodeConfigService.java
new file mode 100644
index 00000000..260c01d4
--- /dev/null
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/CodeConfigService.java
@@ -0,0 +1,19 @@
+package com.ruoyi.platform.service;
+
+import com.ruoyi.platform.domain.CodeConfig;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+
+public interface CodeConfigService {
+
+ Page queryByPage(CodeConfig codeConfig, PageRequest pageRequest);
+
+ CodeConfig queryById(Long id);
+
+ CodeConfig insert(CodeConfig codeConfig);
+
+ CodeConfig update(CodeConfig codeConfig);
+
+ String removeById(Long id);
+
+}
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ImageService.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ImageService.java
index 59614ac9..fb8984ed 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ImageService.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/ImageService.java
@@ -93,6 +93,5 @@ public interface ImageService {
Map createImageFromNet(String imageName, String imageTag, String NetPath) throws Exception;
Map uploadImageFiles(MultipartFile file) throws Exception;
-
-
+ String saveImage(ImageVo imageVo);
}
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/CodeConfigServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/CodeConfigServiceImpl.java
new file mode 100644
index 00000000..664777da
--- /dev/null
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/CodeConfigServiceImpl.java
@@ -0,0 +1,74 @@
+package com.ruoyi.platform.service.impl;
+
+import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.platform.constant.Constant;
+import com.ruoyi.platform.domain.CodeConfig;
+import com.ruoyi.platform.mapper.CodeConfigDao;
+import com.ruoyi.platform.service.CodeConfigService;
+import com.ruoyi.system.api.model.LoginUser;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageImpl;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+import java.util.Date;
+import java.util.List;
+
+@Service("codeConfigService")
+public class CodeConfigServiceImpl implements CodeConfigService {
+
+ @Resource
+ private CodeConfigDao codeConfigDao;
+
+
+ @Override
+ public Page queryByPage(CodeConfig codeConfig, PageRequest pageRequest) {
+ long total = this.codeConfigDao.count(codeConfig);
+ List codeConfigList = this.codeConfigDao.queryAllByLimit(codeConfig, pageRequest);
+
+ return new PageImpl<>(codeConfigList, pageRequest, total);
+ }
+
+ @Override
+ public CodeConfig queryById(Long id) {
+ return this.codeConfigDao.queryById(id);
+ }
+
+ @Override
+ public CodeConfig insert(CodeConfig codeConfig) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ codeConfig.setCreateBy(loginUser.getUsername());
+ codeConfig.setUpdateBy(loginUser.getUsername());
+ codeConfig.setCreateTime(new Date());
+ codeConfig.setUpdateTime(new Date());
+ this.codeConfigDao.insert(codeConfig);
+ return codeConfig;
+ }
+
+ @Override
+ public CodeConfig update(CodeConfig codeConfig) {
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ codeConfig.setUpdateBy(loginUser.getUsername());
+ codeConfig.setUpdateTime(new Date());
+ this.codeConfigDao.update(codeConfig);
+ return this.codeConfigDao.queryById(codeConfig.getId());
+ }
+
+ @Override
+ public String removeById(Long id) {
+ CodeConfig codeConfig = this.codeConfigDao.queryById(id);
+ if (codeConfig == null) {
+ return "代码配置不存在";
+ }
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ String username = loginUser.getUsername();
+ String createBy = codeConfig.getCreateBy();
+ if (!(StringUtils.equals(username, "admin") || StringUtils.equals(username, createBy))) {
+ return "无权限删除该代码配置";
+ }
+ codeConfig.setState(Constant.State_invalid);
+ return this.codeConfigDao.update(codeConfig) > 0 ? "删除成功" : "删除失败";
+ }
+}
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java
index d95609ee..b13c414d 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/service/impl/ImageServiceImpl.java
@@ -2,24 +2,29 @@ package com.ruoyi.platform.service.impl;
import com.alibaba.fastjson2.util.DateUtils;
import com.ruoyi.common.security.utils.SecurityUtils;
+import com.ruoyi.platform.constant.Constant;
+import com.ruoyi.platform.domain.DevEnvironment;
import com.ruoyi.platform.domain.Image;
import com.ruoyi.platform.domain.ImageVersion;
+import com.ruoyi.platform.mapper.DevEnvironmentDao;
import com.ruoyi.platform.mapper.ImageDao;
import com.ruoyi.platform.mapper.ImageVersionDao;
import com.ruoyi.platform.service.ImageService;
import com.ruoyi.platform.service.ImageVersionService;
import com.ruoyi.platform.service.MinioService;
+import com.ruoyi.platform.utils.DockerClientUtil;
import com.ruoyi.platform.utils.FileUtil;
import com.ruoyi.platform.utils.K8sClientUtil;
import com.ruoyi.platform.vo.ImageVo;
import com.ruoyi.system.api.model.LoginUser;
-import io.kubernetes.client.openapi.models.V1PersistentVolumeClaim;
import io.kubernetes.client.openapi.models.V1Pod;
import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
+import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
@@ -40,16 +45,19 @@ import java.util.concurrent.CompletableFuture;
public class ImageServiceImpl implements ImageService {
@Resource
private ImageDao imageDao;
-
+ @Resource
+ private ImageVersionDao imageVersionDao;
+ @Resource
+ private DevEnvironmentDao devEnvironmentDao;
@Resource
private ImageVersionService imageVersionService;
-
- @Resource
- private ImageVersionDao imageVersionDao;
@Resource
private K8sClientUtil k8sClientUtil;
+ @Resource
+ private DockerClientUtil dockerClientUtil;
+
@Resource
private MinioService minioService;
@Value("${harbor.bucketName}")
@@ -75,6 +83,8 @@ public class ImageServiceImpl implements ImageService {
private String proxyUrl;
@Value("${minio.pvcName}")
private String pvcName;
+ @Value("${jupyter.namespace}")
+ private String namespace;
/**
* 通过ID查询单条数据
*
@@ -350,4 +360,57 @@ public class ImageServiceImpl implements ImageService {
String path = loginUser.getUsername()+"/"+file.getOriginalFilename();
return minioService.uploadFile(bucketName, path, file);
}
+
+ @Override
+ @Transactional
+ public String saveImage(ImageVo imageVo) {
+ if(imageDao.getByName(imageVo.getName()) != null){
+ throw new IllegalStateException("镜像名称已存在");
+ }
+ LoginUser loginUser = SecurityUtils.getLoginUser();
+ String username = loginUser.getUsername().toLowerCase();
+ String podName = username +"-editor-pod" + "-" + imageVo.getDevEnvironmentId().toString();
+
+ try {
+ String containerId = k8sClientUtil.getPodContainerId(podName, namespace);
+ String hostIp = k8sClientUtil.getHostIp(podName, namespace);
+
+ dockerClientUtil.commitImage(imageVo,containerId,hostIp,username);
+ HashMap resultMap = dockerClientUtil.pushImageToHorbor(imageVo, hostIp);
+
+ Image image = new Image();
+ BeanUtils.copyProperties(imageVo,image);
+ image.setImageType(Constant.Image_Type_Pri);
+ image.setCreateBy(username);
+ image.setUpdateBy(username);
+ image.setUpdateTime(new Date());
+ image.setCreateTime(new Date());
+ image.setState(1);
+ imageDao.insert(image);
+
+ ImageVersion imageVersion = new ImageVersion();
+ imageVersion.setImageId(image.getId());
+ imageVersion.setVersion(imageVo.getVersion());
+ imageVersion.setUrl(resultMap.get("imageName"));
+ imageVersion.setTagName(imageVo.getTagName());
+ imageVersion.setFileSize(resultMap.get("size"));
+ imageVersion.setCreateBy(username);
+ imageVersion.setUpdateBy(username);
+ imageVersion.setUpdateTime(new Date());
+ imageVersion.setCreateTime(new Date());
+ imageVersion.setState(1);
+ imageVersion.setStatus("available");
+ imageVersionDao.insert(imageVersion);
+
+ //更新dev环境的镜像信息
+ DevEnvironment devEnvironment = new DevEnvironment();
+ devEnvironment.setId(imageVo.getDevEnvironmentId());
+ devEnvironment.setImage(resultMap.get("imageName"));
+ devEnvironmentDao.update(devEnvironment);
+
+ return "保存镜像成功";
+ } catch (Exception e) {
+ throw new RuntimeException("保存镜像失败:" +e);
+ }
+ }
}
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DockerClientUtil.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DockerClientUtil.java
new file mode 100644
index 00000000..b20fa077
--- /dev/null
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/utils/DockerClientUtil.java
@@ -0,0 +1,109 @@
+package com.ruoyi.platform.utils;
+
+import com.github.dockerjava.api.DockerClient;
+import com.github.dockerjava.api.command.CommitCmd;
+import com.github.dockerjava.api.command.InspectImageResponse;
+import com.github.dockerjava.api.model.AuthConfig;
+import com.github.dockerjava.core.DefaultDockerClientConfig;
+import com.github.dockerjava.core.DockerClientConfig;
+import com.github.dockerjava.core.DockerClientImpl;
+import com.github.dockerjava.httpclient5.ApacheDockerHttpClient;
+import com.github.dockerjava.transport.DockerHttpClient;
+import com.ruoyi.platform.vo.ImageVo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import java.time.Duration;
+import java.util.HashMap;
+
+@Slf4j
+@Component
+public class DockerClientUtil {
+
+ @Value("${harbor.bucketName}")
+ private String bucketName;
+ @Value("${harbor.repository}")
+ private String repository;
+ @Value("${harbor.harborUrl}")
+ private String harborUrl;
+ @Value("${harbor.harborUser}")
+ private String harborUser;
+ @Value("${harbor.harborpassword}")
+ private String harborpassword;
+
+ public DockerClient getDockerClient(String dockerServerUrl) {
+
+ //创建DefaultDockerClientConfig(指定docker服务器的配置)
+ DockerClientConfig config = DefaultDockerClientConfig
+ .createDefaultConfigBuilder()
+ .withDockerHost("tcp://" + dockerServerUrl + ":2375")
+ .withDockerTlsVerify(false)
+ .withApiVersion("1.40")
+// .withDockerCertPath(dcokerCertPath)
+// .withRegistryUsername(registryUser)
+// .withRegistryPassword(registryPass)
+// .withRegistryEmail(registryMail)
+// .withRegistryUrl(registryUrl)
+ .build();
+
+ //创建DockerHttpClient
+ DockerHttpClient httpClient = new ApacheDockerHttpClient.Builder()
+ .dockerHost(config.getDockerHost())
+ .sslConfig(config.getSSLConfig())
+ .maxConnections(1000)
+ .connectionTimeout(Duration.ofSeconds(300))
+ .responseTimeout(Duration.ofSeconds(450))
+ .build();
+
+ //创建DockerClient
+ return DockerClientImpl.getInstance(config, httpClient);
+
+ }
+
+ public String commitImage(ImageVo imageVo, String containerId, String hostIp, String userName) {
+ DockerClient dockerClient = getDockerClient(hostIp);
+
+ // 提交容器为镜像,这里的"new_image"和"new_tag"是新镜像的名字和标签
+ CommitCmd commitCmd = dockerClient.commitCmd(containerId)
+ .withRepository(imageVo.getName())
+ .withTag(imageVo.getTagName())
+ .withAuthor(userName)
+ .withMessage(imageVo.getDescription());
+ return commitCmd.exec();
+ }
+
+ public HashMap pushImageToHorbor(ImageVo imageVo, String hostIp) {
+
+ DockerClient dockerClient = getDockerClient(hostIp);
+ //Harbor登录信息
+ AuthConfig autoConfig = new AuthConfig().withRegistryAddress(harborUrl).withUsername(harborUser).withPassword(harborpassword);
+
+
+ String localImageName = imageVo.getName() + ":" + imageVo.getTagName();
+ String imageName = harborUrl + "/" + bucketName + "/" + imageVo.getName();
+
+ //给镜像打上tag
+ dockerClient.tagImageCmd(localImageName, imageName, imageVo.getTagName()).exec();
+ //推送镜像至镜像仓库
+ try {
+ dockerClient.pushImageCmd(imageName).withAuthConfig(autoConfig).start().awaitCompletion();
+ //push成功后,删除本地加载的镜像
+ dockerClient.removeImageCmd(localImageName).exec();
+
+ String totalImageName = imageName + ":" + imageVo.getTagName();
+ InspectImageResponse exec = dockerClient.inspectImageCmd(totalImageName).exec();
+
+ String size = String.format("%.1f GB", (float) exec.getSize() / 1073741824.0);
+
+ HashMap resultMap = new HashMap<>();
+ resultMap.put("imageName",totalImageName);
+ resultMap.put("size",size);
+
+ return resultMap;
+ } catch (InterruptedException e) {
+ throw new RuntimeException("推送镜像失败:" + e);
+ }
+
+ }
+}
\ No newline at end of file
diff --git a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ImageVo.java b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ImageVo.java
index c4b313c2..8345f214 100644
--- a/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ImageVo.java
+++ b/ruoyi-modules/management-platform/src/main/java/com/ruoyi/platform/vo/ImageVo.java
@@ -57,13 +57,16 @@ public class ImageVo implements Serializable {
@ApiModelProperty(name = "status")
private String status;
- @ApiModelProperty(value = "上传方式, 基于公网上传0,基于本地上传1")
+ @ApiModelProperty(name = "upload_type", value = "上传方式, 基于公网上传0,基于本地上传1")
private Integer uploadType;
@ApiModelProperty(value = "镜像上传路径")
private String path;
+ @ApiModelProperty(name = "dev_environment_id", value = "环境id")
+ private Integer devEnvironmentId;
+
// public Integer getId() {
// return id;
// }
@@ -147,7 +150,17 @@ public class ImageVo implements Serializable {
public String getPath() {
return path;
}
+
public void setPath(String path) {
this.path = path;
}
+
+ public Integer getDevEnvironmentId() {
+ return devEnvironmentId;
+ }
+
+ public void setDevEnvironmentId(Integer devEnvironmentId) {
+ this.devEnvironmentId = devEnvironmentId;
+ }
+
}
diff --git a/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/CodeConfigDaoMapper.xml b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/CodeConfigDaoMapper.xml
new file mode 100644
index 00000000..64c72f88
--- /dev/null
+++ b/ruoyi-modules/management-platform/src/main/resources/mapper/managementPlatform/CodeConfigDaoMapper.xml
@@ -0,0 +1,108 @@
+
+
+
+
+
+ insert into code_config(code_repo_name, code_repo_vis, git_url, git_branch, verify_mode, git_user_name, git_password, create_by, create_time, update_by, update_time)
+ values(#{codeConfig.codeRepoName}, #{codeConfig.codeRepoVis}, #{codeConfig.gitUrl}, #{codeConfig.gitBranch}, #{codeConfig.verifyMode}, #{codeConfig.gitUserName}, #{codeConfig.gitPassword}, #{codeConfig.createBy}, #{codeConfig.createTime}, #{codeConfig.updateBy}, #{codeConfig.updateTime})
+
+
+
+ update code_config
+
+
+ code_repo_name = #{codeConfig.codeRepoName},
+
+
+ code_repo_vis = #{codeConfig.codeRepoVis},
+
+
+ git_url = #{codeConfig.gitUrl},
+
+
+ git_branch = #{codeConfig.gitBranch},
+
+
+ verify_mode = #{codeConfig.verifyMode},
+
+
+ git_user_name = #{codeConfig.gitUserName},
+
+
+ create_by = #{codeConfig.createBy},
+
+
+ create_time = #{codeConfig.createTime},
+
+
+ update_by = #{codeConfig.updateBy},
+
+
+ update_time = #{codeConfig.updateTime},
+
+
+ state = #{codeConfig.state},
+
+
+ where id = #{codeConfig.id}
+
+
+
+
+
+
+
+
+
+
+
+ state = 1
+
+ and id = #{codeConfig.id}
+
+
+ and code_repo_name = #{codeConfig.codeRepoName}
+
+
+ and code_repo_vis = #{codeConfig.codeRepoVis}
+
+
+ and git_url = #{codeConfig.gitUrl}
+
+
+ and git_branch = #{codeConfig.gitBranch}
+
+
+ and verify_mode = #{codeConfig.verifyMode}
+
+
+ and git_user_name = #{codeConfig.gitUserName}
+
+
+ and create_by = #{codeConfig.createBy}
+
+
+ and create_time = #{codeConfig.createTime}
+
+
+ and update_by = #{codeConfig.updateBy}
+
+
+ and update_time = #{codeConfig.updateTime}
+
+
+
+
\ No newline at end of file
diff --git a/ruoyi-modules/ruoyi-job/pom.xml b/ruoyi-modules/ruoyi-job/pom.xml
index e295d995..7b22bc72 100644
--- a/ruoyi-modules/ruoyi-job/pom.xml
+++ b/ruoyi-modules/ruoyi-job/pom.xml
@@ -65,7 +65,7 @@
com.mysql
mysql-connector-j
-
+
com.ruoyi
@@ -77,7 +77,13 @@
com.ruoyi
ruoyi-common-swagger
-
+
+
+
+ com.ruoyi
+ ruoyi-common-datasource
+
+