feat: 执行器runner基本搭建完成 + drone ci/cd
This commit is contained in:
66
.drone.yml
Normal file
66
.drone.yml
Normal 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
11
Dockerfile
Normal 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
51
deployment.yml
Normal 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
17
docker.sh
Normal 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'
|
||||
@@ -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);
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
package com.metis.flow.engine;
|
||||
|
||||
public interface AppEngineRunnerService {
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
package com.metis.flow;
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user