[dev] modify build script

This commit is contained in:
tjq 2020-05-20 18:56:57 +08:00
parent 4087c876e3
commit e5ae446c3a
4 changed files with 119 additions and 25 deletions

View File

@ -16,6 +16,21 @@ OhMyScheduler是基于Akka架构的一款分布式调度平台与分布式计算
* 有需要全部机器一同执行的业务场景:如日志清理。
* 有需要分布式处理的业务场景比如需要更新一大批数据单机执行耗时非常长可以使用Map/MapReduce处理器完成任务的分发调动整个集群加速计算。
### 同类产品对比
||QuartZ|xxl-job|SchedulerX 2.0|OhMyScheduler|
|----|----|----|----|----|
|定时类型|CRON|CRON|CRON、固定频率、固定延迟、OpenAPI|CRON、固定频率、固定延迟、OpenAPI|
|任务类型|内置Java|内置Java、GLUE Java、Shell、Python等脚本|内置Java、外置JavaFatJar、Shell、Python等脚本|内置Java、外置Java容器、Shell、Python等脚本|
|分布式任务|无|静态分片|MapReduce动态分片|MapReduce动态分片|
|在线任务治理|不支持|支持|支持|支持|
|日志白屏化|不支持|支持|不支持|支持|
|调度方式及性能|基于数据库锁,有性能瓶颈|基于数据库锁,有性能瓶颈|不详|无锁化设计,性能强劲无上限|
|报警监控|无|邮件|短信|邮件,提供接口允许开发者自定义开发|
|系统依赖|MySQL|MySQL|人民币(公测期间免费,哎,帮打个广告吧)|任意Spring Data Jpa支持的关系型数据库MySQL、Oracle...|
|DAG工作流|不支持|不支持|支持|暂不支持,有明确开发计划|
# 接入流程(文档不要太详细,简单强大兼得说的就是在下~)
1. [项目部署及初始化](./others/doc/SystemInitGuide.md)
2. [处理器开发](./others/doc/ProcessorDevGuide.md)

View File

@ -0,0 +1,16 @@
# 没有 javac 需求,用 JRE 镜像
FROM openjdk:8-jre-slim
MAINTAINER tengjiqi@gmail.com
ENV APP_NAME=oh-my-scheduler-worker-agent
ENV PARAMS=""
COPY oms-agent.jar /oms-agent.jar
# 暴露端口HTTP + AKKA-Server + AKKA-Client
EXPOSE 7700 10086 27777
# 创建 docker 文件目录(盲猜这是用户目录)
RUN mkdir -p /root/oms-agent
# 挂载数据卷,将文件直接输出到宿主机(注意,此处挂载的是匿名卷,即在宿主机位置随机)
VOLUME /root/oms
# 启动应用
ENTRYPOINT ["sh","-c","java -jar /oms-agent.jar $PARAMS"]

View File

