reghao hace 1 año
padre
commit
459ff122a6
Se han modificado 77 ficheros con 0 adiciones y 2996 borrados
  1. 0 15
      agent/src/main/java/cn/reghao/devops/agent/config/ManagerConfig.java
  2. 0 51
      agent/src/main/java/cn/reghao/devops/agent/event/EventCenter.java
  3. 0 52
      agent/src/main/java/cn/reghao/devops/agent/event/handler/EvtAppDeployHandler.java
  4. 0 73
      agent/src/main/java/cn/reghao/devops/agent/event/handler/EvtAppStatHandler.java
  5. 0 99
      agent/src/main/java/cn/reghao/devops/agent/event/ws/WebSocketListenerImpl.java
  6. 0 99
      agent/src/main/java/cn/reghao/devops/agent/event/ws/WsClient.java
  7. 0 28
      common/src/main/java/cn/reghao/devops/common/agent/app/iface/impl/AppDeployService.java
  8. 0 66
      common/src/main/java/cn/reghao/devops/common/agent/app/iface/impl/AppStatService.java
  9. 0 66
      common/src/main/java/cn/reghao/devops/common/build/chain/Bootstrap.java
  10. 0 20
      common/src/main/java/cn/reghao/devops/common/build/chain/BuildHandlers.java
  11. 0 120
      common/src/main/java/cn/reghao/devops/common/build/chain/BuildTools.java
  12. 0 16
      common/src/main/java/cn/reghao/devops/common/build/chain/Handler.java
  13. 0 11
      common/src/main/java/cn/reghao/devops/common/build/chain/HandlerParam.java
  14. 0 11
      common/src/main/java/cn/reghao/devops/common/build/chain/HandlerResult.java
  15. 0 17
      common/src/main/java/cn/reghao/devops/common/build/chain/impl/BuildChainParam.java
  16. 0 38
      common/src/main/java/cn/reghao/devops/common/build/chain/impl/BuildChainResult.java
  17. 0 46
      common/src/main/java/cn/reghao/devops/common/build/chain/impl/CompileHandler.java
  18. 0 45
      common/src/main/java/cn/reghao/devops/common/build/chain/impl/PackHandler.java
  19. 0 54
      common/src/main/java/cn/reghao/devops/common/build/chain/impl/UpdateHandler.java
  20. 0 32
      common/src/main/java/cn/reghao/devops/common/build/model/AppDto.java
  21. 0 16
      common/src/main/java/cn/reghao/devops/common/build/model/BuildConfigDto.java
  22. 0 22
      common/src/main/java/cn/reghao/devops/common/build/model/BuildConsumedDto.java
  23. 0 21
      common/src/main/java/cn/reghao/devops/common/build/model/CompilerDto.java
  24. 0 20
      common/src/main/java/cn/reghao/devops/common/build/model/LocalBuildDir.java
  25. 0 21
      common/src/main/java/cn/reghao/devops/common/build/model/PackerDto.java
  26. 0 23
      common/src/main/java/cn/reghao/devops/common/build/model/RepoAuth.java
  27. 0 15
      common/src/main/java/cn/reghao/devops/common/build/model/constant/CompileType.java
  28. 0 19
      common/src/main/java/cn/reghao/devops/common/build/model/constant/EnvType.java
  29. 0 13
      common/src/main/java/cn/reghao/devops/common/build/model/constant/RepoAuthType.java
  30. 0 13
      common/src/main/java/cn/reghao/devops/common/build/model/constant/RepoType.java
  31. 0 99
      common/src/main/java/cn/reghao/devops/common/build/tool/BuilderUtil.java
  32. 0 18
      common/src/main/java/cn/reghao/devops/common/build/tool/compiler/CodeCompiler.java
  33. 0 13
      common/src/main/java/cn/reghao/devops/common/build/tool/compiler/EmptyCompiler.java
  34. 0 119
      common/src/main/java/cn/reghao/devops/common/build/tool/compiler/MavenCompiler.java
  35. 0 33
      common/src/main/java/cn/reghao/devops/common/build/tool/compiler/ShellCompiler.java
  36. 0 24
      common/src/main/java/cn/reghao/devops/common/build/tool/packer/CodePacker.java
  37. 0 37
      common/src/main/java/cn/reghao/devops/common/build/tool/packer/DockerPack.java
  38. 0 180
      common/src/main/java/cn/reghao/devops/common/build/tool/packer/ZipFiles.java
  39. 0 51
      common/src/main/java/cn/reghao/devops/common/build/tool/packer/ZipPack.java
  40. 0 18
      common/src/main/java/cn/reghao/devops/common/build/tool/repo/ChangedFile.java
  41. 0 38
      common/src/main/java/cn/reghao/devops/common/build/tool/repo/CodeUpdater.java
  42. 0 33
      common/src/main/java/cn/reghao/devops/common/build/tool/repo/CommitInfo.java
  43. 0 63
      common/src/main/java/cn/reghao/devops/common/build/tool/repo/CustomCredentialProvider.java
  44. 0 53
      common/src/main/java/cn/reghao/devops/common/build/tool/repo/CustomSshSessionFactory.java
  45. 0 295
      common/src/main/java/cn/reghao/devops/common/build/tool/repo/GitImpl.java
  46. 0 46
      common/src/main/java/cn/reghao/devops/common/docker/po/Config.java
  47. 0 18
      common/src/main/java/cn/reghao/devops/common/docker/po/Data.java
  48. 0 11
      common/src/main/java/cn/reghao/devops/common/docker/po/ExposedPorts.java
  49. 0 16
      common/src/main/java/cn/reghao/devops/common/docker/po/GraphDriver.java
  50. 0 17
      common/src/main/java/cn/reghao/devops/common/docker/po/Health.java
  51. 0 15
      common/src/main/java/cn/reghao/devops/common/docker/po/Healthcheck.java
  52. 0 23
      common/src/main/java/cn/reghao/devops/common/docker/po/HostConfig.java
  53. 0 14
      common/src/main/java/cn/reghao/devops/common/docker/po/Labels.java
  54. 0 16
      common/src/main/java/cn/reghao/devops/common/docker/po/Log.java
  55. 0 11
      common/src/main/java/cn/reghao/devops/common/docker/po/NetworkingConfig.java
  56. 0 21
      common/src/main/java/cn/reghao/devops/common/docker/po/RestartPolicy.java
  57. 0 24
      common/src/main/java/cn/reghao/devops/common/docker/po/State.java
  58. 0 14
      common/src/main/java/cn/reghao/devops/common/docker/po/Volumes.java
  59. 0 21
      common/src/main/java/cn/reghao/devops/common/docker/po/result/Bridge.java
  60. 0 33
      common/src/main/java/cn/reghao/devops/common/docker/po/result/Container.java
  61. 0 47
      common/src/main/java/cn/reghao/devops/common/docker/po/result/ContainerInfo.java
  62. 0 19
      common/src/main/java/cn/reghao/devops/common/docker/po/result/Mount.java
  63. 0 13
      common/src/main/java/cn/reghao/devops/common/docker/po/result/NetworkSettings.java
  64. 0 13
      common/src/main/java/cn/reghao/devops/common/docker/po/result/Networks.java
  65. 0 15
      common/src/main/java/cn/reghao/devops/common/docker/po/result/Port.java
  66. 0 14
      common/src/main/java/cn/reghao/devops/common/msg/MsgQueue.java
  67. 0 11
      common/src/main/java/cn/reghao/devops/common/msg/constant/Protocol.java
  68. 0 110
      common/src/main/java/cn/reghao/devops/common/util/jvm/JVM.java
  69. 0 27
      common/src/main/java/cn/reghao/devops/common/util/jvm/po/BufferPoolStat.java
  70. 0 28
      common/src/main/java/cn/reghao/devops/common/util/jvm/po/GarbageCollectorStat.java
  71. 0 24
      common/src/main/java/cn/reghao/devops/common/util/jvm/po/JvmInfo.java
  72. 0 39
      common/src/main/java/cn/reghao/devops/common/util/jvm/po/JvmStat.java
  73. 0 32
      common/src/main/java/cn/reghao/devops/common/util/jvm/po/MemoryPoolStat.java
  74. 0 27
      common/src/main/java/cn/reghao/devops/common/util/jvm/po/MemoryStat.java
  75. 0 36
      common/src/main/java/cn/reghao/devops/common/util/jvm/po/ThreadStat.java
  76. 0 18
      common/src/main/java/cn/reghao/devops/common/ws/MessageDispatcher.java
  77. 0 7
      zzz/build.sh

+ 0 - 15
agent/src/main/java/cn/reghao/devops/agent/config/ManagerConfig.java

@@ -1,15 +0,0 @@
-package cn.reghao.devops.agent.config;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * @author reghao
- * @date 2023-02-23 11:42:58
- */
-@AllArgsConstructor
-@Getter
-public class ManagerConfig {
-    private String host;
-    private int port;
-}

+ 0 - 51
agent/src/main/java/cn/reghao/devops/agent/event/EventCenter.java

@@ -1,51 +0,0 @@
-package cn.reghao.devops.agent.event;
-
-import cn.reghao.devops.agent.event.handler.EvtAppDeployHandler;
-import cn.reghao.devops.agent.event.handler.EvtAppStatHandler;
-import cn.reghao.devops.common.agent.app.iface.AppDeploy;
-import cn.reghao.devops.common.agent.app.iface.AppStat;
-import cn.reghao.devops.common.msg.MessageSender;
-import cn.reghao.devops.common.msg.event.EvtAppDeploy;
-import cn.reghao.devops.common.msg.event.EvtAppStat;
-import cn.reghao.jutil.jdk.event.message.Event;
-import cn.reghao.jutil.jdk.event.router.EventDispatcher;
-import cn.reghao.jutil.jdk.event.message.EventMessage;
-import lombok.extern.slf4j.Slf4j;
-
-import java.lang.management.ManagementFactory;
-
-/**
- * @author reghao
- * @date 2023-02-23 09:18:11
- */
-@Slf4j
-public class EventCenter {
-    private final long startTime;
-    private final EventDispatcher dispatcher;
-
-    public EventCenter(MessageSender messageSender, AppDeploy appDeploy, AppStat appStat) {
-        this.startTime = ManagementFactory.getRuntimeMXBean().getStartTime();
-        this.dispatcher = new EventDispatcher();
-        initDispatcher(messageSender, appDeploy, appStat);
-    }
-
-    private void initDispatcher(MessageSender messageSender, AppDeploy appDeploy, AppStat appStat) {
-        dispatcher.register(EvtAppDeploy.class, new EvtAppDeployHandler(messageSender, appDeploy));
-        dispatcher.register(EvtAppStat.class, new EvtAppStatHandler(messageSender, appStat));
-    }
-
-    public void dispatch(EventMessage eventMessage) {
-        try {
-            long sendTime = eventMessage.getSendTime();
-            if (sendTime < startTime) {
-                log.info("忽略 agent 启动前 manager 发送的事件...");
-                return;
-            }
-
-            Event event = eventMessage.getEvent();
-            dispatcher.dispatch(event);
-        } catch (Exception e) {
-            log.error("处理消息发生异常: {}", e.getMessage());
-        }
-    }
-}

+ 0 - 52
agent/src/main/java/cn/reghao/devops/agent/event/handler/EvtAppDeployHandler.java

