feat: 执行器runner基本搭建完成 + drone ci/cd

This commit is contained in:
2025-04-07 19:27:58 +08:00
parent f05cd6c54c
commit 5ab14628c1
9 changed files with 154 additions and 8 deletions

66
.drone.yml Normal file
View File

@@ -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

11
Dockerfile Normal file
View File

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

51
deployment.yml Normal file
View File

@@ -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

17
docker.sh Normal file
View File

@@ -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'

View File

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

View File

@@ -1,4 +1,6 @@
package com.metis.flow.engine;
public interface AppEngineRunnerService {
}

View File

@@ -1 +0,0 @@
package com.metis.flow;

View File

@@ -9,14 +9,14 @@ import java.util.concurrent.ConcurrentHashMap;
public class NodeValidatorFactory {
private static final Map<NodeType, NodeValidator<Object>> MAP = new ConcurrentHashMap<>(8);
private static final Map<NodeType, NodeValidator> MAP = new ConcurrentHashMap<>(8);
/**
* 注册
*
* @param validator 验证器
*/
public static void register(NodeValidator<Object> 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 <T> NodeValidator<T> get(NodeType type) {
return (NodeValidator<T>) MAP.get(type);
public static NodeValidator get(NodeType type) {
return MAP.get(type);
}

View File

@@ -61,7 +61,7 @@ public class ValidatorServiceImpl implements ValidatorService {
List<String> errorMessage = new ArrayList<>();
for (Node node : nodes) {
NodeType type = node.getType();
NodeValidator<Object> validator = NodeValidatorFactory.get(type);
NodeValidator validator = NodeValidatorFactory.get(type);
// 节点校验器
Assert.isTrue(ObjectUtil.isNotNull(validator), "无:{}类型的节点校验器", type.getName());
ValidatorResult result = validator.validate(node);