From 1b7f0a066c94945d850935ef5a922ab605e48df0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Tue, 24 Sep 2024 08:12:13 +0800 Subject: [PATCH] 'commit' --- .../Controller/LoginPersonController.java | 16 ----- dsBuild/src/main/java/Util/ProjectBean.java | 35 ++++++++++ dsBuild/src/main/java/Util/PublishUtil.java | 67 +++++++++++++++--- dsBuild/src/main/java/publishAll.java | 68 +++++++++++++++++++ dsGw/target/classes/logo.txt | 17 +++-- 5 files changed, 170 insertions(+), 33 deletions(-) create mode 100644 dsBuild/src/main/java/Util/ProjectBean.java create mode 100644 dsBuild/src/main/java/publishAll.java diff --git a/dsBase/src/main/java/com/dsideal/base/LoginPerson/Controller/LoginPersonController.java b/dsBase/src/main/java/com/dsideal/base/LoginPerson/Controller/LoginPersonController.java index 0469d0c4..bc19f3e8 100644 --- a/dsBase/src/main/java/com/dsideal/base/LoginPerson/Controller/LoginPersonController.java +++ b/dsBase/src/main/java/com/dsideal/base/LoginPerson/Controller/LoginPersonController.java @@ -28,22 +28,6 @@ public class LoginPersonController extends Controller { renderJson(jo); } - @Before({POST.class}) - public void doLoginV2(String username, String password, String platform) { - try { - JSONObject jo = model.doLogin(username, password, platform, getResponse()); - RetBean ret = new RetBean(RetBean.SUCCESS, "成功!", jo); - renderJson(ret); - } catch (Exception err) { - JSONObject jo = new JSONObject(); - jo.put("success", false); - jo.put("msg", err.getMessage()); - RetBean ret = new RetBean(RetBean.ERROR, "失败!", jo); - renderJson(ret); - } - } - - @Before({GET.class}) public void logout() { CookieUtil.remove(getRequest(), getResponse(), "identity_id"); diff --git a/dsBuild/src/main/java/Util/ProjectBean.java b/dsBuild/src/main/java/Util/ProjectBean.java new file mode 100644 index 00000000..e4d892a8 --- /dev/null +++ b/dsBuild/src/main/java/Util/ProjectBean.java @@ -0,0 +1,35 @@ +package Util; + +public class ProjectBean { + private String devProjectName; + private String publishProjectName; + private int id; + + public String getDevProjectName() { + return devProjectName; + } + + public void setDevProjectName(String devProjectName) { + this.devProjectName = devProjectName; + } + + public String getPublishProjectName() { + return publishProjectName; + } + + public void setPublishProjectName(String publishProjectName) { + this.publishProjectName = publishProjectName; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String toString() { + return "ProjectBean [devProjectName=" + devProjectName + ", publishProjectName=" + publishProjectName + ", id=" + id + "]"; + } +} diff --git a/dsBuild/src/main/java/Util/PublishUtil.java b/dsBuild/src/main/java/Util/PublishUtil.java index 70c8de27..d2fd0c2b 100644 --- a/dsBuild/src/main/java/Util/PublishUtil.java +++ b/dsBuild/src/main/java/Util/PublishUtil.java @@ -9,25 +9,28 @@ import com.jfinal.kit.PathKit; import com.jfinal.kit.StrKit; import java.io.File; +import java.io.IOException; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; public class PublishUtil { /** * 删除本机所有Docker镜像 * docker images --format "{{.Repository}}:{{.Tag}}" | xargs -r docker rmi -f * 登录远程仓库 - docker login --username=东师黄海 registry.cn-hangzhou.aliyuncs.com --password DsideaL4r5t6y7u - docker login --username=驿来特充电 registry.cn-hangzhou.aliyuncs.com --password=ylt5033. + * docker login --username=东师黄海 registry.cn-hangzhou.aliyuncs.com --password DsideaL4r5t6y7u + * docker login --username=驿来特充电 registry.cn-hangzhou.aliyuncs.com --password=ylt5033. *

* # 搜索 * docker search registry.cn-hangzhou.aliyuncs.com/yltcharge/zhu-que:20240903 * #拉取 * docker pull registry.cn-hangzhou.aliyuncs.com/yltcharge/zhu-que:20240903 - * - docker pull registry.cn-hangzhou.aliyuncs.com/dsideal/jdk:21 - docker tag 19a54d2204aa registry.cn-hangzhou.aliyuncs.com/yltcharge/jdk:21 - docker push registry.cn-hangzhou.aliyuncs.com/yltcharge/jdk:21 + *

+ * docker pull registry.cn-hangzhou.aliyuncs.com/dsideal/jdk:21 + * 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) throws Exception { System.out.println("正在生成" + projectName + "的镜像..."); @@ -143,11 +146,11 @@ public class PublishUtil { ssh.exec(cmd); //删除所有镜像 - cmd="docker rmi $(docker images -q)"; + cmd = "docker rmi $(docker images -q)"; ssh.exec(cmd); //获取最新打包后的镜像ID - cmd = "docker images --format \"{{.Repository}} {{.Tag}} {{.ID}} {{.CreatedAt}}\" | grep "+projectName+" | head -n1 | awk '{print $3}'"; + cmd = "docker images --format \"{{.Repository}} {{.Tag}} {{.ID}} {{.CreatedAt}}\" | grep " + projectName + " | head -n1 | awk '{print $3}'"; Kv kv = ssh.exec(cmd); String imageId = kv.getStr("message").replace("[", "").replace("]", ""); System.out.println("镜像打包完成,镜像ID=" + imageId); @@ -172,4 +175,52 @@ public class PublishUtil { ssh.disconnect(); System.out.println("恭喜,镜像打包成功!"); } + + /** + * 功能:获取项目列表 + * @return + * @throws IOException + */ + public static List getProjectNames() throws IOException { + String basedir = new File(System.getProperty("user.dir")).getCanonicalPath(); + //获取到的值: D:\dsWork\dsProject + //在这个目录下遍历所有的子目录,并且,需要以ds开头,而且,不能是dsBuild目录 + File directory = new File(basedir); + List dirList = new ArrayList<>(); + // 获取目录下的所有文件和子目录 + File[] files = directory.listFiles(); + if (files != null) { + for (File file : files) { + // 确保是目录 + if (file.isDirectory()) { + // 获取目录名称 + String dirName = file.getName(); + // 检查目录名称是否以"ds"开头且不是"dsBuild" + if (dirName.startsWith("ds") && !dirName.equals("dsBuild")) { + dirList.add(file.getAbsolutePath()); + } + } + } + } + return dirList; + } + + /** + * 功能:获取项目名称 + * @param pathName 路径名称 + * @return 项目名称 + */ + public static String getPublishProjectName(String pathName){ + //遍历 pathName的每个字符,如果是不是大写字母,就照抄下来,如果是大写字母,就变成小写字母,并且在小写字母前面加上下划线_ + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < pathName.length(); i++) { + char c = pathName.charAt(i); + if (Character.isUpperCase(c)) { + sb.append("_").append(Character.toLowerCase(c)); + } else { + sb.append(c); + } + } + return sb.toString(); + } } diff --git a/dsBuild/src/main/java/publishAll.java b/dsBuild/src/main/java/publishAll.java new file mode 100644 index 00000000..488d050d --- /dev/null +++ b/dsBuild/src/main/java/publishAll.java @@ -0,0 +1,68 @@ +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Scanner; + +import Util.*; + +public class publishAll { + public static List listProject = new ArrayList<>(); + /** + * 功能:获取项目属性,1:JAVA后端,2:WEB前端 + * @return + * @throws IOException + */ + public static int getProjectAttribute(int id) { + for (ProjectBean projectBean : listProject) { + if(projectBean.getId() == id){ + //String devprojectBean.getDevProjectName() + break; + } + } + return 0; + } + + /** + * 功能:提示用户选择项目,并返回项目编号 + */ + public static void 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对象 + } + + public static void main(String[] args) throws IOException { + //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); + } + //让用户选择要发布的项目 + userSelectProject(); + + } +} diff --git a/dsGw/target/classes/logo.txt b/dsGw/target/classes/logo.txt index 6e39f853..b5406466 100644 --- a/dsGw/target/classes/logo.txt +++ b/dsGw/target/classes/logo.txt @@ -1,12 +1,11 @@ - _______ ______ __ __ -/ \ / \ / | _ / | -$$$$$$$ | _______ /$$$$$$ |$$ | / \ $$ | -$$ | $$ | / |$$ | _$$/ $$ |/$ \$$ | -$$ | $$ |/$$$$$$$/ $$ |/ |$$ /$$$ $$ | -$$ | $$ |$$ \ $$ |$$$$ |$$ $$/$$ $$ | -$$ |__$$ | $$$$$$ |$$ \__$$ |$$$$/ $$$$ | -$$ $$/ / $$/ $$ $$/ $$$/ $$$ | -$$$$$$$/ $$$$$$$/ $$$$$$/ $$/ $$/ + $$\ $$$$$$\ + $$ | $$ __$$\ + $$$$$$$ | $$$$$$$\ $$ / \__|$$\ $$\ $$\ +$$ __$$ |$$ _____|$$ |$$$$\ $$ | $$ | $$ | +$$ / $$ |\$$$$$$\ $$ |\_$$ |$$ | $$ | $$ | +$$ | $$ | \____$$\ $$ | $$ |$$ | $$ | $$ | +\$$$$$$$ |$$$$$$$ |\$$$$$$ |\$$$$$\$$$$ | + \_______|\_______/ \______/ \_____\____/ power by http://patorjk.com/software/taag/ \ No newline at end of file