@@ -1,52 +0,0 @@
-package cn.reghao.devops.agent.event.handler;
-
-import cn.reghao.devops.common.agent.app.iface.AppDeploy;
-import cn.reghao.devops.common.machine.Machine;
-import cn.reghao.devops.common.msg.MessageSender;
-import cn.reghao.devops.common.msg.MsgQueue;
-import cn.reghao.devops.common.msg.event.EvtAppStatResult;
-import cn.reghao.jutil.jdk.event.message.Event;
-import cn.reghao.jutil.jdk.event.message.EventMessage;
-import cn.reghao.jutil.jdk.event.handler.Handler;
-import cn.reghao.devops.common.msg.event.EvtAppDeploy;
-import cn.reghao.jutil.jdk.exception.ExceptionUtil;
-import cn.reghao.jutil.jdk.result.Result;
-import cn.reghao.jutil.jdk.result.ResultStatus;
-
-import java.io.IOException;
-
-/**
- * @author reghao
- * @date 2023-03-01 10:52:04
- */
-public class EvtAppDeployHandler extends Handler {
-    private final MessageSender messageSender;
-    private final AppDeploy appDeploy;
-
-    public EvtAppDeployHandler(MessageSender messageSender, AppDeploy appDeploy) {
-        this.messageSender = messageSender;
-        this.appDeploy = appDeploy;
-    }
-
-    @Override
-    public void handle(Event evt) {
-        EvtAppDeploy deployParam = (EvtAppDeploy) evt;
-        String appId = deployParam.getAppId();
-        EvtAppStatResult statResult;
-        try {
-            statResult = appDeploy.deploy(deployParam);
-            statResult.setResult(Result.result(ResultStatus.SUCCESS));
-        } catch (Exception e) {
-            statResult = new EvtAppStatResult(appId, Machine.ID);
-            statResult.setResult(Result.result(ResultStatus.FAIL, ExceptionUtil.errorMsg(e)));
-        }
-
-        statResult.setDeploy(true);
-        EventMessage evtMsg = EventMessage.evt(statResult);
-        try {
-            messageSender.send(MsgQueue.managerTopic(), evtMsg);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-}

+ 0 - 73
agent/src/main/java/cn/reghao/devops/agent/event/handler/EvtAppStatHandler.java

@@ -1,73 +0,0 @@
-package cn.reghao.devops.agent.event.handler;
-
-import cn.reghao.devops.common.agent.app.iface.AppStat;
-import cn.reghao.devops.common.machine.Machine;
-import cn.reghao.devops.common.msg.MessageSender;
-import cn.reghao.devops.common.msg.constant.AppStatOps;
-import cn.reghao.devops.common.msg.event.EvtAppStat;
-import cn.reghao.devops.common.msg.event.EvtAppStatResult;
-import cn.reghao.jutil.jdk.event.handler.Handler;
-import cn.reghao.jutil.jdk.event.message.Event;
-import cn.reghao.jutil.jdk.event.message.EventMessage;
-import cn.reghao.jutil.jdk.exception.ExceptionUtil;
-import cn.reghao.jutil.jdk.result.Result;
-import cn.reghao.jutil.jdk.result.ResultStatus;
-
-import java.io.IOException;
-
-/**
- * @author reghao
- * @date 2023-03-01 10:21:40
- */
-public class EvtAppStatHandler extends Handler {
-    private final MessageSender messageSender;
-    private final AppStat appStat;
-
-    public EvtAppStatHandler(MessageSender messageSender, AppStat appStat) {
-        this.messageSender = messageSender;
-        this.appStat = appStat;
-    }
-
-    @Override
-    public void handle(Event evt) {
-        EvtAppStat evtAppStat = (EvtAppStat) evt;
-        String appId = evtAppStat.getAppId();
-        String ops = evtAppStat.getOps();
-
-        EvtAppStatResult statResult;
-        try {
-            switch (AppStatOps.valueOf(ops)) {
-                case start:
-                    statResult = appStat.start(evtAppStat);
-                    statResult.setResult(Result.result(ResultStatus.SUCCESS));
-                    break;
-                case stop:
-                    statResult = appStat.stop(evtAppStat);
-                    statResult.setResult(Result.result(ResultStatus.SUCCESS));
-                    break;
-                case restart:
-                    statResult = appStat.restart(evtAppStat);
-                    statResult.setResult(Result.result(ResultStatus.SUCCESS));
-                    break;
-                case stat:
-                    statResult = appStat.stat(evtAppStat);
-                    statResult.setResult(Result.result(ResultStatus.SUCCESS));
-                    break;
-                default:
-                    statResult = new EvtAppStatResult(appId, Machine.ID);
-                    String msg = String.format("应用状态操作类型 %s 不存在", ops);
-                    statResult.setResult(Result.result(ResultStatus.ERROR, msg));
-            }
-        } catch (Exception e) {
-            statResult = new EvtAppStatResult(appId, Machine.ID);
-            statResult.setResult(Result.result(ResultStatus.FAIL, ExceptionUtil.errorMsg(e)));
-        }
-
-        EventMessage evtMsg = EventMessage.evt(statResult);
-        try {
-            messageSender.send(Machine.ID, evtMsg);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-    }
-}

+ 0 - 99
agent/src/main/java/cn/reghao/devops/agent/event/ws/WebSocketListenerImpl.java

@@ -1,99 +0,0 @@
-package cn.reghao.devops.agent.event.ws;
-
-import cn.reghao.devops.agent.event.EventCenter;
-import cn.reghao.devops.common.agent.machine.MachineEvent;
-import cn.reghao.devops.common.machine.Machine;
-import cn.reghao.jutil.jdk.serializer.JdkSerializer;
-import cn.reghao.jutil.jdk.event.message.EventMessage;
-import lombok.extern.slf4j.Slf4j;
-import okhttp3.Response;
-import okhttp3.WebSocket;
-import okhttp3.WebSocketListener;
-import okio.ByteString;
-
-import java.io.EOFException;
-import java.net.ConnectException;
-import java.net.ProtocolException;
-
-/**
- * @author reghao
- * @date 2023-02-23 09:26:50
- */
-@Slf4j
-public class WebSocketListenerImpl extends WebSocketListener {
-    private final EventCenter eventCenter;
-    private final WsClient wsClient;
-    private final MachineEvent machineEvent;
-
-    public WebSocketListenerImpl(WsClient wsClient, EventCenter eventCenter, MachineEvent machineEvent) {
-        this.eventCenter = eventCenter;
-        this.wsClient = wsClient;
-        this.machineEvent = machineEvent;
-    }
-
-    @Override
-    public void onOpen(WebSocket webSocket, Response response) {
-        log.info("WebSocket 连接成功");
-        wsClient.setConnected(true);
-        wsClient.resetRetryCount();
-
-        machineEvent.agentStart();
-    }
-
-    @Override
-    public void onClosing(WebSocket webSocket, int code, String reason) {
-        log.error("WebSocket 连接被动断开 -> {} - {}", code, reason);
-        wsClient.setConnected(false);
-
-        machineEvent.pauseHeartbeat();
-        if (wsClient.isRetry()) {
-            reconnect();
-        }
-    }
-
-    @Override
-    public void onClosed(WebSocket webSocket, int code, String reason) {
-        log.error("WebSocket 连接主动断开 -> {} - {}", code, reason);
-        wsClient.setConnected(false);
-    }
-
-    @Override
-    public void onFailure(WebSocket webSocket, Throwable throwable, Response response) {
-        log.info("WebSocket 异常事件: {}", throwable.getMessage());
-        wsClient.setConnected(false);
-        if (wsClient.isRetry()) {
-            reconnect();
-        }
-    }
-
-    private void reconnect() {
-        log.info("WebSocket 重连");
-        try {
-            if (wsClient.getRetryCount() > 10) {
-                log.info("WebSocket 重连超过 10 次, 休眠 1 分钟后再尝试");
-                Thread.sleep(60_000);
-                wsClient.resetRetryCount();
-            } else {
-                log.info("休眠 10s 后再尝试重连");
-                Thread.sleep(10_000);
-            }
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
-        wsClient.retryCountIncr();
-        wsClient.connect();
-    }
-
-    @Override
-    public void onMessage(WebSocket webSocket, String text) {
-    }
-
-    @Override
-    public void onMessage(WebSocket webSocket, ByteString bytes) {
-        Object object = JdkSerializer.deserialize(bytes.toByteArray());
-        if (object instanceof EventMessage) {
-            EventMessage eventMessage = (EventMessage) object;
-            eventCenter.dispatch(eventMessage);
-        }
-    }
-}

+ 0 - 99
agent/src/main/java/cn/reghao/devops/agent/event/ws/WsClient.java

@@ -1,99 +0,0 @@
-package cn.reghao.devops.agent.event.ws;
-
-import cn.reghao.devops.agent.config.DagentConfig;
-import cn.reghao.devops.agent.config.ManagerConfig;
-import cn.reghao.devops.agent.event.EventCenter;
-import cn.reghao.devops.common.agent.app.iface.AppDeploy;
-import cn.reghao.devops.common.agent.app.iface.AppStat;
-import cn.reghao.devops.common.agent.machine.MachineEvent;
-import cn.reghao.devops.common.machine.Machine;
-import cn.reghao.devops.common.msg.MessageSender;
-import cn.reghao.jutil.jdk.serializer.JdkSerializer;
-import okhttp3.*;
-import okio.ByteString;
-
-import java.util.concurrent.TimeUnit;
-
-/**
- * @author reghao
- * @date 2023-02-23 09:26:50
- */
-public class WsClient implements MessageSender {
-    private final String url;
-    private WebSocket webSocket;
-    private boolean connected;
-    private final WebSocketListener webSocketListener;
-    private boolean retry;
-    private int retryCount;
-
-    public WsClient(DagentConfig dagentConfig, AppDeploy appDeploy, AppStat appStat) {
-        String host = dagentConfig.getManager().getHost();
-        int port = dagentConfig.getManager().getPort();
-        this.url = String.format("ws://%s:%s/ws/agent?token=%s", host, port, Machine.ID);
-
-        EventCenter eventCenter = new EventCenter(this, appDeploy, appStat);
-        int heartbeatInterval = dagentConfig.getHeartbeatInterval();
-        MachineEvent machineEvent = new MachineEvent(this, new Machine(), heartbeatInterval);
-        this.webSocketListener = new WebSocketListenerImpl(this, eventCenter, machineEvent);
-        this.retry = true;
-        this.retryCount = 0;
-    }
-
-    public void setRetry(boolean retry) {
-        this.retry = retry;
-    }
-
-    public boolean isRetry() {
-        return retry;
-    }
-
-    public void retryCountIncr() {
-        this.retryCount += 1;
-    }
-
-    public void resetRetryCount() {
-        this.retryCount = 0;
-    }
-
-    public int getRetryCount() {
-        return retryCount;
-    }
-
-    @Override
-    public void connect() {
-        Request request = new Request.Builder()
-                .url(url)
-                .header("Authorization", "Bearer " + Machine.ID)
-                .build();
-
-        OkHttpClient okHttpClient = new OkHttpClient.Builder()
-                .connectTimeout(30, TimeUnit.SECONDS)
-                .readTimeout(30, TimeUnit.SECONDS)
-                .writeTimeout(30, TimeUnit.SECONDS)
-                .build();
-        this.webSocket = okHttpClient.newWebSocket(request, webSocketListener);
-    }
-
-    @Override
-    public void setConnected(boolean status) {
-        this.connected = status;
-    }
-
-    @Override
-    public boolean isConnected() {
-        return connected;
-    }
-
-    @Override
-    public void send(String dest, Object message) {
-        if (isConnected()) {
-            byte[] bytes = JdkSerializer.serialize(message);
-            webSocket.send(ByteString.of(bytes));
-        }
-    }
-
-    public void close() {
-        setRetry(false);
-        webSocket.close(1000, "Client Close Connection");
-    }
-}

+ 0 - 28
common/src/main/java/cn/reghao/devops/common/agent/app/iface/impl/AppDeployService.java

@@ -1,28 +0,0 @@
-package cn.reghao.devops.common.agent.app.iface.impl;
-
-import cn.reghao.devops.common.agent.app.iface.AppDeploy;
-import cn.reghao.devops.common.msg.constant.PackType;
-import cn.reghao.devops.common.msg.event.EvtAppDeploy;
-import cn.reghao.devops.common.msg.event.EvtAppStatResult;
-
-/**
- * @author reghao
- * @date 2023-03-06 16:21:30
- */
-public class AppDeployService implements AppDeploy {
-    private final DockerApp dockerApp;
-
-    public AppDeployService(DockerApp dockerApp) {
-        this.dockerApp = dockerApp;
-    }
-
-    @Override
-    public EvtAppStatResult deploy(EvtAppDeploy deployParam) throws Exception {
-        String packType = deployParam.getPackType();
-        if (packType.equals(PackType.docker.name())) {
-            return dockerApp.deploy(deployParam);
-        } else {
-            throw new Exception("zip 打包没有实现");
-        }
-    }
-}

+ 0 - 66
common/src/main/java/cn/reghao/devops/common/agent/app/iface/impl/AppStatService.java

@@ -1,66 +0,0 @@
-package cn.reghao.devops.common.agent.app.iface.impl;
-
-import cn.reghao.devops.common.agent.app.iface.AppStat;
-import cn.reghao.devops.common.msg.constant.PackType;
-import cn.reghao.devops.common.msg.event.EvtAppStat;
-import cn.reghao.devops.common.msg.event.EvtAppStatResult;
-
-/**
- * @author reghao
- * @date 2023-03-06 16:19:24
- */
-public class AppStatService implements AppStat {
-    private final DockerApp dockerApp;
-
-    public AppStatService(DockerApp dockerApp) {
-        this.dockerApp = dockerApp;
-    }
-
-    @Override
-    public EvtAppStatResult start(EvtAppStat evtAppStat) throws Exception {
-        String packType = evtAppStat.getPackType();
-        String appId = evtAppStat.getAppId();
-
-        if (packType.equals(PackType.docker.name())) {
-            return dockerApp.start(appId);
-        } else {
-            throw new Exception("zip 打包没有实现");
-        }
-    }
-
-    @Override
-    public EvtAppStatResult stop(EvtAppStat evtAppStat) throws Exception {
-        String packType = evtAppStat.getPackType();
-        String appId = evtAppStat.getAppId();
-
-        if (packType.equals(PackType.docker.name())) {
-            return dockerApp.stop(appId);
-        } else {
-            throw new Exception("zip 打包没有实现");
-        }
-    }
-
-    @Override
-    public EvtAppStatResult restart(EvtAppStat evtAppStat) throws Exception {
-        String packType = evtAppStat.getPackType();
-        String appId = evtAppStat.getAppId();
-
-        if (packType.equals(PackType.docker.name())) {
-            return dockerApp.restart(appId);
-        } else {
-            throw new Exception("zip 打包没有实现");
-        }
-    }
-
-    @Override
-    public EvtAppStatResult stat(EvtAppStat evtAppStat) throws Exception {
-        String packType = evtAppStat.getPackType();
-        String appId = evtAppStat.getAppId();
-
-        if (packType.equals(PackType.docker.name())) {
-            return dockerApp.stat(appId);
-        } else {
-            throw new Exception("zip 打包没有实现");
-        }
-    }
-}

+ 0 - 66
common/src/main/java/cn/reghao/devops/common/build/chain/Bootstrap.java

@@ -1,66 +0,0 @@
-package cn.reghao.devops.common.build.chain;
-
-import cn.reghao.devops.common.build.chain.impl.BuildChainResult;
-import cn.reghao.jutil.jdk.exception.ExceptionUtil;
-import cn.reghao.jutil.jdk.result.Result;
-import cn.reghao.jutil.jdk.result.ResultStatus;
-
-import java.util.List;
-import java.util.function.Supplier;
-
-/**
- * @author reghao
- * @date 2022-05-06 15:58:42
- */
-public class Bootstrap<K extends HandlerParam, V extends HandlerResult> implements Supplier<HandlerResult> {
-    private Handler<K, V> first;
-    private final K buildParam;
-    private final V buildResult;
-
-    public Bootstrap(List<Handler<K, V>> list, K buildParam, V buildResult) {
-        init(list);
-        this.buildParam = buildParam;
-        this.buildResult = buildResult;
-    }
-
-    @Override
-    public V get() {
-        Result result;
-        try {
-            first.handle(buildParam, buildResult);
-            result = Result.result(ResultStatus.SUCCESS);
-        } catch (Exception e) {
-            String errMsg = ExceptionUtil.stackTrace(e);
-            if (errMsg.length() > 20_000) {
-                errMsg = errMsg.substring(0, 20_000);
-            }
-            result = Result.result(ResultStatus.FAIL, errMsg);
-        } finally {
-            /*if (buildResult instanceof BuildChainResult) {
-            }*/
-        }
-
-        BuildChainResult buildChainResult = (BuildChainResult) buildResult;
-        buildChainResult.setResult(result);
-        return buildResult;
-    }
-
-    /**
-     * 初始化职责链
-     *
-     * @param
-     * @return
-     * @date 2023-03-10 09:42:59
-     */
-    private void init(List<Handler<K, V>> list) {
-        if (list.isEmpty()) {
-            return;
-        }
-
-        this.first = list.get(0);
-        Handler<K, V> handler = first;
-        for (int i = 1; i < list.size(); i++) {
-            handler = handler.addNext(list.get(i));
-        }
-    }
-}

+ 0 - 20
common/src/main/java/cn/reghao/devops/common/build/chain/BuildHandlers.java

@@ -1,20 +0,0 @@
-package cn.reghao.devops.common.build.chain;
-
-import cn.reghao.devops.common.build.chain.impl.*;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2022-05-09 11:14:25
- */
-public class BuildHandlers {
-    public static List<Handler<BuildChainParam, BuildChainResult>> buildHandlerList() {
-        List<Handler<BuildChainParam, BuildChainResult>> list = new ArrayList<>();
-        list.add(new UpdateHandler());
-        list.add(new CompileHandler());
-        list.add(new PackHandler());
-        return list;
-    }
-}

+ 0 - 120
common/src/main/java/cn/reghao/devops/common/build/chain/BuildTools.java

@@ -1,120 +0,0 @@
-package cn.reghao.devops.common.build.chain;
-
-import cn.reghao.devops.common.build.model.AppDto;
-import cn.reghao.devops.common.build.model.CompilerDto;
-import cn.reghao.devops.common.build.model.PackerDto;
-import cn.reghao.devops.common.build.model.RepoAuth;
-import cn.reghao.devops.common.build.model.constant.CompileType;
-import cn.reghao.devops.common.build.model.constant.RepoType;
-import cn.reghao.devops.common.build.tool.compiler.CodeCompiler;
-import cn.reghao.devops.common.build.tool.compiler.EmptyCompiler;
-import cn.reghao.devops.common.build.tool.compiler.MavenCompiler;
-import cn.reghao.devops.common.build.tool.compiler.ShellCompiler;
-import cn.reghao.devops.common.build.tool.packer.CodePacker;
-import cn.reghao.devops.common.build.tool.packer.DockerPack;
-import cn.reghao.devops.common.build.tool.packer.ZipPack;
-import cn.reghao.devops.common.build.tool.repo.CodeUpdater;
-import cn.reghao.devops.common.build.tool.repo.GitImpl;
-import cn.reghao.devops.common.docker.DockerImpl;
-import cn.reghao.devops.common.msg.constant.PackType;
-
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * @author reghao
- * @date 2022-05-07 14:35:11
- */
-public class BuildTools {
-    // appId -> {codeUpdate,codeCompiler,codePacker} -> name
-    private static final Map<String, Map<String, String>> buildConfig = new HashMap<>();
-    private static final Map<String, CodeUpdater> codeUpdaterMap = new HashMap<>();
-    private static final Map<String, CodeCompiler> codeCompilerMap = new HashMap<>();
-    private static final Map<String, CodePacker> codePackerMap = new HashMap<>();
-
-    public static CodeUpdater getCodeUpdater(String appId) {
-        String codeUpdater = buildConfig.get(appId).get("codeUpdater");
-        return codeUpdaterMap.get(codeUpdater);
-    }
-
-    public static CodeCompiler getCodeCompiler(String appId) {
-        String codeCompiler = buildConfig.get(appId).get("codeCompiler");
-        return codeCompilerMap.get(codeCompiler);
-    }
-
-    public static CodePacker getCodePacker(String appId) {
-        String codePacker = buildConfig.get(appId).get("codePacker");
-        return codePackerMap.get(codePacker);
-    }
-
-    public static void removeApp(String appId) {
-        buildConfig.remove(appId);
-    }
-
-    public static void removeCodeUpdater(String repoAuthName) {
-        codeUpdaterMap.remove(repoAuthName);
-    }
-
-    public static void removeCodeCompiler(String compilerName) {
-        codeCompilerMap.remove(compilerName);
-    }
-
-    public static void removeCodePacker(String packerName) {
-        codePackerMap.remove(packerName);
-    }
-
-    public static void init(AppDto appDto) throws Exception {
-        String appId = appDto.getAppId();
-        RepoAuth repoAuth = appDto.getBuildConfigDto().getRepoAuth();
-        String repoAuthName = repoAuth.getName();
-        CodeUpdater codeUpdater = codeUpdaterMap.get(repoAuthName);
-        if (codeUpdater == null) {
-            switch (RepoType.valueOf(repoAuth.getType())) {
-                case git:
-                    codeUpdater = new GitImpl(repoAuth);
-                    break;
-                default:
-                    throw new Exception(repoAuth.getType() + " 仓库类型未实现");
-            }
-            codeUpdaterMap.put(repoAuthName, codeUpdater);
-        }
-        buildConfig.computeIfAbsent(appId, k -> new HashMap<>()).put("codeUpdater", repoAuthName);
-
-        CompilerDto compilerDto = appDto.getBuildConfigDto().getCompilerDto();
-        String compilerName = compilerDto.getName();
-        CodeCompiler codeCompiler = codeCompilerMap.get(compilerName);
-        if (codeCompiler == null) {
-            switch (CompileType.valueOf(compilerDto.getType())) {
-                case shell:
-                    codeCompiler = new ShellCompiler(compilerDto);
-                    break;
-                case maven:
-                    codeCompiler = new MavenCompiler(compilerDto.getHomePath());
-                    break;
-                case none:
-                    codeCompiler = new EmptyCompiler();
-                    break;
-                default:
-                    throw new Exception(compilerDto.getType() + " 编译类型未实现");
-            }
-            codeCompilerMap.put(compilerName, codeCompiler);
-        }
-        buildConfig.computeIfAbsent(appId, k -> new HashMap<>()).put("codeCompiler", compilerName);
-
-        PackerDto packerDto = appDto.getBuildConfigDto().getPackerDto();
-        String packerName = packerDto.getName();
-        CodePacker codePacker = codePackerMap.get(packerName);
-        if (codePacker == null) {
-            switch (PackType.valueOf(packerDto.getType())) {
-                case docker:
-                    codePacker = new DockerPack(packerDto.getTargetPath(), new DockerImpl());
-                    break;
-                default:
-                    codePacker = new ZipPack(packerDto.getBinDirname());
-                    break;
-            }
-            codePackerMap.put(packerName, codePacker);
-        }
-        buildConfig.computeIfAbsent(appId, k -> new HashMap<>()).put("codePacker", packerName);
-    }
-}

+ 0 - 16
common/src/main/java/cn/reghao/devops/common/build/chain/Handler.java

@@ -1,16 +0,0 @@
-package cn.reghao.devops.common.build.chain;
-
-/**
- * @author reghao
- * @date 2022-05-06 14:32:27
- */
-public abstract class Handler<K extends HandlerParam, V extends HandlerResult> {
-    protected Handler<K, V> next;
-
-    public Handler<K, V> addNext(Handler<K, V> next) {
-        this.next = next;
-        return next;
-    }
-
-    public abstract void handle(final K buildParam, V buildResult) throws Exception;
-}

+ 0 - 11
common/src/main/java/cn/reghao/devops/common/build/chain/HandlerParam.java

@@ -1,11 +0,0 @@
-package cn.reghao.devops.common.build.chain;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2022-05-06 15:56:38
- */
-public class HandlerParam implements Serializable {
-    private static final long serialVersionUID = 1L;
-}

+ 0 - 11
common/src/main/java/cn/reghao/devops/common/build/chain/HandlerResult.java

@@ -1,11 +0,0 @@
-package cn.reghao.devops.common.build.chain;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2022-05-06 15:56:46
- */
-public class HandlerResult implements Serializable {
-    private static final long serialVersionUID = 1L;
-}

+ 0 - 17
common/src/main/java/cn/reghao/devops/common/build/chain/impl/BuildChainParam.java

@@ -1,17 +0,0 @@
-package cn.reghao.devops.common.build.chain.impl;
-
-import cn.reghao.devops.common.build.chain.HandlerParam;
-import cn.reghao.devops.common.build.model.AppDto;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * @author reghao
- * @date 2022-05-07 15:41:14
- */
-@AllArgsConstructor
-@Getter
-public class BuildChainParam extends HandlerParam {
-    private AppDto appDto;
-    private boolean deploy;
-}

+ 0 - 38
common/src/main/java/cn/reghao/devops/common/build/chain/impl/BuildChainResult.java

@@ -1,38 +0,0 @@
-package cn.reghao.devops.common.build.chain.impl;
-
-import cn.reghao.devops.common.build.chain.HandlerResult;
-import cn.reghao.devops.common.build.model.AppDto;
-import cn.reghao.devops.common.build.model.BuildConfigDto;
-import cn.reghao.devops.common.build.model.BuildConsumedDto;
-import cn.reghao.devops.common.build.tool.repo.CommitInfo;
-import cn.reghao.jutil.jdk.result.Result;
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author reghao
- * @date 2022-05-07 15:05:21
- */
-@Setter
-@Getter
-public class BuildChainResult extends HandlerResult {
-    private String buildLogId;
-    private AppDto appDto;
-    @Deprecated
-    private BuildConfigDto buildConfigDto;
-    private String dockerfile;
-    private CommitInfo commitInfo;
-    private String packagePath;
-    private BuildConsumedDto buildConsumedDto;
-    private Result result;
-    private String buildBy;
-
-    public BuildChainResult(String buildLogId, AppDto appDto, String buildBy) {
-        this.buildLogId = buildLogId;
-        this.appDto = appDto;
-        this.buildConfigDto = appDto.getBuildConfigDto();
-        this.dockerfile = appDto.getDockerfile();
-        this.buildConsumedDto = new BuildConsumedDto();
-        this.buildBy = buildBy;
-    }
-}

+ 0 - 46
common/src/main/java/cn/reghao/devops/common/build/chain/impl/CompileHandler.java

@@ -1,46 +0,0 @@
-package cn.reghao.devops.common.build.chain.impl;
-
-import cn.reghao.devops.common.build.chain.BuildTools;
-import cn.reghao.devops.common.build.chain.Handler;
-import cn.reghao.devops.common.build.model.AppDto;
-import cn.reghao.devops.common.build.model.CompilerDto;
-import cn.reghao.devops.common.build.model.LocalBuildDir;
-import cn.reghao.devops.common.build.model.constant.CompileType;
-import cn.reghao.devops.common.build.tool.compiler.CodeCompiler;
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.File;
-
-/**
- * @author reghao
- * @date 2022-05-06 16:02:44
- */
-@Slf4j
-public class CompileHandler extends Handler<BuildChainParam, BuildChainResult> {
-    @Override
-    public void handle(final BuildChainParam buildParam, BuildChainResult buildResult) throws Exception {
-        AppDto appDto = buildParam.getAppDto();
-        String appId = appDto.getAppId();
-        log.info("编译 {} 代码...", appId);
-
-        CodeCompiler codeCompiler = BuildTools.getCodeCompiler(appId);
-        String appCompileDir = LocalBuildDir.compileDir + File.separator + appId;
-        String compileDir = appCompileDir + File.separator + appDto.getProjDirname();
-        long start = System.currentTimeMillis();
-        CompilerDto compilerDto = appDto.getBuildConfigDto().getCompilerDto();
-        String compileType = compilerDto.getType();
-        if (compileType.equals(CompileType.maven.getName())) {
-            codeCompiler.compile(appId, compileDir, appDto.getEnv(), appDto.getAppRootPath());
-        } else if (compileType.equals(CompileType.shell.getName())) {
-            codeCompiler.compile(appId, compileDir);
-        } else {
-            String errMsg = String.format("unknown compile type %s with app %s", compileType, appId);
-            throw new Exception(errMsg);
-        }
-
-        buildResult.getBuildConsumedDto().setCompileConsumed(System.currentTimeMillis()-start);
-        if (next != null) {
-            next.handle(buildParam, buildResult);
-        }
-    }
-}

+ 0 - 45
common/src/main/java/cn/reghao/devops/common/build/chain/impl/PackHandler.java

@@ -1,45 +0,0 @@
-package cn.reghao.devops.common.build.chain.impl;
-
-import cn.reghao.devops.common.build.chain.BuildTools;
-import cn.reghao.devops.common.build.chain.Handler;
-import cn.reghao.devops.common.build.model.AppDto;
-import cn.reghao.devops.common.build.model.LocalBuildDir;
-import cn.reghao.devops.common.build.tool.packer.CodePacker;
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.File;
-
-/**
- * @author reghao
- * @date 2022-05-06 16:02:50
- */
-@Slf4j
-public class PackHandler extends Handler<BuildChainParam, BuildChainResult> {
-    @Override
-    public void handle(final BuildChainParam buildParam, BuildChainResult buildResult) throws Exception {
-        AppDto appDto = buildParam.getAppDto();
-        String appId = appDto.getAppId();
-        log.info("打包 {} 应用...", appId);
-
-        String commitId = buildResult.getCommitInfo().getCommitId();
-        CodePacker codePacker = BuildTools.getCodePacker(appId);
-        String appCompileDir = LocalBuildDir.compileDir + File.separator + appId;
-        String compileDir = appCompileDir + File.separator + appDto.getProjDirname();
-        String appRootPath = compileDir + File.separator + appDto.getAppRootPath();
-        String dockerfile = appDto.getDockerfile();
-
-        long start = System.currentTimeMillis();
-        String localPath = codePacker.pack(appId, commitId, appRootPath, dockerfile);
-        buildResult.getBuildConsumedDto().setPackConsumed(System.currentTimeMillis()-start);
-
-        log.info("推送已构建的 {} 应用...", appId);
-        start = System.currentTimeMillis();
-        String packagePath = codePacker.push(localPath);
-        buildResult.setPackagePath(packagePath);
-        buildResult.getBuildConsumedDto().setPushConsumed(System.currentTimeMillis()-start);
-
-        if (next != null) {
-            next.handle(buildParam, buildResult);
-        }
-    }
-}

+ 0 - 54
common/src/main/java/cn/reghao/devops/common/build/chain/impl/UpdateHandler.java

@@ -1,54 +0,0 @@
-package cn.reghao.devops.common.build.chain.impl;
-
-import cn.reghao.devops.common.build.chain.BuildTools;
-import cn.reghao.devops.common.build.chain.Handler;
-import cn.reghao.devops.common.build.model.AppDto;
-import cn.reghao.devops.common.build.model.LocalBuildDir;
-import cn.reghao.devops.common.build.tool.BuilderUtil;
-import cn.reghao.devops.common.build.tool.repo.CodeUpdater;
-import cn.reghao.devops.common.build.tool.repo.CommitInfo;
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.File;
-
-/**
- * @author reghao
- * @date 2022-05-06 16:02:38
- */
-@Slf4j
-public class UpdateHandler extends Handler<BuildChainParam, BuildChainResult> {
-    @Override
-    public void handle(final BuildChainParam buildParam, BuildChainResult buildResult) throws Exception {
-        AppDto appDto = buildParam.getAppDto();
-        String appId = appDto.getAppId();
-        log.info("更新 {} 代码...", appId);
-
-        CodeUpdater codeUpdater = BuildTools.getCodeUpdater(appId);
-        long start = System.currentTimeMillis();
-        CommitInfo commitInfo = update(appDto, codeUpdater);
-        buildResult.getBuildConsumedDto().setPullConsumed(System.currentTimeMillis()-start);
-        buildResult.setCommitInfo(commitInfo);
-
-        if (next != null) {
-            next.handle(buildParam, buildResult);
-        }
-    }
-
-    public CommitInfo update(AppDto appDto, CodeUpdater codeUpdater) throws Exception {
-        String remote;
-        String branch;
-        String local = LocalBuildDir.localRepo + File.separator + appDto.getAppId();
-        remote = appDto.getAppRepo();
-        branch = appDto.getRepoBranch();
-        CommitInfo last = codeUpdater.latestCommitInfo(local, branch);
-        CommitInfo current = codeUpdater.pull(remote, branch, local);
-        if (last == null || last.getMsCommitTime() <= current.getMsCommitTime()) {
-            // 本地仓库不存在 or 本地仓库版本和远程仓库相同 or 本地仓库版本落后于远程仓库
-            BuilderUtil.copyToCompileDir(local, appDto);
-        } else if (last.getMsCommitTime() > current.getMsCommitTime()) {
-            throw new Exception("本地仓库代码比远程仓库更新");
-        }
-
-        return current;
-    }
-}

+ 0 - 32
common/src/main/java/cn/reghao/devops/common/build/model/AppDto.java

@@ -1,32 +0,0 @@
-package cn.reghao.devops.common.build.model;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2023-03-16 09:58:32
- */
-@AllArgsConstructor
-@Getter
-public class AppDto implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String appId;
-    private String env;
-    // 仅在 cn.reghao.devops.manager.build.tool.BuilderUtil 中使用
-    @Deprecated
-    private String appType;
-    private String appRepo;
-    private String repoBranch;
-    private String projDirname;
-    private String appRootPath;
-    private String dockerfile;
-
-    private BuildConfigDto buildConfigDto;
-    /*private RepoAuth repoAuth;
-    private CompilerDto compilerDto;
-    private PackerDto packerDto;*/
-}

+ 0 - 16
common/src/main/java/cn/reghao/devops/common/build/model/BuildConfigDto.java

@@ -1,16 +0,0 @@
-package cn.reghao.devops.common.build.model;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * @author reghao
- * @date 2023-03-16 10:18:39
- */
-@AllArgsConstructor
-@Getter
-public class BuildConfigDto {
-    private RepoAuth repoAuth;
-    private CompilerDto compilerDto;
-    private PackerDto packerDto;
-}

+ 0 - 22
common/src/main/java/cn/reghao/devops/common/build/model/BuildConsumedDto.java

@@ -1,22 +0,0 @@
-package cn.reghao.devops.common.build.model;
-
-import lombok.Getter;
-import lombok.Setter;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2023-03-16 10:31:35
- */
-@Setter
-@Getter
-public class BuildConsumedDto implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    // ms 时间戳
-    private Long pullConsumed;
-    private Long compileConsumed;
-    private Long packConsumed;
-    private Long pushConsumed;
-}

+ 0 - 21
common/src/main/java/cn/reghao/devops/common/build/model/CompilerDto.java

@@ -1,21 +0,0 @@
-package cn.reghao.devops.common.build.model;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2023-03-16 09:52:17
- */
-@AllArgsConstructor
-@Getter
-public class CompilerDto implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String type;
-    private String name;
-    private String homePath;
-    private String compileScript;
-}

+ 0 - 20
common/src/main/java/cn/reghao/devops/common/build/model/LocalBuildDir.java

@@ -1,20 +0,0 @@
-package cn.reghao.devops.common.build.model;
-
-import java.io.Serializable;
-
-/**
- * 本地构建目录
- *
- * @author reghao
- * @date 2020-03-09 14:36:41
- */
-public class LocalBuildDir implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    // 本地仓库
-    public static String localRepo;
-    // 编译目录
-    public static String compileDir;
-    // 应用打包后存放的目录
-    public static String packDir;
-}

