main
黄海 10 months ago
parent ab762d7929
commit 0dc19b03cd

@ -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<String> projectNames = PublishUtil.getProjectNames();
List<ProjectBean> 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);
}
}

@ -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();
}
/**
* 1JAVA2WEB
*
* @return
*/
public static int getProjectAttribute(int id, List<ProjectBean> 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<ProjectBean> 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;
}
}

@ -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<ProjectBean> listProject = new ArrayList<>();
public static String basedir;
static {
try {
basedir = new File(System.getProperty("user.dir")).getCanonicalPath();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
/**
* 1JAVA2WEB
*
* @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<String> 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);
}
}

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

Loading…
Cancel
Save