From 5ab14628c198156991a3e247f11bfb1cbb008802 Mon Sep 17 00:00:00 2001 From: clay Date: Mon, 7 Apr 2025 19:27:58 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=89=A7=E8=A1=8C=E5=99=A8runner?= =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E6=90=AD=E5=BB=BA=E5=AE=8C=E6=88=90=20+=20dr?= =?UTF-8?q?one=20ci/cd?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 66 +++++++++++++++++++ Dockerfile | 11 ++++ deployment.yml | 51 ++++++++++++++ docker.sh | 17 +++++ .../metis/flow/convert/BaseAppConvert.java | 2 +- .../flow/engine/AppEngineRunnerService.java | 2 + .../java/com/metis/flow/package-info.java | 1 - .../factory/NodeValidatorFactory.java | 10 +-- .../validator/impl/ValidatorServiceImpl.java | 2 +- 9 files changed, 154 insertions(+), 8 deletions(-) create mode 100644 .drone.yml create mode 100644 Dockerfile create mode 100644 deployment.yml create mode 100644 docker.sh delete mode 100644 src/main/java/com/metis/flow/package-info.java diff --git a/.drone.yml b/.drone.yml new file mode 100644 index 0000000..5e5349a --- /dev/null +++ b/.drone.yml @@ -0,0 +1,66 @@ +kind: pipeline +type: docker +name: metis +platform: + os: linux + arch: arm64 + + +steps: + - name: build-jar + image: maven:3.8.5-openjdk-11 + volumes: + - name: maven-cache + path: /root/.m2 + commands: + - mvn clean package -DskipTests=true + + - name: build-docker + image: 10.7.127.190:38080/docker/docker + volumes: + - name: docker + path: /var/run/docker.sock + environment: + DOCKER_USERNAME: + from_secret: docker_username + DOCKER_PASSWORD: + from_secret: docker_password + REGISTRY: + from_secret: registry + REGISTRY_NAMESPACE: + from_secret: registry_namespace + commands: + - sed -i 's/$REGISTRY/'"$REGISTRY"'/' deployment.yml + - sed -i 's/$REGISTRY_NAMESPACE/'"$REGISTRY_NAMESPACE"'/' deployment.yml + - sed -i 's/$DRONE_COMMIT/${DRONE_COMMIT}/' deployment.yml + - sed -i 's/$DRONE_REPO_NAME/${DRONE_REPO_NAME}/' deployment.yml + - echo $DOCKER_PASSWORD | docker login $REGISTRY --username $DOCKER_USERNAME --password-stdin + - sh docker_pro.sh + - docker rmi -f $(docker images | grep $DRONE_REPO_NAME | awk '{print $3}') + + - name: deploy + image: bitnami/kubectl:1.26.13-debian-11-r1 + volumes: + - name: config + path: /app/config + commands: + - kubectl apply -f deployment.yml -n account --kubeconfig=/app/config/base-taishan-kubectl.yml + + +volumes: + - name: config + host: + path: /home/kubect + - name: maven-cache + host: + path: /home/data/maven/cache + - name: docker + host: + path: /var/run/docker.sock + +trigger: + branch: + - test + + event: + - push diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7f2357c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM 10.7.127.190:38080/openjdk:11.0.10-jre +ENV SERVICE_PORTS=8080 +ENV PROFILES=pro +RUN mkdir -p /app/ +WORKDIR /app +# 定义时区参数并设置时区 +ENV TZ=Asia/Shanghai +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone +COPY ./target/metis-1.0.0-SNAPSHOT.jar /app/metis.jar +RUN chmod 755 -R /app/ +CMD java -jar /app/metis.jar -Xms256m -Xmx512m --spring.profiles.active=${PROFILES} --server.port=${SERVICE_PORTS} diff --git a/deployment.yml b/deployment.yml new file mode 100644 index 0000000..a39bdc2 --- /dev/null +++ b/deployment.yml @@ -0,0 +1,51 @@ +apiVersion: v1 +kind: Service +metadata: + name: $DRONE_REPO_NAME +spec: + type: NodePort + ports: + - protocol: TCP + port: 8080 + targetPort: 8080 + nodePort: 48081 + + selector: + app: $DRONE_REPO_NAME + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: $DRONE_REPO_NAME +spec: + replicas: 1 + selector: + matchLabels: + app: $DRONE_REPO_NAME + template: + metadata: + labels: + app: $DRONE_REPO_NAME + spec: + imagePullSecrets: + - name: aliyun-docker-registry + containers: + - image: $REGISTRY/$REGISTRY_NAMESPACE/$DRONE_REPO_NAME:$DRONE_COMMIT + name: $DRONE_REPO_NAME + imagePullPolicy: Always + env: + - name: TIME_ZONE + value: Asia/Shanghai + - name: REF_NAME + value: $DRONE_REPO_NAME + resources: + requests: + memory: 1Gi + cpu: 1 + limits: + memory: 2Gi + cpu: 2 + ports: + - containerPort: 8080 + name: app-port diff --git a/docker.sh b/docker.sh new file mode 100644 index 0000000..52dfe16 --- /dev/null +++ b/docker.sh @@ -0,0 +1,17 @@ +#!/bin/sh +# 定义应用组名 +group_name='lan' +# 定义应用名称 +app_name=${DRONE_REPO_NAME} +# 定义应用版本 +app_version=${DRONE_COMMIT} +echo ${app_version} +echo ${app_name} +docker rm -f ${app_name} +dockr rmi ${group_name}/${app_name}:${app_version} +# 打包编译docker镜像 +echo '----build image start----' +docker build -t ${group_name}/${app_name}:${app_version} . +echo '----build image success----' +docker run -d -p 8080:8080 --name ${app_name} ${group_name}/${app_name}:${app_version} +echo 'push success' diff --git a/src/main/java/com/metis/flow/convert/BaseAppConvert.java b/src/main/java/com/metis/flow/convert/BaseAppConvert.java index 9564634..5029018 100644 --- a/src/main/java/com/metis/flow/convert/BaseAppConvert.java +++ b/src/main/java/com/metis/flow/convert/BaseAppConvert.java @@ -32,7 +32,7 @@ public interface BaseAppConvert { * @return {@link App } */ @Mappings({ - @Mapping(target = "graph", expression = "java(com.alibaba.fastjson2.JSON.parseObject(baseApp.getGraphJson(), com.metis.flow.domain.entity.bo.Graph.class))"), + @Mapping(target = "graph", expression = "java(com.alibaba.fastjson2.JSON.parseObject(baseApp.getGraphJson(), com.metis.flow.domain.bo.Graph.class))"), @Mapping(target = "workflowId", source = "id") }) App toApp(BaseApp baseApp); diff --git a/src/main/java/com/metis/flow/engine/AppEngineRunnerService.java b/src/main/java/com/metis/flow/engine/AppEngineRunnerService.java index 2ee07ff..8bf6396 100644 --- a/src/main/java/com/metis/flow/engine/AppEngineRunnerService.java +++ b/src/main/java/com/metis/flow/engine/AppEngineRunnerService.java @@ -1,4 +1,6 @@ package com.metis.flow.engine; public interface AppEngineRunnerService { + + } diff --git a/src/main/java/com/metis/flow/package-info.java b/src/main/java/com/metis/flow/package-info.java deleted file mode 100644 index cea1222..0000000 --- a/src/main/java/com/metis/flow/package-info.java +++ /dev/null @@ -1 +0,0 @@ -package com.metis.flow; \ No newline at end of file diff --git a/src/main/java/com/metis/flow/validator/factory/NodeValidatorFactory.java b/src/main/java/com/metis/flow/validator/factory/NodeValidatorFactory.java index 67a07f2..ac00792 100644 --- a/src/main/java/com/metis/flow/validator/factory/NodeValidatorFactory.java +++ b/src/main/java/com/metis/flow/validator/factory/NodeValidatorFactory.java @@ -9,14 +9,14 @@ import java.util.concurrent.ConcurrentHashMap; public class NodeValidatorFactory { - private static final Map> MAP = new ConcurrentHashMap<>(8); + private static final Map MAP = new ConcurrentHashMap<>(8); /** * 注册 * * @param validator 验证器 */ - public static void register(NodeValidator validator) { + public static void register(NodeValidator validator) { MAP.put(validator.getType(), validator); } @@ -24,10 +24,10 @@ public class NodeValidatorFactory { * 得到 * * @param type 类型 - * @return {@link NodeValidator }<{@link T }> + * @return {@link NodeValidator } */ - public static NodeValidator get(NodeType type) { - return (NodeValidator) MAP.get(type); + public static NodeValidator get(NodeType type) { + return MAP.get(type); } diff --git a/src/main/java/com/metis/flow/validator/impl/ValidatorServiceImpl.java b/src/main/java/com/metis/flow/validator/impl/ValidatorServiceImpl.java index ed2eed1..f11af15 100644 --- a/src/main/java/com/metis/flow/validator/impl/ValidatorServiceImpl.java +++ b/src/main/java/com/metis/flow/validator/impl/ValidatorServiceImpl.java @@ -61,7 +61,7 @@ public class ValidatorServiceImpl implements ValidatorService { List errorMessage = new ArrayList<>(); for (Node node : nodes) { NodeType type = node.getType(); - NodeValidator validator = NodeValidatorFactory.get(type); + NodeValidator validator = NodeValidatorFactory.get(type); // 节点校验器 Assert.isTrue(ObjectUtil.isNotNull(validator), "无:{}类型的节点校验器", type.getName()); ValidatorResult result = validator.validate(node);