+ 0 - 21
common/src/main/java/cn/reghao/devops/common/build/model/PackerDto.java

@@ -1,21 +0,0 @@
-package cn.reghao.devops.common.build.model;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2023-03-16 09:52:31
- */
-@AllArgsConstructor
-@Getter
-public class PackerDto implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String type;
-    private String name;
-    private String targetPath;
-    private String binDirname;
-}

+ 0 - 23
common/src/main/java/cn/reghao/devops/common/build/model/RepoAuth.java

@@ -1,23 +0,0 @@
-package cn.reghao.devops.common.build.model;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2023-03-16 09:24:53
- */
-@AllArgsConstructor
-@Getter
-public class RepoAuth implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String type;
-    private String name;
-    private String authType;
-    private String username;
-    private String password;
-    private String rsaPrikey;
-}

+ 0 - 15
common/src/main/java/cn/reghao/devops/common/build/model/constant/CompileType.java

@@ -1,15 +0,0 @@
-package cn.reghao.devops.common.build.model.constant;
-
-/**
- * 编译方式类型
- *
- * @author reghao
- * @date 2019-10-18 14:31:29
- */
-public enum CompileType {
-    none, shell, maven;
-
-    public String getName() {
-        return this.name();
-    }
-}

+ 0 - 19
common/src/main/java/cn/reghao/devops/common/build/model/constant/EnvType.java