@ -1,3 +1,16 @@
/*
Navicat Premium Data Transfer
Source Server Type : MySQL
Source Server Version : 50724
Source Schema : oms-product
Target Server Type : MySQL
Target Server Version : 50724
File Encoding : 65001
Date: 20/05/2020 16:28:20
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
@ -14,13 +27,32 @@ CREATE TABLE `app_info` (
`gmt_modified` datetime(6) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `appNameUK` (`app_name`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Table structure for instance_log
-- Table structure for container_info
-- ----------------------------
DROP TABLE IF EXISTS `instance_log`;
CREATE TABLE `instance_log` (
DROP TABLE IF EXISTS `container_info`;
CREATE TABLE `container_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`app_id` bigint(20) DEFAULT NULL,
`container_name` varchar(255) DEFAULT NULL,
`gmt_create` datetime(6) DEFAULT NULL,
`gmt_modified` datetime(6) DEFAULT NULL,
`last_deploy_time` datetime(6) DEFAULT NULL,
`source_info` varchar(255) DEFAULT NULL,
`source_type` int(11) DEFAULT NULL,
`status` int(11) DEFAULT NULL,
`version` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `containerNameUK` (`container_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Table structure for instance_info
-- ----------------------------
DROP TABLE IF EXISTS `instance_info`;
CREATE TABLE `instance_info` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`actual_trigger_time` bigint(20) DEFAULT NULL,
`app_id` bigint(20) DEFAULT NULL,
@ -36,9 +68,10 @@ CREATE TABLE `instance_log` (
`status` int(11) NOT NULL,
`task_tracker_address` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `IDX1ha9qjdw952k1c22gkht50unp` (`job_id`),
KEY `IDXckliwovavlr2s0uh14n94yfmc` (`app_id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8mb4;
KEY `IDX5b1nhpe5je7gc5s1ur200njr7` (`job_id`),
KEY `IDXjnji5lrr195kswk6f7mfhinrs` (`app_id`),
KEY `IDXa98hq3yu0l863wuotdjl7noum` (`instance_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Table structure for job_info
@ -72,7 +105,7 @@ CREATE TABLE `job_info` (
`time_expression_type` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `IDXk2xprmn3lldmlcb52i36udll1` (`app_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Table structure for oms_lock
@ -83,10 +116,11 @@ CREATE TABLE `oms_lock` (
`gmt_create` datetime(6) DEFAULT NULL,
`gmt_modified` datetime(6) DEFAULT NULL,
`lock_name` varchar(255) DEFAULT NULL,
`max_lock_time` bigint(20) DEFAULT NULL,
`ownerip` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `lockNameUK` (`lock_name`)
) ENGINE=InnoDB AUTO_INCREMENT=41 DEFAULT CHARSET=utf8mb4;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Table structure for server_info
@ -99,7 +133,7 @@ CREATE TABLE `server_info` (
`ip` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `UKtk8ytgpl7mpukhnvhbl82kgvy` (`ip`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4;
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4;
-- ----------------------------
-- Table structure for user_info

View File

@ -1,31 +1,60 @@
#!/bin/bash
# -p允许后面跟一个字符串作为提示 -r保证读入的是原始内容不会发生任何转义
read -r -p "请输入Dockedr镜像版本:" version
echo "即将构建的Docker镜像oms-server:$version"
echo "即将构建的 server 镜像oms-server:$version"
echo "即将构建的 agent 镜像oms-agent:$version"
read -r -p "任意键继续:"
# 一键部署脚本,请勿挪动脚本
cd `dirname $0`/../.. || exit
echo "================== 构建 jar =================="
mvn clean package -DskipTests -Pdev -U -e
echo "================== 拷贝 jar =================="
/bin/cp -rf oh-my-scheduler-server/target/*.jar oh-my-scheduler-server/oms-server.jar
ls -l oh-my-scheduler-server/oms-server.jar
read -r -p "是否进行maven构建y/n:" needmvn
if [ "$needmvn" = "y" ] || [ "$needmvn" = "Y" ]; then
echo "================== 构建 jar =================="
mvn clean package -DskipTests -Pdev -U -e
echo "================== 拷贝 jar =================="
/bin/cp -rf oh-my-scheduler-server/target/*.jar oh-my-scheduler-server/oms-server.jar
/bin/cp -rf oh-my-scheduler-worker-agent/target/*.jar oh-my-scheduler-worker-agent/oms-agent.jar
ls -l oh-my-scheduler-server/oms-server.jar
ls -l oh-my-scheduler-worker-agent/oms-agent.jar
fi
echo "================== 关闭老应用 =================="
docker stop oms-server
docker stop oms-agent
echo "================== 删除老容器 =================="
docker container rm oms-server
docker container rm oms-agent
echo "================== 删除旧镜像 =================="
docker rmi -f tjqq/oms-server:$version
docker rmi -f tjqq/oms-agent:$version
echo "================== 构建应用镜像 =================="
docker build -t tjqq/oms-server:$version oh-my-scheduler-server/. || exit
docker build -t tjqq/oms-agent:$version oh-my-scheduler-worker-agent/. || exit
echo "================== 准备启动应用 =================="
# 启动应用(端口映射、数据路径挂载)
## -d后台运行
## -p指定端口映射容器端口宿主机端口
## --name指定容器名称
## -v--volume挂载目录宿主机目录docker内目录写入docker内路径的数据会被直接写到宿主机上常用于日志文件
## -net=host容器和宿主机共享网络容器直接使用宿主机IP性能最好但网络隔离较差
docker run -d -e PARAMS="--spring.profiles.active=product" -p 7700:7700 -p 10086:10086 -p 27777:27777 --name oms-server -v ~/docker/oms-server:/root/oms-server tjqq/oms-server:$version
sleep 1
tail --pid=$$ -f -n 1000 ~/docker/oms-server/application.log
read -r -p "是否正式发布该镜像y/n:" needrelease
if [ "$needrelease" = "y" ] || [ "$needrelease" = "Y" ]; then
read -r -p "三思请确保当前处于已发布的Master分支y/n:" needrelease
if [ "$needrelease" = "y" ] || [ "$needrelease" = "Y" ]; then
echo "================== 正在推送 server 镜像到中央仓库 =================="
docker push tjqq/oms-server:$version
echo "================== 正在推送 agent 镜像到中央仓库 =================="
docker push tjqq/oms-agent:$version
fi
fi
read -r -p "是否启动 server & agenty/n:" startup
if [ "$startup" = "y" ] || [ "$startup" = "Y" ]; then
# 启动应用(端口映射、数据路径挂载)
## -d后台运行
## -p指定端口映射容器端口宿主机端口
## --name指定容器名称
## -v--volume挂载目录宿主机目录docker内目录写入docker内路径的数据会被直接写到宿主机上常用于日志文件
## -net=host容器和宿主机共享网络容器直接使用宿主机IP性能最好但网络隔离较差
docker run -d -e PARAMS="--spring.profiles.active=product" -p 7700:7700 -p 10086:10086 -p 27777:27777 --name oms-server -v ~/docker/oms-server:/root/oms-server tjqq/oms-server:$version
sleep 1
tail --pid=$$ -f -n 1000 ~/docker/oms-server/application.log
docker run -d -e PARAMS="--app oms-agent-test"
fi