diff --git a/dsBuild/src/main/java/Publish.java b/dsBuild/src/main/java/Publish.java new file mode 100644 index 00000000..8a1113c3 --- /dev/null +++ b/dsBuild/src/main/java/Publish.java @@ -0,0 +1,54 @@ +import java.io.File; +import java.util.ArrayList; +import java.util.List; + +import Util.*; +import cn.hutool.core.io.FileUtil; + +public class Publish { + + public static void main(String[] args) throws Exception { + //1、探测当前目录下有哪些以ds开头的目录,这些目录都是待发布的项目 + List projectNames = PublishUtil.getProjectNames(); + + List listProject = new ArrayList<>(); + + int idx = 0; + for (String projectName : projectNames) { + idx++; + //2、找到projectName的最后一个\符号,截取从它开始到结尾的子串,这个就是我们所谓的代码项目名,但要注意代码项目名需要转换后才是发布项目名,因为K8S的项目不允许有大写字母 + String devProjectName = projectName.substring(projectName.lastIndexOf("\\") + 1); + String publishProjectName = PublishUtil.getPublishProjectName(devProjectName); + ProjectBean pb = new ProjectBean(); + pb.setDevProjectName(devProjectName); + pb.setPublishProjectName(publishProjectName); + pb.setId(idx); + listProject.add(pb); + } + //让用户选择要发布的项目 + int choiceProject = PublishUtil.userSelectProject(listProject); + //让用户选择要发布的仓库 + int choiceWarehouse = PublishUtil.userSelectWarehouse(); + + //这个项目是什么类型? + int projectAttribute = PublishUtil.getProjectAttribute(choiceProject, listProject); + String workingPath = null, projectName = null, localLibPath = null; + boolean isStatic = false; + for (ProjectBean projectBean : listProject) { + if (projectBean.getId() == choiceProject) { + String basedir = new File(System.getProperty("user.dir")).getCanonicalPath(); + workingPath = basedir + "\\" + projectBean.getDevProjectName()+"\\"; + projectName = projectBean.getPublishProjectName(); + if (FileUtil.exist(workingPath + "\\lib")) { + localLibPath = workingPath + "\\lib\\"; + } + break; + } + } + if (projectAttribute == 2){ + isStatic = true; + } + //开始打包 + PublishUtil.publish(projectName, isStatic, workingPath, localLibPath,choiceWarehouse); + } +} diff --git a/dsBuild/src/main/java/Util/PublishUtil.java b/dsBuild/src/main/java/Util/PublishUtil.java index cf33b8f1..0885df3a 100644 --- a/dsBuild/src/main/java/Util/PublishUtil.java +++ b/dsBuild/src/main/java/Util/PublishUtil.java @@ -13,6 +13,7 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.List; +import java.util.Scanner; public class PublishUtil { /** @@ -31,7 +32,7 @@ public class PublishUtil { * docker tag 19a54d2204aa registry.cn-hangzhou.aliyuncs.com/yltcharge/jdk:21 * docker push registry.cn-hangzhou.aliyuncs.com/yltcharge/jdk:21 */ - public static void publish(String projectName,boolean isStatic,String workingPath,String localLibPath) throws Exception { + public static void publish(String projectName, boolean isStatic, String workingPath, String localLibPath, int choiceWarehouse) throws Exception { System.out.println("正在生成" + projectName + "的镜像..."); //配置文件 String path = PathKit.getRootClassPath() + "\\publishImage.json"; @@ -138,17 +139,31 @@ public class PublishUtil { System.out.println("镜像打包完成,镜像ID=" + imageId); //登录镜像仓库 - cmd = "docker login --username=驿来特充电 --password=ylt5033. registry.cn-hangzhou.aliyuncs.com"; + if (choiceWarehouse == 1) { + cmd = "docker login --username=驿来特充电 --password=ylt5033. registry.cn-hangzhou.aliyuncs.com"; + } else { + cmd = "docker login --username=东师黄海 --password=DsideaL4r5t6y7u registry.cn-hangzhou.aliyuncs.com"; + } + System.out.println(cmd); ssh.exec(cmd); System.out.println("仓库登录成功!"); System.out.println("打标签..."); - cmd = "docker tag " + imageId + " registry.cn-hangzhou.aliyuncs.com/yltcharge/" + projectName + ":" + newVersion; + if (choiceWarehouse == 1) { + cmd = "docker tag " + imageId + " registry.cn-hangzhou.aliyuncs.com/yltcharge/" + projectName + ":" + newVersion; + } else { + cmd = "docker tag " + imageId + " registry.cn-hangzhou.aliyuncs.com/dsideal/" + projectName + ":" + newVersion; + } + ssh.exec(cmd); System.out.println("开始推送到远程仓库,稍等..."); - cmd = "docker push registry.cn-hangzhou.aliyuncs.com/yltcharge/" + projectName + ":" + newVersion; + if (choiceWarehouse == 1) { + cmd = "docker push registry.cn-hangzhou.aliyuncs.com/yltcharge/" + projectName + ":" + newVersion; + } else { + cmd = "docker push registry.cn-hangzhou.aliyuncs.com/dsideal/" + projectName + ":" + newVersion; + } System.out.println(cmd); ssh.exec(cmd); @@ -160,6 +175,7 @@ public class PublishUtil { /** * 功能:获取项目列表 + * * @return * @throws IOException */ @@ -189,10 +205,11 @@ public class PublishUtil { /** * 功能:获取项目名称 + * * @param pathName 路径名称 * @return 项目名称 */ - public static String getPublishProjectName(String pathName){ + public static String getPublishProjectName(String pathName) { //遍历 pathName的每个字符,如果是不是大写字母,就照抄下来,如果是大写字母,就变成小写字母,并且在小写字母前面加上下划线_ StringBuilder sb = new StringBuilder(); for (int i = 0; i < pathName.length(); i++) { @@ -206,4 +223,67 @@ public class PublishUtil { return sb.toString(); } + /** + * 功能:获取项目属性,1:JAVA后端,2:WEB前端 + * + * @return + */ + public static int getProjectAttribute(int id, List listProject) throws IOException { + for (ProjectBean projectBean : listProject) { + if (projectBean.getId() == id) { + String basedir = new File(System.getProperty("user.dir")).getCanonicalPath(); + String path = basedir + "\\" + projectBean.getDevProjectName(); + //这个path目录下有没有src这样的子目录,如果有,则判定为JAVA项目,否则为WEB项目 + if (new File(path + "\\src").exists()) { + return 1; + } else { + return 2; + } + } + } + return 0; + } + + /** + * 功能:提示用户选择项目,并返回项目编号 + */ + public static int userSelectProject(List listProject) { + Scanner scanner = new Scanner(System.in); // 创建Scanner对象来读取控制台输入 + + System.out.println("请选择您本次要发布的项目编号:"); + for (ProjectBean projectBean : listProject) { + System.out.print(projectBean.getId() + ":" + projectBean.getDevProjectName() + " "); + } + System.out.println(); + int choice = scanner.nextInt(); // 读取用户输入的整数 + //输出choice对应的项目名称 + for (ProjectBean projectBean : listProject) { + if (projectBean.getId() == choice) { + System.out.println("您选择的项目是:" + projectBean.getDevProjectName()); + break; + } + } + return choice; + } + + /** + * 功能:用户选择发布的仓库 + * + * @return + */ + public static int userSelectWarehouse() { + Scanner scanner = new Scanner(System.in); // 创建Scanner对象来读取控制台输入 + + System.out.println("请选择您本次要发布的仓库:"); + System.out.println("1:驿来特仓库 2:黄海私人仓库"); + int choice = scanner.nextInt(); // 读取用户输入的整数 + //输出choice对应的项目名称 + if (choice == 1) { + System.out.println("您选择的仓库是:驿来特仓库"); + } else { + System.out.println("您选择的仓库是:黄海私人仓库"); + } + scanner.close(); // 关闭Scanner对象 + return choice; + } } diff --git a/dsBuild/src/main/java/publishAll.java b/dsBuild/src/main/java/publishAll.java deleted file mode 100644 index ec8b2954..00000000 --- a/dsBuild/src/main/java/publishAll.java +++ /dev/null @@ -1,108 +0,0 @@ -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.Scanner; - -import Util.*; -import cn.hutool.core.io.FileUtil; - -public class publishAll { - public static List listProject = new ArrayList<>(); - public static String basedir; - - static { - try { - basedir = new File(System.getProperty("user.dir")).getCanonicalPath(); - } catch (IOException e) { - throw new RuntimeException(e); - } - } - - /** - * 功能:获取项目属性,1:JAVA后端,2:WEB前端 - * - * @return - */ - public static int getProjectAttribute(int id) { - for (ProjectBean projectBean : listProject) { - if (projectBean.getId() == id) { - - String path = basedir + "\\" + projectBean.getDevProjectName(); - //这个path目录下有没有src这样的子目录,如果有,则判定为JAVA项目,否则为WEB项目 - if (new File(path + "\\src").exists()) { - return 1; - } else { - return 2; - } - } - } - return 0; - } - - /** - * 功能:提示用户选择项目,并返回项目编号 - */ - public static int userSelectProject() { - Scanner scanner = new Scanner(System.in); // 创建Scanner对象来读取控制台输入 - - System.out.println("请选择您本次要发布的项目编号:"); - for (ProjectBean projectBean : listProject) { - System.out.print(projectBean.getId() + ":" + projectBean.getDevProjectName() + " "); - } - System.out.println(); - int choice = scanner.nextInt(); // 读取用户输入的整数 - //输出choice对应的项目名称 - for (ProjectBean projectBean : listProject) { - if (projectBean.getId() == choice) { - System.out.println("您选择的项目是:" + projectBean.getDevProjectName()); - break; - } - } - scanner.close(); // 关闭Scanner对象 - return choice; - } - - public static void main(String[] args) throws Exception { - //1、探测当前目录下有哪些以ds开头的目录,这些目录都是待发布的项目 - List projectNames = PublishUtil.getProjectNames(); - - - int idx = 0; - for (String projectName : projectNames) { - idx++; - //2、找到projectName的最后一个\符号,截取从它开始到结尾的子串,这个就是我们所谓的代码项目名,但要注意代码项目名需要转换后才是发布项目名,因为K8S的项目不允许有大写字母 - String devProjectName = projectName.substring(projectName.lastIndexOf("\\") + 1); - String publishProjectName = PublishUtil.getPublishProjectName(devProjectName); - ProjectBean pb = new ProjectBean(); - pb.setDevProjectName(devProjectName); - pb.setPublishProjectName(publishProjectName); - pb.setId(idx); - listProject.add(pb); - } - //让用户选择要发布的项目 - int choice = userSelectProject(); - //这个项目是什么类型? - int projectAttribute = getProjectAttribute(choice); - String workingPath = null, projectName = null, localLibPath = null; - boolean isStatic = false; - for (ProjectBean projectBean : listProject) { - if (projectBean.getId() == choice) { - workingPath = basedir + "\\" + projectBean.getDevProjectName(); - projectName = projectBean.getPublishProjectName(); - if (FileUtil.exist(workingPath + "\\lib")) { - localLibPath = workingPath + "\\lib"; - } - break; - } - } - if (projectAttribute == 1) { - System.out.println("JAVA项目"); - } else { - System.out.println("WEB项目"); - isStatic = true; - } - //开始打包 - PublishUtil.publish(projectName, isStatic, workingPath, localLibPath); - } -} diff --git a/dsGw/src/main/java/com/dsideal/gw/Handler/RouterHandler.java b/dsGw/src/main/java/com/dsideal/gw/Handler/RouterHandler.java index 4f4a14ab..3a11d2b7 100644 --- a/dsGw/src/main/java/com/dsideal/gw/Handler/RouterHandler.java +++ b/dsGw/src/main/java/com/dsideal/gw/Handler/RouterHandler.java @@ -48,10 +48,21 @@ public class RouterHandler extends Handler { res.setContentType("application/json"); try { RetBean ret; + String msg = ""; + if (jo.containsKey("msg")) { + msg = jo.getString("msg"); + jo.remove("msg"); + } else if (jo.containsKey("message")) { + msg = jo.getString("message"); + jo.remove("message"); + } + if (jo.getBoolean("success")) { - ret = new RetBean(RetBean.SUCCESS, "成功", jo); + jo.remove("success"); + ret = new RetBean(RetBean.SUCCESS, msg, jo); } else { - ret = new RetBean(RetBean.ERROR, "失败", jo); + jo.remove("success"); + ret = new RetBean(RetBean.ERROR, msg, jo); } res.getWriter().println(ret.toJsonString()); res.getWriter().flush(); @@ -69,18 +80,11 @@ public class RouterHandler extends Handler { responseBody = response.body().string(); } JSONObject jo = JSONObject.parseObject(responseBody); - if (jo != null) { - jo.put("success", true); - } - if (jo != null) { - jo.put("http_code", response.code()); - } renderJson(res, jo); } else { JSONObject jo = new JSONObject(); jo.put("success", false); jo.put("message", "请求失败!"); - jo.put("http_code", response.code()); renderJson(res, jo); } }