@@ -1,19 +0,0 @@
-package cn.reghao.devops.common.build.model.constant;
-
-/**
- * @author reghao
- * @date 2023-12-01 14:17:44
- */
-public enum EnvType {
-    dev("开发环境"),test("测试环境"),uat("预发布环境"),prod("生产环境");
-
-    private final String desc;
-
-    EnvType(String desc) {
-        this.desc = desc;
-    }
-
-    public String getDesc() {
-        return desc;
-    }
-}

+ 0 - 13
common/src/main/java/cn/reghao/devops/common/build/model/constant/RepoAuthType.java

@@ -1,13 +0,0 @@
-package cn.reghao.devops.common.build.model.constant;
-
-/**
- * @author reghao
- * @date 2021-02-05 18:50:01
- */
-public enum RepoAuthType {
-    http, ssh, none;
-
-    public String getName() {
-        return this.name();
-    }
-}

+ 0 - 13
common/src/main/java/cn/reghao/devops/common/build/model/constant/RepoType.java

@@ -1,13 +0,0 @@
-package cn.reghao.devops.common.build.model.constant;
-
-/**
- * @author reghao
- * @date 2021-02-05 22:50:41
- */
-public enum RepoType {
-    git;
-
-    public String getName() {
-        return this.name();
-    }
-}

+ 0 - 99
common/src/main/java/cn/reghao/devops/common/build/tool/BuilderUtil.java

@@ -1,99 +0,0 @@
-package cn.reghao.devops.common.build.tool;
-
-import cn.reghao.devops.common.build.model.AppDto;
-import cn.reghao.devops.common.build.model.LocalBuildDir;
-import cn.reghao.devops.common.util.text.FileProcessor;
-import cn.reghao.devops.common.util.text.ReplaceCharacter;
-import org.apache.commons.io.FileUtils;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.*;
-import java.nio.file.attribute.BasicFileAttributes;
-import java.util.Objects;
-
-/**
- * @author reghao
- * @date 2019-11-16 21:55:31
- */
-public class BuilderUtil {
-    /**
-     * 复制源码到编译目录
-     *
-     * @param appLocalRepo 应用代码的本地仓库位置
-     * @date 2019-12-03 上午9:55
-     */
-    public static void copyToCompileDir(String appLocalRepo, AppDto appDto) throws IOException {
-        String appCompileDir = LocalBuildDir.compileDir + File.separator + appDto.getAppId();
-        File compileDir = new File(appCompileDir);
-        if (!compileDir.exists() && !compileDir.mkdirs()) {
-            throw new IOException(compileDir + "不存在");
-        } else {
-            FileUtils.cleanDirectory(compileDir);
-        }
-
-        copyDirContentToDir(appLocalRepo, appCompileDir);
-        // TODO Dotnet 应用需要额外的处理
-        if (appDto.getAppType().equals("dotnetCore")) {
-            // Dotnet 应用需要替换一些字符
-            replaceCharacter(appCompileDir);
-        }
-    }
-
-    static void copyDirContentToDir(String src, String dst) throws IOException {
-        File srcDir = new File(src);
-        File dstDir = new File(dst);
-        for (File file : Objects.requireNonNull(srcDir.listFiles())) {
-            if (file.isDirectory()) {
-                String dirname = file.getName();
-                File dstdir = new File(dst + File.separator + dirname);
-                FileUtils.copyDirectory(file, dstdir);
-            } else {
-                FileUtils.copyFileToDirectory(file, dstDir);
-            }
-        }
-    }
-
-    /**
-     * TODO 判断文件编码
-     *
-     * @param
-     * @return
-     * @date 2020-08-18 上午11:00
-     */
-    public static void replaceCharacter(String appCompileDir) {
-        traversal(appCompileDir, new ReplaceCharacter());
-    }
-
-    static void traversal(String dirPath, FileProcessor processor) {
-        Path path = Paths.get(dirPath);
-        try {
-            Files.walkFileTree(path, new FileVisitor<Path>() {
-                @Override
-                public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
-                    return FileVisitResult.CONTINUE;
-                }
-
-                // 处理目录中的文件
-                @Override
-                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
-                    processor.process(file.toFile());
-
-                    return FileVisitResult.CONTINUE;
-                }
-
-                @Override
-                public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
-                    return FileVisitResult.CONTINUE;
-                }
-
-                @Override
-                public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOException {
-                    return FileVisitResult.CONTINUE;
-                }
-            });
-        } catch (IOException ioe) {
-            ioe.printStackTrace();
-        }
-    }
-}

+ 0 - 18
common/src/main/java/cn/reghao/devops/common/build/tool/compiler/CodeCompiler.java

@@ -1,18 +0,0 @@
-package cn.reghao.devops.common.build.tool.compiler;
-
-/**
- * 编译代码
- *
- * @author reghao
- * @date 2020-01-21 16:17:22
- */
-public interface CodeCompiler {
-    /**
-     * @param appId 应用标识
-     * @param appCompileHome 编译应用代码所处的目录
-     * @date 2020-01-21 下午4:20
-     */
-    void compile(String appId, String appCompileHome) throws Exception;
-    default void compile(String appId, String appCompileHome, String env, String appRootPath) throws Exception {
-    }
-}

+ 0 - 13
common/src/main/java/cn/reghao/devops/common/build/tool/compiler/EmptyCompiler.java

@@ -1,13 +0,0 @@
-package cn.reghao.devops.common.build.tool.compiler;
-
-/**
- * 没有编译器
- *
- * @author reghao
- * @date 2019-10-12 23:55:01
- */
-public class EmptyCompiler implements CodeCompiler {
-    @Override
-    public void compile(String appId, String appCompileHome) throws Exception {
-    }
-}

+ 0 - 119
common/src/main/java/cn/reghao/devops/common/build/tool/compiler/MavenCompiler.java

@@ -1,119 +0,0 @@
-package cn.reghao.devops.common.build.tool.compiler;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.maven.model.Model;
-import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-import org.apache.maven.shared.invoker.*;
-import org.apache.maven.shared.utils.cli.CommandLineException;
-import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collections;
-
-/**
- * Maven 编译,打包
- *
- * @author reghao
- * @date 2019-10-12 23:55:01
- */
-@Slf4j
-public class MavenCompiler implements CodeCompiler {
-    private final MavenXpp3Reader reader;
-    private final Invoker invoker;
-    private final String[] standaloneArgs;
-
-    public MavenCompiler(String mavenHome) {
-        System.setProperty("maven.home", mavenHome);
-        this.invoker = new DefaultInvoker();
-        this.reader = new MavenXpp3Reader();
-        this.standaloneArgs = new String[]{"clean", "package", "-Dmaven.test.skip=true"};
-    }
-
-    @Override
-    public void compile(String appId, String appCompileHome) throws Exception {
-        throw new Exception("未实现此方法");
-    }
-
-    @Override
-    public void compile(String appId, String appCompileHome, String env, String appRootPath) throws Exception {
-        String pomPath = appCompileHome + "/pom.xml";
-        boolean multiModule = isMultiModule(pomPath);
-        MavenBuild mavenBuild;
-        if (multiModule) {
-            mavenBuild = setMultiModuleInvocationRequest(pomPath, env, appRootPath);
-        } else {
-            mavenBuild = setStandaloneInvocationRequest(pomPath, env);
-        }
-
-        InvocationResult result = invoker.execute(mavenBuild.invocationRequest);
-        if (result.getExitCode() != 0) {
-            CommandLineException exception = result.getExecutionException();
-            if (exception != null) {
-                throw exception;
-            }
-            throw new Exception(mavenBuild.stringBuilder.toString());
-        }
-    }
-
-    private boolean isMultiModule(String pomPath) throws IOException, XmlPullParserException {
-        FileInputStream fis = new FileInputStream(pomPath);
-        Model model = reader.read(fis);
-        String packaging = model.getPackaging();
-        return "pom".equals(packaging);
-    }
-
-    /**
-     * mvn clean package -Dmaven.test.skip=true -Pdev
-     *
-     * @param
-     * @return
-     * @date 2022-05-12 下午2:56
-     */
-    private MavenBuild setStandaloneInvocationRequest(String pomPath, String env) {
-        MavenBuild mavenBuild = new MavenBuild();
-        InvocationRequest request = mavenBuild.invocationRequest;
-        request.setPomFile(new File(pomPath));
-        // mvn clean package -Dmaven.test.skip=true
-        request.setGoals(Arrays.asList(standaloneArgs));
-        // -Penv
-        request.setProfiles(Collections.singletonList(env));
-        request.setOutputHandler(s -> mavenBuild.stringBuilder.append(s).append(System.lineSeparator()));
-        return mavenBuild;
-    }
-
-    /**
-     * mvn clean package -Dmaven.test.skip=true -am -Pdev -pl manager
-     *
-     * @param
-     * @return
-     * @date 2020-05-12 上午10:36
-     */
-    private MavenBuild setMultiModuleInvocationRequest(String pomPath, String env, String appDirname) {
-        MavenBuild mavenBuild = new MavenBuild();
-        InvocationRequest request = mavenBuild.invocationRequest;
-        request.setPomFile(new File(pomPath));
-        // mvn clean package -Dmaven.test.skip=true
-        request.setGoals(Arrays.asList(standaloneArgs));
-        // -Penv
-        request.setProfiles(Collections.singletonList(env));
-        // -am
-        request.setAlsoMake(true);
-        // -pl app
-        request.setProjects(Collections.singletonList(appDirname));
-        request.setOutputHandler(s -> mavenBuild.stringBuilder.append(s).append(System.lineSeparator()));
-        return mavenBuild;
-    }
-
-    static class MavenBuild {
-        InvocationRequest invocationRequest;
-        StringBuilder stringBuilder;
-
-        MavenBuild() {
-            this.invocationRequest = new DefaultInvocationRequest();
-            this.stringBuilder = new StringBuilder();
-        }
-    }
-}

+ 0 - 33
common/src/main/java/cn/reghao/devops/common/build/tool/compiler/ShellCompiler.java

@@ -1,33 +0,0 @@
-package cn.reghao.devops.common.build.tool.compiler;
-
-import cn.reghao.devops.common.build.model.CompilerDto;
-import cn.reghao.jutil.jdk.serializer.JsonConverter;
-import cn.reghao.jutil.jdk.shell.ShellExecutor;
-import cn.reghao.jutil.jdk.shell.ShellResult;
-
-/**
- * 编译代码
- *
- * @author reghao
- * @date 2019-10-12 23:55:01
- */
-public class ShellCompiler implements CodeCompiler {
-    private final ShellExecutor shell;
-    private final String[] compileCmds;
-
-    public ShellCompiler(CompilerDto compilerDto) {
-        this.compileCmds = compilerDto.getCompileScript().split(" && ");
-        this.shell = new ShellExecutor();
-    }
-
-    @Override
-    public void compile(String appId, String appCompileHome) throws Exception {
-        ShellResult result;
-        for (String compileScript : compileCmds) {
-            result = shell.exec(appCompileHome, compileScript.split("\\s+"));
-            if (!result.isSuccess()) {
-                throw new Exception(JsonConverter.objectToJson(result.getResult()));
-            }
-        }
-    }
-}

+ 0 - 24
common/src/main/java/cn/reghao/devops/common/build/tool/packer/CodePacker.java

@@ -1,24 +0,0 @@
-package cn.reghao.devops.common.build.tool.packer;
-
-/**
- * 打包应用
- * TODO 考虑一下如何打 apt,yum 之类的包以及如何运行这些包
- *
- * @author reghao
- * @date 2020-01-21 16:18:37
- */
-public interface CodePacker {
-    /**
-     * 打包方式确定运行方式
-     *
-     * @param appId 应用 ID
-     * @param commitId 应用版本
-     * @param appRootPath 应用根目录
-     * @param dockerfile Docker 打包镜像需要的配置
-     * @return 返回可执行应用的路径
-     *
-     * @date 2020-01-21 下午4:19
-     */
-    String pack(String appId, String commitId, String appRootPath, String dockerfile) throws Exception;
-    String push(String localPath) throws Exception;
-}

+ 0 - 37
common/src/main/java/cn/reghao/devops/common/build/tool/packer/DockerPack.java

@@ -1,37 +0,0 @@
-package cn.reghao.devops.common.build.tool.packer;
-
-import cn.reghao.devops.common.docker.Docker;
-import lombok.extern.slf4j.Slf4j;
-
-import java.io.File;
-
-/**
- * 打包为 docker 应用
- *
- * @author reghao
- * @date 2019-10-14 22:02:04
- */
-@Slf4j
-public class DockerPack implements CodePacker {
-    private final String targetPath;
-    private final Docker docker;
-
-    public DockerPack(String targetPath, Docker docker) {
-        this.targetPath = targetPath;
-        this.docker = docker;
-    }
-
-    @Override
-    public String pack(String appId, String commitId, String appRootPath, String dockerfile) throws Exception {
-        String repo = targetPath + File.separator + appId;
-        String image = repo + ":" + commitId;
-        docker.build(image, appRootPath, dockerfile);
-        return image;
-    }
-
-    @Override
-    public String push(String localPath) throws Exception {
-        docker.push(localPath);
-        return localPath;
-    }
-}

+ 0 - 180
common/src/main/java/cn/reghao/devops/common/build/tool/packer/ZipFiles.java

@@ -1,180 +0,0 @@
-package cn.reghao.devops.common.build.tool.packer;
-
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.io.FileUtils;
-
-import java.io.*;
-import java.util.Arrays;
-import java.util.Objects;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-import java.util.zip.ZipOutputStream;
-
-/**
- * TODO: 提升压缩和解压性能
- *
- * @author reghao
- * @date 2019-08-27 17:47:36
- */
-@Slf4j
-public class ZipFiles {
-    /**
-     * 将目录压缩为一个文件
-     *
-     * @param
-     * @date 2019-08-28 上午12:42
-     */
-    public static void zip(String src, String dst) throws IOException {
-        // TODO: 判断 dst 是否为 src 的子目录
-        File srcFile = new File(src);
-        if (!srcFile.exists()) {
-            log.info("{} 不存在", src);
-            return;
-        }
-
-        String filePath;
-        if (dst.endsWith(".zip")) {
-            filePath = dst;
-        } else {
-            filePath = dst + ".zip";
-        }
-
-        File dstFile = new File(filePath);
-        if (dstFile.exists() && !dstFile.delete()) {
-            log.info("删除 {} 失败", dst);
-            return;
-        }
-
-        ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(dstFile));
-        zipFile(null, srcFile, zipOut);
-        zipOut.close();
-    }
-
-    /**
-     * 将目录中的文件压缩为一个文件
-     *
-     * @param
-     * @return
-     * @date 2020-03-11 下午11:12
-     */
-    public static void zip(File src, String dst) throws IOException {
-        // TODO: 判断 dst 是否为 src 的子目录
-        String filePath;
-        if (dst.endsWith(".zip")) {
-            filePath = dst;
-        } else {
-            filePath = dst + ".zip";
-        }
-        File dstFile = new File(filePath);
-        if (dstFile.exists() && !dstFile.delete()) {
-            log.info("删除 {} 失败", dst);
-            return;
-        }
-
-        ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(dstFile));
-        for (File file : Objects.requireNonNull(src.listFiles())) {
-            zipFile(null, file, zipOut);
-        }
-
-        zipOut.close();
-    }
-
-    /**
-     * 压缩
-     *
-     * @param
-     * @return
-     * @date 2019-08-28 上午12:42
-     */
-    private static void zipFile(String srcRoot, File file, ZipOutputStream zipOut) {
-        if (file == null || !file.exists()) {
-            return;
-        }
-
-        InputStream in;
-        try {
-            if (file.isFile()) {
-                if (srcRoot == null) {
-                    zipOut.putNextEntry(new ZipEntry(file.getName()));
-                } else {
-                    zipOut.putNextEntry(new ZipEntry(srcRoot + File.separator + file.getName()));
-                }
-
-                in = new FileInputStream(file);
-                int tmp;
-                while ((tmp = in.read()) != -1) {
-                    zipOut.write(tmp);
-                }
-                in.close();
-            } else if (file.isDirectory() && Objects.requireNonNull(file.listFiles()).length == 0) {
-                if (srcRoot == null) {
-                    zipOut.putNextEntry(new ZipEntry(file.getName() + File.separator));
-                } else {
-                    zipOut.putNextEntry(new ZipEntry(srcRoot + File.separator + file.getName() + File.separator));
-                }
-            } else {
-                File[] files = file.listFiles();
-                assert files != null;
-                Arrays.asList(files).forEach(file1 -> {
-                    if (srcRoot == null) {
-                        zipFile(file.getName(), file1, zipOut);
-                    } else {
-                        zipFile(srcRoot + File.separator + file.getName(), file1, zipOut);
-                    }
-                });
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-    }
-
-    /**
-     * 解压到指定目录
-     *
-     * @param
-     * @return
-     * @date 2019-08-28 上午12:41
-     */
-    public static void unzip(String src, String dest) throws IOException {
-        File file = new File(src);
-        if (!file.exists()) {
-            log.info("{} 不存在", src);
-            return;
-        }
-
-        File destFile = new File(dest);
-        if (!destFile.exists()) {
-            FileUtils.forceMkdir(destFile);
-        }
-
-        java.util.zip.ZipFile zipFile = new java.util.zip.ZipFile(file);
-        ZipInputStream zipIn = new ZipInputStream(new FileInputStream(file));
-        ZipEntry entry;
-        while ((entry = zipIn.getNextEntry()) != null) {
-            String filePath = dest + File.separator + entry.getName();
-            String dirPath = dirPath(filePath);
-            File dir = new File(dirPath);
-            if (!dir.exists()) {
-                FileUtils.forceMkdir(dir);
-            }
-
-            File unzipFile = new File(filePath);
-            if (!unzipFile.isDirectory()) {
-                InputStream in = zipFile.getInputStream(entry);
-                OutputStream out = new FileOutputStream(unzipFile);
-
-                int tmp;
-                while ((tmp = in.read()) != -1) {
-                    out.write(tmp);
-                }
-                in.close();
-                out.close();
-            }
-        }
-    }
-
-    static String dirPath(String path) {
-        int index = path.lastIndexOf(File.separator);
-        return path.substring(0, index);
-    }
-}

+ 0 - 51
common/src/main/java/cn/reghao/devops/common/build/tool/packer/ZipPack.java

@@ -1,51 +0,0 @@
-package cn.reghao.devops.common.build.tool.packer;
-
-import cn.reghao.devops.common.build.model.LocalBuildDir;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.io.FileUtils;
-
-import java.io.File;
-import java.io.IOException;
-
-/**
- * @author reghao
- * @date 2020-03-11 13:37:36
- */
-@Slf4j
-public class ZipPack implements CodePacker {
-    // TODO 必须指定构建存在的目录
-    private final String binDirname;
-
-    public ZipPack(String binDirname) {
-        this.binDirname = binDirname;
-    }
-
-    private void createTargetDir(String targetPath) throws IOException {
-        File dir = new File(targetPath);
-        if (!dir.exists()) {
-            FileUtils.forceMkdir(new File(targetPath));
-        }
-    }
-
-    @Override
-    public String pack(String appId, String commitId, String appRootPath, String dockerfile) throws Exception {
-        if (binDirname == null) {
-            throw new Exception("存放编译产物的目录 binDirname 不能是 null");
-        }
-
-        String sourceDirPath = appRootPath + File.separator + binDirname;
-        String targetDirPath = LocalBuildDir.packDir + File.separator + appId;
-        createTargetDir(targetDirPath);
-
-        String filename = String.format("%s_%s.zip", appId, commitId);
-        String dest = targetDirPath + File.separator + filename;
-        String url = String.format("/api/app/bd/dl/%s", filename);
-        ZipFiles.zip(new File(sourceDirPath), dest);
-        return url;
-    }
-
-    @Override
-    public String push(String localPath) {
-        return localPath;
-    }
-}

+ 0 - 18
common/src/main/java/cn/reghao/devops/common/build/tool/repo/ChangedFile.java

@@ -1,18 +0,0 @@
-package cn.reghao.devops.common.build.tool.repo;
-
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2020-05-14 10:49:49
- */
-@Data
-public class ChangedFile implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String changeType;
-    private String oldFilePath;
-    private String newFilePath;
-}

+ 0 - 38
common/src/main/java/cn/reghao/devops/common/build/tool/repo/CodeUpdater.java

@@ -1,38 +0,0 @@
-package cn.reghao.devops.common.build.tool.repo;
-
-/**
- * 更新代码
- *
- * @author reghao
- * @date 2019-10-12 22:24:28
- */
-public interface CodeUpdater {
-    /**
-     * 更新代码
-     *
-     * @param remote 远程代码仓库路径
-     * @param branch 分支(仅用于 GIT)
-     * @param local 本地代码仓库目录
-     * @return 当前代码仓库的版本
-     * @date 2019-10-12 下午11:08
-     */
-    CommitInfo pull(String remote, String branch, String local) throws Exception;
-
-    /**
-     * // TODO 拉取指定版本的代码
-     *
-     * @param commitId 指定的版本
-     * @return
-     * @date 2020-09-08 下午6:18
-     */
-    CommitInfo update(String remote, String branch, String local, String commitId) throws Exception;
-
-    /**
-     * 本地代码仓库最近一次提交的信息
-     * TODO 并不能获取到远程仓库的 URL,需要在调用后手动设置
-     *
-     * @param local 本地代码仓库路径
-     * @date 2019-10-30 下午5:23
-     */
-    CommitInfo latestCommitInfo(String local, String branch) throws Exception;
-}

+ 0 - 33
common/src/main/java/cn/reghao/devops/common/build/tool/repo/CommitInfo.java

@@ -1,33 +0,0 @@
-package cn.reghao.devops.common.build.tool.repo;
-
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * 代码提交信息
- *
- * @author reghao
- * @date 2020-05-13 22:50:38
- */
-@NoArgsConstructor
-@Getter
-@Setter
-public class CommitInfo implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String remote;
-    private String branch;
-    private String local;
-    // 代码是否更新
-    private Boolean updated;
-    private String commitId;
-    private String commitAuthor;
-    private String commitMsg;
-    // 毫秒级时间戳
-    private Long msCommitTime;
-    private List<ChangedFile> changedFiles;
-}

+ 0 - 63
common/src/main/java/cn/reghao/devops/common/build/tool/repo/CustomCredentialProvider.java

@@ -1,63 +0,0 @@
-package cn.reghao.devops.common.build.tool.repo;
-
-import org.eclipse.jgit.errors.UnsupportedCredentialItem;
-import org.eclipse.jgit.transport.CredentialItem;
-import org.eclipse.jgit.transport.CredentialsProvider;
-import org.eclipse.jgit.transport.URIish;
-
-/**
- * @author reghao
- * @date 2023-03-13 09:07:46
- */
-public class CustomCredentialProvider extends CredentialsProvider {
-    private final String passphrase;
-
-    public CustomCredentialProvider(String passphrase) {
-        // 私钥的访问密码(没有密码则传入 null)
-        this.passphrase = passphrase;
-    }
-
-    @Override
-    public boolean isInteractive() {
-        // Set this according to your requirement
-        return false;
-    }
-
-    @Override
-    public boolean supports(CredentialItem... items) {
-        // Set this according to your requirement
-        return true;
-    }
-
-    @Override
-    public boolean get(URIish uri, CredentialItem... items)
-            throws UnsupportedCredentialItem {
-
-        for (CredentialItem item : items) {
-            if (item instanceof CredentialItem.InformationalMessage) {
-                continue;
-            }
-            if (item instanceof CredentialItem.YesNoType) {
-                // Set this according to your requirement
-                ((CredentialItem.YesNoType) item).setValue(true);
-            } else if (item instanceof CredentialItem.CharArrayType) {
-                if (passphrase != null) {
-                    ((CredentialItem.CharArrayType) item)
-                            .setValue(passphrase.toCharArray());
-                } else {
-                    return false;
-                }
-            } else if (item instanceof CredentialItem.StringType) {
-                if (passphrase != null) {
-                    ((CredentialItem.StringType) item)
-                            .setValue(passphrase);
-                } else {
-                    return false;
-                }
-            } else {
-                return false;
-            }
-        }
-        return true;
-    }
-}

+ 0 - 53
common/src/main/java/cn/reghao/devops/common/build/tool/repo/CustomSshSessionFactory.java

@@ -1,53 +0,0 @@
-package cn.reghao.devops.common.build.tool.repo;
-
-import org.eclipse.jgit.transport.sshd.SshdSessionFactory;
-import org.eclipse.jgit.util.FS;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * https://stackoverflow.com/questions/67767455/setting-ssh-keys-to-use-with-jgit-with-ssh-from-apache-sshd
- *
- * @author reghao
- * @date 2023-03-13 09:06:54
- */
-public class CustomSshSessionFactory extends SshdSessionFactory {
-    public static final Path SSH_DIR = Path.of(FS.DETECTED.userHome() + "/.ssh");
-
-    private final Path privateKeyFile;
-    private final byte[] privateKey;
-
-    public CustomSshSessionFactory(String privateKey) {
-        //this.privateKeyFile = Path.of("rsa_prikey", SSH_DIR.toString());
-        this.privateKeyFile = Path.of("/tmp/rsa_prikey");
-        this.privateKey = privateKey.getBytes(StandardCharsets.UTF_8);
-    }
-
-    @Override
-    public File getSshDirectory() {
-        try {
-            return Files.createDirectories(SSH_DIR).toFile();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    // Return paths to private key files
-    @Override
-    protected List<Path> getDefaultIdentities(File sshDir) {
-        try {
-            Files.write(privateKeyFile, privateKey);
-            return Collections.singletonList(privateKeyFile);
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return Collections.emptyList();
-    }
-}

+ 0 - 295
common/src/main/java/cn/reghao/devops/common/build/tool/repo/GitImpl.java

@@ -1,295 +0,0 @@
-package cn.reghao.devops.common.build.tool.repo;
-
-import cn.reghao.devops.common.build.model.RepoAuth;
-import cn.reghao.devops.common.build.model.constant.RepoAuthType;
-import org.eclipse.jgit.api.*;
-import org.eclipse.jgit.diff.DiffEntry;
-import org.eclipse.jgit.internal.storage.file.FileRepository;
-import org.eclipse.jgit.lib.ObjectId;
-import org.eclipse.jgit.lib.ObjectReader;
-import org.eclipse.jgit.lib.Ref;
-import org.eclipse.jgit.lib.Repository;
-import org.eclipse.jgit.revwalk.RevCommit;
-import org.eclipse.jgit.revwalk.RevWalk;
-import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
-import org.eclipse.jgit.transport.*;
-import org.eclipse.jgit.treewalk.CanonicalTreeParser;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Git 实现
- *
- * @author reghao
- * @date 2019-10-12 22:22:00
- */
-public class GitImpl implements CodeUpdater {
-    private UsernamePasswordCredentialsProvider credentials;
-    private SshSessionFactory sshSessionFactory;
-
-    public GitImpl(RepoAuth repoAuth) {
-        switch (RepoAuthType.valueOf(repoAuth.getAuthType())) {
-            case http:
-                httpAuth(repoAuth.getUsername(), repoAuth.getPassword());
-                break;
-            case ssh:
-                sshAuth(repoAuth.getRsaPrikey());
-                break;
-            default:
-        }
-    }
-
-    private void httpAuth(String username, String password) {
-        this.credentials = new UsernamePasswordCredentialsProvider(username, password);
-    }
-
-    private void sshAuth(String privateKey) {
-        this.sshSessionFactory = new CustomSshSessionFactory(privateKey);
-    }
-
-    /**
-     * 不存在则 clone,存在则 pull
-     *
-     * @param
-     * @return
-     * @date 2020-05-13 下午9:22
-     */
-    @Override
-    public CommitInfo pull(String remote, String branch, String local) throws Exception {
-        String localRepoDir = local + dirname(remote);
-        File file = new File(localRepoDir);
-        if (!file.exists() && !file.mkdirs()) {
-            throw new Exception("创建 " + localRepoDir + " 目录失败");
-        }
-
-        File localRepo = new File(localRepoDir + "/.git");
-        CommitInfo commitInfo;
-        if (!localRepo.exists()) {
-            commitInfo = clone(remote, branch, localRepoDir);
-        } else {
-            try (Repository repo = new FileRepository(localRepo.getAbsolutePath())) {
-                PullCommand gitPull = new Git(repo)
-                        .pull()
-                        .setTimeout(600)
-                        .setFastForward(MergeCommand.FastForwardMode.FF);
-                if (sshSessionFactory != null) {
-                    gitPull.setTransportConfigCallback(transport -> {
-                        if (transport instanceof SshTransport) {
-                            setSshTransport((SshTransport) transport);
-                        }
-                    });
-                    gitPull.call();
-                } else if (credentials != null) {
-                    gitPull.setCredentialsProvider(credentials);
-                    gitPull.call();
-                } else {
-                    gitPull.call();
-                }
-
-                commitInfo = commitInfo(repo, branch);
-                commitInfo.setChangedFiles(changedFileList(repo, branch));
-            }
-        }
-        commitInfo.setRemote(remote);
-        commitInfo.setBranch(branch);
-        return commitInfo;
-    }
-
-    private CommitInfo clone(String remote, String branch, String local) throws Exception {
-        CloneCommand gitClone;
-        if (sshSessionFactory != null) {
-            gitClone = Git.cloneRepository()
-                    .setTimeout(600)
-                    .setURI(remote)
-                    .setBranch(branch)
-                    .setDirectory(new File(local))
-                    .setTransportConfigCallback(transport -> {
-                        if (transport instanceof SshTransport) {
-                            setSshTransport((SshTransport) transport);
-                        }
-                    });
-        } else if (credentials != null) {
-            gitClone = Git.cloneRepository()
-                    .setURI(remote)
-                    .setBranch(branch)
-                    .setDirectory(new File(local))
-                    .setCredentialsProvider(credentials);
-        } else {
-            gitClone = Git.cloneRepository()
-                    .setURI(remote)
-                    .setBranch(branch)
-                    .setDirectory(new File(local));
-        }
-
-        try (Git git = gitClone.setDepth(1).call()) {
-            Repository repo = git.getRepository();
-            CommitInfo commitInfo = commitInfo(repo, branch);
-            commitInfo.setChangedFiles(changedFileList(repo, branch));
-            return commitInfo;
-        }
-    }
-
-    private void setSshTransport(SshTransport sshTransport) {
-        // Set passphrase using a CustomCredentialsProvider
-        sshTransport.setCredentialsProvider(new CustomCredentialProvider(null));
-        sshTransport.setSshSessionFactory(sshSessionFactory);
-    }
-
-    private CommitInfo commitInfo(Repository repo, String branch) throws Exception {
-        Ref head = repo.findRef("refs/heads/" + branch);
-        if (head == null) {
-            String msg = String.format("%s 分支不存在", branch);
-            throw new Exception(msg);
-        }
-
-        ObjectId objectId = head.getObjectId();
-        try (RevWalk walk = new RevWalk(repo)) {
-            // 最近一次提交的信息
-            RevCommit lastCommit = walk.parseCommit(objectId);
-            long commitTime = lastCommit.getCommitTime()*1000L;
-            String commitAuthor = lastCommit.getAuthorIdent().getName();
-            String commitMsg = lastCommit.getFullMessage();
-
-            CommitInfo commitInfo = new CommitInfo();
-            commitInfo.setCommitId(objectId.name().substring(0, 8));
-            commitInfo.setMsCommitTime(commitTime);
-            commitInfo.setCommitAuthor(commitAuthor);
-            if (commitMsg.length() > 1000) {
-                commitInfo.setCommitMsg(commitMsg.substring(0, 1000));
-            } else {
-                commitInfo.setCommitMsg(commitMsg);
-            }
-            return commitInfo;
-        }
-    }
-
-    private List<ChangedFile> changedFileList(Repository repo, String branch) throws Exception {
-        Ref headMaster = repo.findRef("refs/heads/" + branch);
-        ObjectId objectId = headMaster.getObjectId();
-        try (RevWalk walk = new RevWalk(repo)) {
-            // 最近一次提交
-            RevCommit newCommit = walk.parseCommit(objectId);
-            walk.markStart(newCommit);
-            // 遍历两次找到 newCommit 的前一次提交,newCommit 不是第一次提交
-            walk.next();
-            RevCommit oldCommit = walk.next();
-            if (oldCommit == null) {
-                // TODO 仓库中只有一个 commit 时(第一次提交)的处理
-                return Collections.emptyList();
-            }
-
-            ObjectId newHead = newCommit.getTree().getId();
-            ObjectId oldHead = oldCommit.getTree().getId();
-
-            try (ObjectReader reader = repo.newObjectReader()) {
-                CanonicalTreeParser newTreeIter = new CanonicalTreeParser();
-                newTreeIter.reset(reader, newHead);
-                CanonicalTreeParser oldTreeIter = new CanonicalTreeParser();
-                oldTreeIter.reset(reader, oldHead);
-                try (Git git = new Git(repo)) {
-                    List<DiffEntry> diffs= git.diff()
-                            .setNewTree(newTreeIter)
-                            .setOldTree(oldTreeIter)
-                            .call();
-
-                    List<ChangedFile> changedFiles = new ArrayList<>();
-                    for (DiffEntry entry : diffs) {
-                        ChangedFile changedFile = new ChangedFile();
-                        changedFile.setChangeType(entry.getChangeType().name());
-                        changedFile.setOldFilePath(entry.getOldPath());
-                        changedFile.setNewFilePath(entry.getNewPath());
-                        changedFiles.add(changedFile);
-                    }
-
-                    return changedFiles;
-                }
-            }
-        }
-    }
-
-    @Override
-    public CommitInfo update(String remote, String branch, String local, String commitId) throws Exception {
-        // TODO 待实现
-        return null;
-    }
-
-    @Override
-    public CommitInfo latestCommitInfo(String local, String branch) throws Exception {
-        File localRepo = new File(local + "/.git");
-        if (!localRepo.exists()) {
-            return null;
-        }
-
-        try (Repository repo = new FileRepository(localRepo.getAbsolutePath())) {
-            return commitInfo(repo, branch);
-        }
-    }
-
-    private String dirname(String gitUrl) {
-        int lastIndex = gitUrl.lastIndexOf("/");
-        return gitUrl.substring(lastIndex).split(".git")[0];
-    }
-
-    public List<String> remoteBranches(String remote) {
-        List<String> branches = new ArrayList<>();
-        try {
-            Collection<Ref> refList = Git.lsRemoteRepository().setRemote(remote)
-                    .setCredentialsProvider(credentials).call();
-            for (Ref ref : refList) {
-                String refName = ref.getName();
-                if (refName.startsWith("refs/heads/")) {
-                    // 需要进行筛选
-                    String branchName = refName.replace("refs/heads/", "");
-                    branches.add(branchName);
-                }
-            }
-            return branches;
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return branches;
-    }
-
-    /**
-     * 提交代码并 push 到远程仓库
-     *
-     * @param
-     * @return
-     * @date 2022-08-03 下午2:56
-     */
-    public void commitAndPush(String local, String commitMsg) throws Exception {
-        Repository repository = new FileRepositoryBuilder().setGitDir(new File(local + "/.git")).build();
-        Git git = new Git(repository);
-        RemoteListCommand remoteListCommand = git.remoteList();
-        List<RemoteConfig> list = remoteListCommand.call();
-        if (list.isEmpty()) {
-            throw new Exception("RemoteConfig 不存在");
-        }
-
-        RemoteConfig remoteConfig = list.get(0);
-        List<URIish> urIishList = remoteConfig.getURIs();
-        if (urIishList.isEmpty()) {
-            throw new Exception("远程仓库 URL 不存在");
-        }
-
-        URIish urIish = urIishList.get(0);
-        String pushUrl = urIish.toString();
-
-        AddCommand addCommand = git.add();
-        addCommand.addFilepattern(".").call();
-
-        CommitCommand commitCommand = git.commit();
-        commitCommand.setCommitter("reghao", "reghaodev@gmail.com");
-        commitCommand.setAuthor("reghao", "reghaodev@gmail.com");
-        commitCommand.setAll(true);
-
-        // git commit -m "commit message"
-        RevCommit revCommit = commitCommand.setMessage(commitMsg).call();
-        PushCommand pushCommand = git.push();
-        pushCommand.setRemote(pushUrl).setCredentialsProvider(credentials).call();
-    }
-}

+ 0 - 46
common/src/main/java/cn/reghao/devops/common/docker/po/Config.java

@@ -1,46 +0,0 @@
-package cn.reghao.devops.common.docker.po;
-
-import com.google.gson.annotations.SerializedName;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * docker 容器创建时的配置
- *
- * @author reghao
- * @date 2020-01-14 23:11:21
- */
-@Data
-public class Config {
-    @SerializedName("AttachStderr") private boolean attachStderr;
-    @SerializedName("AttachStdin") private boolean attachStdin;
-    @SerializedName("AttachStdout") private boolean attachStdout;
-    @SerializedName("Cmd") private List<String> cmd;
-    @SerializedName("Domainname") private String domainname;
-    @SerializedName("Env") private List<String> env;
-    @SerializedName("Healthcheck") private Healthcheck healthcheck;
-    @SerializedName("Hostname") private String hostname;
-    @SerializedName("Image") private String image;
-    @SerializedName("Labels") private Labels labels;
-    @SerializedName("MacAddress") private String macAddress;
-    @SerializedName("NetworkDisabled") private boolean networkDisabled;
-    @SerializedName("OpenStdin") private boolean openStdin;
-    @SerializedName("StdinOnce") private boolean stdinOnce;
-    @SerializedName("Tty") private boolean tty;
-    @SerializedName("User") private String user;
-    @SerializedName("Volumes") private Volumes volumes;
-    @SerializedName("WorkingDir") private String workingDir;
-    @SerializedName("StopSignal") private String stopSignal;
-    @SerializedName("StopTimeout") private int stopTimeout;
-
-    @SerializedName("Entrypoint") private String entrypoint;
-    @SerializedName("ExposedPorts") private ExposedPorts exposedPorts;
-    @SerializedName("HostConfig") private HostConfig hostConfig;
-    @SerializedName("NetworkingConfig") private NetworkingConfig networkingConfig;
-
-    public Config(String image) {
-        this.image = image;
-        this.hostConfig = new HostConfig();
-    }
-}

+ 0 - 18
common/src/main/java/cn/reghao/devops/common/docker/po/Data.java

@@ -1,18 +0,0 @@
-package cn.reghao.devops.common.docker.po;
-
-import com.google.gson.annotations.SerializedName;
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author reghao
- * @date 2020-05-19 20:50:24
- */
-@Getter
-@Setter
-public class Data {
-    @SerializedName("LowerDir") private String lowerDir;
-    @SerializedName("MergedDir") private String mergedDir;
-    @SerializedName("UpperDir") private String upperDir;
-    @SerializedName("WorkDir") private String workDir;
-}

+ 0 - 11
common/src/main/java/cn/reghao/devops/common/docker/po/ExposedPorts.java

@@ -1,11 +0,0 @@
-package cn.reghao.devops.common.docker.po;
-
-import lombok.Data;
-
-/**
- * @author reghao
- * @date 2021-02-10 01:30:17
- */
-@Data
-public class ExposedPorts {
-}

+ 0 - 16
common/src/main/java/cn/reghao/devops/common/docker/po/GraphDriver.java

@@ -1,16 +0,0 @@
-package cn.reghao.devops.common.docker.po;
-
-import com.google.gson.annotations.SerializedName;
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * @author reghao
- * @date 2020-05-19 20:51:13
- */
-@Getter
-@Setter
-public class GraphDriver {
-    @SerializedName("Data") private Data data;
-    @SerializedName("Name") private String name;
-}

+ 0 - 17
common/src/main/java/cn/reghao/devops/common/docker/po/Health.java

@@ -1,17 +0,0 @@
-package cn.reghao.devops.common.docker.po;
-
-import com.google.gson.annotations.SerializedName;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2021-02-25 10:16:50
- */
-@Data
-public class Health {
-    @SerializedName("Status") private String status;
-    @SerializedName("FailingStreak") private int failingStreak;
-    @SerializedName("Log") private List<Log> log;
-}

+ 0 - 15
common/src/main/java/cn/reghao/devops/common/docker/po/Healthcheck.java

@@ -1,15 +0,0 @@
-package cn.reghao.devops.common.docker.po;
-
-import com.google.gson.annotations.SerializedName;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2021-02-25 10:02:59
- */
-@Data
-public class Healthcheck {
-    @SerializedName("Test") private List<String> test;
-}

+ 0 - 23
common/src/main/java/cn/reghao/devops/common/docker/po/HostConfig.java

@@ -1,23 +0,0 @@
-package cn.reghao.devops.common.docker.po;
-
-import com.google.gson.annotations.SerializedName;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-/**
- * TODO 部分
- *
- * @author reghao
- * @date 2020-01-14 23:16:52
- */
-@AllArgsConstructor
-@Data
-public class HostConfig {
-    @SerializedName("NetworkMode") private String networkMode;
-    @SerializedName("RestartPolicy") private RestartPolicy restartPolicy;
-
-    public HostConfig() {
-        this.networkMode = "host";
-        this.restartPolicy = new RestartPolicy();
-    }
-}

+ 0 - 14
common/src/main/java/cn/reghao/devops/common/docker/po/Labels.java

@@ -1,14 +0,0 @@
-package cn.reghao.devops.common.docker.po;
-
-import lombok.Data;
-
-import java.util.Map;
-
-/**
- * @author reghao
- * @date 2021-02-10 01:28:38
- */
-@Data
-public class Labels {
-    private Map<String, String> map;
-}

+ 0 - 16
common/src/main/java/cn/reghao/devops/common/docker/po/Log.java

@@ -1,16 +0,0 @@
-package cn.reghao.devops.common.docker.po;
-
-import com.google.gson.annotations.SerializedName;
-import lombok.Data;
-
-/**
- * @author reghao
- * @date 2021-02-25 10:19:45
- */
-@Data
-public class Log {
-    @SerializedName("Start") private String start;
-    @SerializedName("End") private String end;
-    @SerializedName("ExitCode") private int exitCode;
-    @SerializedName("Output") private String output;
-}

+ 0 - 11
common/src/main/java/cn/reghao/devops/common/docker/po/NetworkingConfig.java

@@ -1,11 +0,0 @@
-package cn.reghao.devops.common.docker.po;
-
-import lombok.Data;
-
-/**
- * @author reghao
- * @date 2021-02-10 01:33:05
- */
-@Data
-public class NetworkingConfig {
-}

+ 0 - 21
common/src/main/java/cn/reghao/devops/common/docker/po/RestartPolicy.java

@@ -1,21 +0,0 @@
-package cn.reghao.devops.common.docker.po;
-
-import com.google.gson.annotations.SerializedName;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-/**
- * @author reghao
- * @date 2020-05-19 15:00:50
- */
-@AllArgsConstructor
-@Data
-public class RestartPolicy {
-    @SerializedName("Name") private String name;
-    @SerializedName("MaximumRetryCount") private int maximumRetryCount;
-
-    public RestartPolicy() {
-        this.name = "on-failure";
-        this.maximumRetryCount = 3;
-    }
-}

+ 0 - 24
common/src/main/java/cn/reghao/devops/common/docker/po/State.java

@@ -1,24 +0,0 @@
-package cn.reghao.devops.common.docker.po;
-
-import com.google.gson.annotations.SerializedName;
-import lombok.Data;
-
-/**
- * @author reghao
- * @date 2020-05-19 21:04:06
- */
-@Data
-public class State {
-    @SerializedName("Error") private String error;
-    @SerializedName("ExitCode") private int exitCode;
-    @SerializedName("FinishedAt") private String finishedAt;
-    @SerializedName("Health") private Health health;
-    @SerializedName("OOMKilled") private boolean oomKilled;
-    @SerializedName("Dead") private boolean dead;
-    @SerializedName("Paused") private boolean paused;
-    @SerializedName("Pid") private int pid;
-    @SerializedName("Running") private boolean running;
-    @SerializedName("Restarting") private boolean restarting;
-    @SerializedName("StartedAt") private String startedAt;
-    @SerializedName("Status") private String status;
-}

+ 0 - 14
common/src/main/java/cn/reghao/devops/common/docker/po/Volumes.java

@@ -1,14 +0,0 @@
-package cn.reghao.devops.common.docker.po;
-
-import lombok.Data;
-
-import java.util.Map;
-
-/**
- * @author reghao
- * @date 2021-02-10 01:29:10
- */
-@Data
-public class Volumes {
-    private Map<String, Object> map;
-}

+ 0 - 21
common/src/main/java/cn/reghao/devops/common/docker/po/result/Bridge.java

@@ -1,21 +0,0 @@
-package cn.reghao.devops.common.docker.po.result;
-
-import com.google.gson.annotations.SerializedName;
-import lombok.Data;
-
-/**
- * @author reghao
- * @date 2021-02-25 09:37:50
- */
-@Data
-public class Bridge {
-    @SerializedName("NetworkID") private String networkId;
-    @SerializedName("EndpointID") private String endpointId;
-    @SerializedName("Gateway") private String gateway;
-    @SerializedName("IPAddress") private String ipAddress;
-    @SerializedName("IPPrefixLen") private String ipPrefixLen;
-    @SerializedName("IPv6Gateway") private String ipv6Gateway;
-    @SerializedName("GlobalIPv6Address") private String globalIpv6Address;
-    @SerializedName("GlobalIPv6PrefixLen") private String globalIpv6PrefixLen;
-    @SerializedName("MacAddress") private String macAddress;
-}

+ 0 - 33
common/src/main/java/cn/reghao/devops/common/docker/po/result/Container.java

@@ -1,33 +0,0 @@
-package cn.reghao.devops.common.docker.po.result;
-
-import cn.reghao.devops.common.docker.po.HostConfig;
-import cn.reghao.devops.common.docker.po.Labels;
-import com.google.gson.annotations.SerializedName;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * docker ps 返回值
- *
- * @author reghao
- * @date 2019-12-10 18:30:02
- */
-@Data
-public class Container {
-    @SerializedName("Id") private String id;
-    @SerializedName("Names") private List<String> names;
-    @SerializedName("Image") private String image;
-    @SerializedName("ImageID") private String imageId;
-    @SerializedName("Command") private String command;
-    @SerializedName("Created") private long created;
-    @SerializedName("State") private String state;
-    @SerializedName("Status") private String status;
-    @SerializedName("Ports") private List<Port> ports;
-    @SerializedName("Labels") private Labels labels;
-    @SerializedName("SizeRw") private int sizeRw;
-    @SerializedName("SizeRootFs") private int sizeRootFs;
-    @SerializedName("HostConfig") private HostConfig hostConfig;
-    @SerializedName("NetworkSettings") private NetworkSettings networkSettings;
-    @SerializedName("Mounts") private List<Mount> mounts;
-}

+ 0 - 47
common/src/main/java/cn/reghao/devops/common/docker/po/result/ContainerInfo.java

@@ -1,47 +0,0 @@
-package cn.reghao.devops.common.docker.po.result;
-
-import cn.reghao.devops.common.docker.po.GraphDriver;
-import cn.reghao.devops.common.docker.po.HostConfig;
-import cn.reghao.devops.common.docker.po.State;
-import com.google.gson.annotations.SerializedName;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * docker inspect 返回值
- *
- * @author reghao
- * @date 2019-12-10 18:30:02
- */
-@Data
-public class ContainerInfo {
-    @SerializedName("AppArmorProfile") private String appArmorProfile;
-    @SerializedName("Args") private List<String> args;
-    @SerializedName("Config") private Config config;
-    @SerializedName("Created") private String created;
-    @SerializedName("Driver") private String driver;
-    @SerializedName("ExecIDs") private List<String> execIds;
-    @SerializedName("GraphDriver") private GraphDriver graphDriver;
-    @SerializedName("HostConfig") private HostConfig hostConfig;
-    @SerializedName("HostnamePath") private String hostnamePath;
-    @SerializedName("HostsPath") private String hostsPath;
-    @SerializedName("LogPath") private String logPath;
-    @SerializedName("Id") private String id;
-    @SerializedName("Image") private String image;
-    @SerializedName("MountLabel") private String mountLabel;
-    @SerializedName("Name") private String name;
-    @SerializedName("NetworkSettings") private NetworkSettings networkSettings;
-    @SerializedName("Path") private String path;
-    @SerializedName("ProcessLabel") private String processLabel;
-    @SerializedName("ResolvConfPath") private String resolvConfPath;
-    @SerializedName("RestartCount") private int restartCount;
-    @SerializedName("State") private State state;
-    @SerializedName("Mounts") private List<Mount> mounts;
-
-    @Data
-    static public class Config {
-        @SerializedName("Image") private String image;
-        @SerializedName("StopSignal") private String stopSignal;
-    }
-}

+ 0 - 19
common/src/main/java/cn/reghao/devops/common/docker/po/result/Mount.java

@@ -1,19 +0,0 @@
-package cn.reghao.devops.common.docker.po.result;
-
-import com.google.gson.annotations.SerializedName;
-import lombok.Data;
-
-/**
- * @author reghao
- * @date 2021-02-25 09:43:58
- */
-@Data
-public class Mount {
-    @SerializedName("Name") private String name;
-    @SerializedName("Source") private String source;
-    @SerializedName("Destination") private String destination;
-    @SerializedName("Driver") private String driver;
-    @SerializedName("Mode") private String mode;
-    @SerializedName("RW") private boolean rw;
-    @SerializedName("Propagation") private String propagation;
-}

+ 0 - 13
common/src/main/java/cn/reghao/devops/common/docker/po/result/NetworkSettings.java

@@ -1,13 +0,0 @@
-package cn.reghao.devops.common.docker.po.result;
-
-import com.google.gson.annotations.SerializedName;
-import lombok.Data;
-
-/**
- * @author reghao
- * @date 2021-02-25 09:41:50
- */
-@Data
-public class NetworkSettings {
-    @SerializedName("Networks") private Networks networks;
-}

+ 0 - 13
common/src/main/java/cn/reghao/devops/common/docker/po/result/Networks.java

@@ -1,13 +0,0 @@
-package cn.reghao.devops.common.docker.po.result;
-
-import com.google.gson.annotations.SerializedName;
-import lombok.Data;
-
-/**
- * @author reghao
- * @date 2021-02-25 09:41:10
- */
-@Data
-public class Networks {
-    @SerializedName("bridge") private Bridge bridge;
-}

+ 0 - 15
common/src/main/java/cn/reghao/devops/common/docker/po/result/Port.java

@@ -1,15 +0,0 @@
-package cn.reghao.devops.common.docker.po.result;
-
-import com.google.gson.annotations.SerializedName;
-import lombok.Data;
-
-/**
- * @author reghao
- * @date 2021-02-25 09:33:19
- */
-@Data
-public class Port {
-    @SerializedName("PrivatePort") private int privatePort;
-    @SerializedName("PublicPort") private int publicPort;
-    @SerializedName("Type") private String type;
-}

+ 0 - 14
common/src/main/java/cn/reghao/devops/common/msg/MsgQueue.java

@@ -1,14 +0,0 @@
-package cn.reghao.devops.common.msg;
-
-import cn.reghao.devops.common.msg.constant.AppId;
-
-/**
- * @author reghao
- * @date 2021-09-14 17:10:31
- */
-@Deprecated
-public class MsgQueue {
-    public static String managerTopic() {
-        return String.format("devops.%s", AppId.manager.name());
-    }
-}

+ 0 - 11
common/src/main/java/cn/reghao/devops/common/msg/constant/Protocol.java

@@ -1,11 +0,0 @@
-package cn.reghao.devops.common.msg.constant;
-
-/**
- * agent 和 manager 通信使用的协议
- *
- * @author reghao
- * @date 2023-03-01 13:47:55
- */
-public enum Protocol {
-    local, ws, amqp
-}

+ 0 - 110
common/src/main/java/cn/reghao/devops/common/util/jvm/JVM.java

@@ -1,110 +0,0 @@
-package cn.reghao.devops.common.util.jvm;
-
-import cn.reghao.devops.common.util.jvm.po.*;
-import cn.reghao.jutil.jdk.converter.DateTimeConverter;
-
-import java.lang.management.*;
-import java.util.*;
-
-/**
- * JVM 信息和状态
- *
- * @author reghao
- * @date 2020-09-10 18:31:16
- */
-public class JVM {
-    private final RuntimeMXBean rtBean;
-    private final ClassLoadingMXBean classLoadingBean;
-    private final ThreadMXBean threadBean;
-    private final MemoryMXBean memoryBean;
-    private final List<MemoryPoolMXBean> memoryPoolBeans;
-    private final List<BufferPoolMXBean> bufferPoolBeans;
-    private final List<GarbageCollectorMXBean> gcBeans;
-
-    public JVM() {
-        this.rtBean = ManagementFactory.getRuntimeMXBean();
-        this.classLoadingBean = ManagementFactory.getClassLoadingMXBean();
-        this.threadBean = ManagementFactory.getThreadMXBean();
-        this.memoryBean = ManagementFactory.getMemoryMXBean();
-        this.memoryPoolBeans = ManagementFactory.getMemoryPoolMXBeans();
-        this.bufferPoolBeans = ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class);
-        this.gcBeans = ManagementFactory.getGarbageCollectorMXBeans();
-    }
-
-    public JvmInfo info() {
-        JvmInfo jvmInfo = new JvmInfo();
-        jvmInfo.setOsName(System.getProperty("os.name"));
-        jvmInfo.setOsArch(System.getProperty("os.arch"));
-        jvmInfo.setOsVersion(System.getProperty("os.version"));
-
-        jvmInfo.setJavaRuntimeName(System.getProperty("java.runtime.name"));
-        jvmInfo.setJavaRuntimeVersion(System.getProperty("java.runtime.version"));
-        jvmInfo.setJavaClassVersion(System.getProperty("java.class.version"));
-
-        jvmInfo.setJvmName(System.getProperty("java.vm.name"));
-        jvmInfo.setJvmVersion(System.getProperty("java.vm.version"));
-        jvmInfo.setJvmVendor(System.getProperty("java.vm.vendor"));
-
-        // TODO pid 不一定准确
-        jvmInfo.setJvmPid(Integer.parseInt(rtBean.getName().split("@")[0]));
-        jvmInfo.setJvmStartTime(DateTimeConverter.msTimestampFormat(rtBean.getStartTime()));
-
-        return jvmInfo;
-    }
-
-    public JvmStat stat() {
-        JvmStat jvmStat = new JvmStat();
-        jvmStat.setJvmClassesLoaded(classLoadingBean.getLoadedClassCount());
-        jvmStat.setJvmClassesUnloaded(classLoadingBean.getUnloadedClassCount());
-        jvmStat.setJvmClassesTotal(classLoadingBean.getTotalLoadedClassCount());
-
-        MemoryStat heap = new MemoryStat(memoryBean.getHeapMemoryUsage());
-        jvmStat.setJvmMemoryHeapInit(heap.getInit());
-        jvmStat.setJvmMemoryHeapMax(heap.getMax());
-        jvmStat.setJvmMemoryHeapUsed(heap.getUsed());
-        jvmStat.setJvmMemoryHeapCommitted(heap.getCommitted());
-
-        MemoryStat nonheap = new MemoryStat(memoryBean.getNonHeapMemoryUsage());
-        jvmStat.setJvmMemoryNonheapInit(nonheap.getInit());
-        jvmStat.setJvmMemoryNonheapMax(nonheap.getMax());
-        jvmStat.setJvmMemoryNonheapUsed(nonheap.getUsed());
-        jvmStat.setJvmMemoryNonheapCommitted(nonheap.getCommitted());
-
-        jvmStat.setJvmBufferPools(bufferPoolStat());
-        jvmStat.setJvmMemoryPools(memoryPoolStat());
-        jvmStat.setJvmGarbageCollectors(gcStat());
-
-        jvmStat.setJvmThreadsLive(threadBean.getThreadCount());
-        jvmStat.setJvmThreadsDaemon(threadBean.getDaemonThreadCount());
-        jvmStat.setJvmThreadsPeak(threadBean.getPeakThreadCount());
-        jvmStat.setJvmThreads(threadStat());
-        return jvmStat;
-    }
-
-    private List<BufferPoolStat> bufferPoolStat() {
-        List<BufferPoolStat> list = new ArrayList<>();
-        bufferPoolBeans.forEach(bufferPoolBean -> list.add(new BufferPoolStat(bufferPoolBean)));
-        return list;
-    }
-
-    private Map<String, MemoryPoolStat> memoryPoolStat() {
-        Map<String, MemoryPoolStat> map = new HashMap<>();
-        memoryPoolBeans.forEach(
-                // TODO name 是否唯一?
-                memoryPoolBean -> map.put(memoryPoolBean.getName(), new MemoryPoolStat(memoryPoolBean)));
-        return map;
-    }
-
-    private List<GarbageCollectorStat> gcStat() {
-        List<GarbageCollectorStat> list = new ArrayList<>();
-        gcBeans.forEach(gcBean -> list.add(new GarbageCollectorStat(gcBean)));
-        return list;
-    }
-
-    private List<ThreadStat> threadStat() {
-        List<ThreadStat> list = new ArrayList<>();
-        Arrays.stream(threadBean.getThreadInfo(threadBean.getAllThreadIds()))
-                .forEach(threadInfo -> list.add(new ThreadStat(threadInfo)));
-        return list;
-    }
-}

+ 0 - 27
common/src/main/java/cn/reghao/devops/common/util/jvm/po/BufferPoolStat.java

@@ -1,27 +0,0 @@
-package cn.reghao.devops.common.util.jvm.po;
-
-import cn.reghao.jutil.jdk.converter.ByteConverter;
-import cn.reghao.jutil.jdk.converter.ByteType;
-import lombok.Data;
-
-import java.lang.management.BufferPoolMXBean;
-
-/**
- * @author reghao
- * @date 2020-10-21 15:49:56
- */
-@Data
-public class BufferPoolStat {
-    private String poolName;
-    private long bufferCount;
-    private String totalMemory;
-    private String usedMemory;
-
-    public BufferPoolStat(BufferPoolMXBean bufferPoolBean) {
-        ByteConverter converter = new ByteConverter();
-        this.poolName = bufferPoolBean.getName();
-        this.bufferCount = bufferPoolBean.getCount();
-        this.totalMemory = converter.convert(ByteType.Bytes, bufferPoolBean.getTotalCapacity());
-        this.usedMemory = converter.convert(ByteType.Bytes, bufferPoolBean.getMemoryUsed());
-    }
-}

+ 0 - 28
common/src/main/java/cn/reghao/devops/common/util/jvm/po/GarbageCollectorStat.java

@@ -1,28 +0,0 @@
-package cn.reghao.devops.common.util.jvm.po;
-
-import lombok.Data;
-
-import java.lang.management.GarbageCollectorMXBean;
-import java.util.Arrays;
-
-/**
- * @author reghao
- * @date 2020-10-21 15:49:56
- */
-@Data
-public class GarbageCollectorStat {
-    private String gcName;
-    // GC 管理的内存池
-    private String memoryPools;
-    // 自 JVM 启动后总共发生的 GC 次数
-    private long gcCount;
-    // 自 JVM 启动后 GC 总共耗费的时间
-    private long gcTime;
-
-    public GarbageCollectorStat(GarbageCollectorMXBean gcBean) {
-        this.gcName = gcBean.getName();
-        this.memoryPools = Arrays.toString(gcBean.getMemoryPoolNames()).replace("[", "").replace("]", "");
-        this.gcCount = gcBean.getCollectionCount();
-        this.gcTime = gcBean.getCollectionCount();
-    }
-}

+ 0 - 24
common/src/main/java/cn/reghao/devops/common/util/jvm/po/JvmInfo.java

@@ -1,24 +0,0 @@
-package cn.reghao.devops.common.util.jvm.po;
-
-import lombok.Data;
-
-/**
- * @author reghao
- * @date 2020-10-21 10:43:37
- */
-@Data
-public class JvmInfo {
-    private String osName;
-    private String osArch;
-    private String osVersion;
-
-    private String javaRuntimeName;
-    private String javaRuntimeVersion;
-    private String javaClassVersion;
-
-    private String jvmName;
-    private String jvmVersion;
-    private String jvmVendor;
-    private int jvmPid;
-    private String jvmStartTime;
-}

+ 0 - 39
common/src/main/java/cn/reghao/devops/common/util/jvm/po/JvmStat.java

@@ -1,39 +0,0 @@
-package cn.reghao.devops.common.util.jvm.po;
-
-import lombok.Data;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author reghao
- * @date 2020-10-22 15:06:29
- */
-@Data
-public class JvmStat {
-    /* 类加载情况 */
-    private long jvmClassesLoaded;
-    private long jvmClassesUnloaded;
-    private long jvmClassesTotal;
-
-    /* 堆区和非堆区总体内存使用情况 */
-    private String jvmMemoryHeapInit;
-    private String jvmMemoryHeapMax;
-    private String jvmMemoryHeapUsed;
-    private String jvmMemoryHeapCommitted;
-
-    private String jvmMemoryNonheapInit;
-    private String jvmMemoryNonheapMax;
-    private String jvmMemoryNonheapUsed;
-    private String jvmMemoryNonheapCommitted;
-
-    private List<BufferPoolStat> jvmBufferPools;
-    private Map<String, MemoryPoolStat> jvmMemoryPools;
-    private List<GarbageCollectorStat> jvmGarbageCollectors;
-
-    /* 线程使用情况 */
-    private int jvmThreadsLive;
-    private int jvmThreadsDaemon;
-    private int jvmThreadsPeak;
-    private List<ThreadStat> jvmThreads;
-}

+ 0 - 32
common/src/main/java/cn/reghao/devops/common/util/jvm/po/MemoryPoolStat.java

@@ -1,32 +0,0 @@
-package cn.reghao.devops.common.util.jvm.po;
-
-import lombok.Data;
-
-import java.lang.management.MemoryPoolMXBean;
-import java.lang.management.MemoryUsage;
-
-/**
- * @author reghao
- * @date 2020-10-21 15:49:56
- */
-@Data
-public class MemoryPoolStat {
-    private String poolName;
-    private String memoryType;
-    private MemoryStat poolUsage;
-    // 内存池峰值时的使用情况
-    private MemoryStat poolPeakUsage;
-    // 最近一次 GC 后的内存池的使用情况
-    private MemoryStat afterGcUsage;
-
-    public MemoryPoolStat(MemoryPoolMXBean memoryPoolBean) {
-        this.poolName = memoryPoolBean.getName();
-        this.memoryType = memoryPoolBean.getType().name();
-        this.poolUsage = new MemoryStat(memoryPoolBean.getUsage());
-        this.poolPeakUsage = new MemoryStat(memoryPoolBean.getPeakUsage());
-        MemoryUsage collectionMemoryUsage = memoryPoolBean.getCollectionUsage();
-        if (collectionMemoryUsage != null) {
-            this.afterGcUsage = new MemoryStat(collectionMemoryUsage);
-        }
-    }
-}

+ 0 - 27
common/src/main/java/cn/reghao/devops/common/util/jvm/po/MemoryStat.java

@@ -1,27 +0,0 @@
-package cn.reghao.devops.common.util.jvm.po;
-
-import cn.reghao.jutil.jdk.converter.ByteConverter;
-import cn.reghao.jutil.jdk.converter.ByteType;
-import lombok.Data;
-
-import java.lang.management.MemoryUsage;
-
-/**
- * @author reghao
- * @date 2020-10-21 15:49:56
- */
-@Data
-public class MemoryStat {
-    private String init;
-    private String max;
-    private String used;
-    private String committed;
-
-    public MemoryStat(MemoryUsage memoryUsage) {
-        ByteConverter convert = new ByteConverter();
-        this.init = convert.convertStr(ByteType.Bytes, ByteType.MiB, memoryUsage.getInit());
-        this.max = convert.convertStr(ByteType.Bytes, ByteType.MiB, memoryUsage.getMax());
-        this.used = convert.convertStr(ByteType.Bytes, ByteType.MiB, memoryUsage.getUsed());
-        this.committed = convert.convertStr(ByteType.Bytes, ByteType.MiB, memoryUsage.getCommitted());
-    }
-}

+ 0 - 36
common/src/main/java/cn/reghao/devops/common/util/jvm/po/ThreadStat.java

@@ -1,36 +0,0 @@
-package cn.reghao.devops.common.util.jvm.po;
-
-import lombok.Data;
-
-import java.lang.management.ThreadInfo;
-
-/**
- * @author reghao
- * @date 2020-10-21 17:31:47
- */
-@Data
-public class ThreadStat {
-    private String threadName;
-    private String threadState;
-    private long blockedTime;
-    private long blockedCount;
-    private long waitedTime;
-    private long waitedCount;
-    private String lockName;
-    private String lockOwnerName;
-    private int lockedMonitorCount;
-    private int lockedSynchronizerCount;
-
-    public ThreadStat(ThreadInfo threadInfo) {
-        this.threadName = threadInfo.getThreadName();
-        this.threadState = threadInfo.getThreadState().name();
-        this.blockedTime = threadInfo.getBlockedTime();
-        this.blockedCount = threadInfo.getBlockedCount();
-        this.waitedTime = threadInfo.getWaitedTime();
-        this.waitedCount = threadInfo.getWaitedCount();
-        this.lockName = threadInfo.getLockName();
-        this.lockOwnerName = threadInfo.getLockOwnerName();
-        this.lockedMonitorCount = threadInfo.getLockedMonitors().length;
-        this.lockedSynchronizerCount = threadInfo.getLockedSynchronizers().length;
-    }
-}

+ 0 - 18
common/src/main/java/cn/reghao/devops/common/ws/MessageDispatcher.java

@@ -1,18 +0,0 @@
-package cn.reghao.devops.common.ws;
-
-import lombok.extern.slf4j.Slf4j;
-
-/**
- * @author reghao
- * @date 2023-11-01 14:34:19
- */
-@Slf4j
-public class MessageDispatcher {
-    public void dispatch(String text) {
-        log.info("text message from server");
-    }
-
-    public void dispatch(Object object) {
-        log.info("binary message from server");
-    }
-}

+ 0 - 7
zzz/build.sh

@@ -1,7 +0,0 @@
-#!/bin/bash
-
-cd /home/reghao/code/java/devops
-mvn clean package -Dmaven.test.skip=true -Ptest
-
-#mvn clean package -Dmaven.test.skip=true -am -pl logstash
-#mvn clean package -Dmaven.test.skip=true -am -pl agent