From 1b94067bb9eacd7a1c67658d6be687fbd1f4edc2 Mon Sep 17 00:00:00 2001 From: qiaozhanwei <825193156@qq.com> Date: Wed, 10 Jul 2019 14:13:24 +0800 Subject: [PATCH 01/16] update dag.vue remove console log --- escheduler-ui/src/js/conf/home/pages/dag/_source/dag.vue | 2 -- 1 file changed, 2 deletions(-) diff --git a/escheduler-ui/src/js/conf/home/pages/dag/_source/dag.vue b/escheduler-ui/src/js/conf/home/pages/dag/_source/dag.vue index b2062b7769..e1226585f7 100644 --- a/escheduler-ui/src/js/conf/home/pages/dag/_source/dag.vue +++ b/escheduler-ui/src/js/conf/home/pages/dag/_source/dag.vue @@ -459,8 +459,6 @@ 'tasks': { deep: true, handler (o) { - console.log('+++++ save dag params +++++') - console.log(o) // Edit state does not allow deletion of node a... this.setIsEditDag(true) From b6ebb56777c424124d90fb0f8d772013b535cd88 Mon Sep 17 00:00:00 2001 From: xianhu Date: Wed, 10 Jul 2019 17:15:03 +0800 Subject: [PATCH 02/16] fix bugs #516 --- .../src/main/java/cn/escheduler/server/utils/LoggerUtils.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/escheduler-server/src/main/java/cn/escheduler/server/utils/LoggerUtils.java b/escheduler-server/src/main/java/cn/escheduler/server/utils/LoggerUtils.java index bbb404f536..1e0bd196ff 100644 --- a/escheduler-server/src/main/java/cn/escheduler/server/utils/LoggerUtils.java +++ b/escheduler-server/src/main/java/cn/escheduler/server/utils/LoggerUtils.java @@ -16,6 +16,7 @@ */ package cn.escheduler.server.utils; +import cn.escheduler.common.Constants; import org.slf4j.Logger; import java.util.ArrayList; @@ -31,7 +32,7 @@ public class LoggerUtils { /** * rules for extracting application ID */ - private static final Pattern APPLICATION_REGEX = Pattern.compile("\\d+_\\d+"); + private static final Pattern APPLICATION_REGEX = Pattern.compile(Constants.APPLICATION_REGEX); /** * build job id From caa9ba48117e60edf6605ed1311b87372768e1cd Mon Sep 17 00:00:00 2001 From: lenboo Date: Wed, 10 Jul 2019 19:47:45 +0800 Subject: [PATCH 03/16] check tenant is available --- .../java/cn/escheduler/api/enums/Status.java | 1 + .../api/service/ExecutorService.java | 31 ++++++++++++++----- .../server/worker/runner/FetchTaskThread.java | 5 +++ 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/escheduler-api/src/main/java/cn/escheduler/api/enums/Status.java b/escheduler-api/src/main/java/cn/escheduler/api/enums/Status.java index bd1d5e91b3..18ece52a1e 100644 --- a/escheduler-api/src/main/java/cn/escheduler/api/enums/Status.java +++ b/escheduler-api/src/main/java/cn/escheduler/api/enums/Status.java @@ -211,6 +211,7 @@ public enum Status { DELETE_SCHEDULE_CRON_BY_ID_ERROR(50024,"delete schedule by id error"), BATCH_DELETE_PROCESS_DEFINE_ERROR(50025,"batch delete process definition error"), BATCH_DELETE_PROCESS_DEFINE_BY_IDS_ERROR(50026,"batch delete process definition by ids {0} error"), + TENANT_NOT_SUITABLE(50027,"there is not any tenant suitable, please choose a tenant available."), HDFS_NOT_STARTUP(60001,"hdfs not startup"), HDFS_TERANT_RESOURCES_FILE_EXISTS(60002,"resource file exists,please delete resource first"), diff --git a/escheduler-api/src/main/java/cn/escheduler/api/service/ExecutorService.java b/escheduler-api/src/main/java/cn/escheduler/api/service/ExecutorService.java index 9602ac6cef..a2a480f43c 100644 --- a/escheduler-api/src/main/java/cn/escheduler/api/service/ExecutorService.java +++ b/escheduler-api/src/main/java/cn/escheduler/api/service/ExecutorService.java @@ -110,6 +110,13 @@ public class ExecutorService extends BaseService{ return result; } + if (!checkTenantSuitable(processDefinition)){ + logger.error("there is not any vaild tenant for the process definition: id:{},name:{}, ", + processDefinition.getId(), processDefinition.getName()); + putMsg(result, Status.TENANT_NOT_SUITABLE); + return result; + } + /** * create command */ @@ -190,15 +197,10 @@ public class ExecutorService extends BaseService{ if (status != Status.SUCCESS) { return checkResult; } - - // checkTenantExists(); - Tenant tenant = processDao.getTenantForProcess(processDefinition.getTenantId(), - processDefinition.getUserId()); - if(tenant == null){ + if (!checkTenantSuitable(processDefinition)){ logger.error("there is not any vaild tenant for the process definition: id:{},name:{}, ", processDefinition.getId(), processDefinition.getName()); - putMsg(result, Status.PROCESS_INSTANCE_NOT_EXIST, processInstanceId); - return result; + putMsg(result, Status.TENANT_NOT_SUITABLE); } switch (executeType) { @@ -240,6 +242,21 @@ public class ExecutorService extends BaseService{ return result; } + /** + * check tenant suitable + * @param processDefinition + * @return + */ + private boolean checkTenantSuitable(ProcessDefinition processDefinition) { + // checkTenantExists(); + Tenant tenant = processDao.getTenantForProcess(processDefinition.getTenantId(), + processDefinition.getUserId()); + if(tenant == null){ + return false; + } + return true; + } + /** * Check the state of process instance and the type of operation match * diff --git a/escheduler-server/src/main/java/cn/escheduler/server/worker/runner/FetchTaskThread.java b/escheduler-server/src/main/java/cn/escheduler/server/worker/runner/FetchTaskThread.java index 2d88fdb843..de4666d102 100644 --- a/escheduler-server/src/main/java/cn/escheduler/server/worker/runner/FetchTaskThread.java +++ b/escheduler-server/src/main/java/cn/escheduler/server/worker/runner/FetchTaskThread.java @@ -210,6 +210,11 @@ public class FetchTaskThread implements Runnable{ Tenant tenant = processDao.getTenantForProcess(processInstance.getTenantId(), processDefine.getUserId()); + if(tenant == null){ + logger.error("cannot find suitable tenant for the task:{}, process instance tenant:{}, process definition tenant:{}", + taskInstance.getName(),processInstance.getTenantId(), processDefine.getTenantId()); + continue; + } // check and create Linux users FileUtils.createWorkDirAndUserIfAbsent(execLocalPath, From 94a37429e0a64261acb75a2f6af3a5d99381f14a Mon Sep 17 00:00:00 2001 From: lenboo Date: Thu, 11 Jul 2019 13:59:29 +0800 Subject: [PATCH 04/16] update poll task --- .../cn/escheduler/common/queue/TaskQueueZkImpl.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/escheduler-common/src/main/java/cn/escheduler/common/queue/TaskQueueZkImpl.java b/escheduler-common/src/main/java/cn/escheduler/common/queue/TaskQueueZkImpl.java index 73f7499fa7..de37b5ffce 100644 --- a/escheduler-common/src/main/java/cn/escheduler/common/queue/TaskQueueZkImpl.java +++ b/escheduler-common/src/main/java/cn/escheduler/common/queue/TaskQueueZkImpl.java @@ -228,11 +228,11 @@ public class TaskQueueZkImpl extends AbstractZKClient implements ITaskQueue { int j = 0; List taskslist = new ArrayList<>(tasksNum); while(iterator.hasNext()){ - if(j++ < tasksNum){ - String task = iterator.next(); - - taskslist.add(getOriginTaskFormat(task)); + if(j++ >= tasksNum){ + break; } + String task = iterator.next(); + taskslist.add(getOriginTaskFormat(task)); } return taskslist; } @@ -245,6 +245,9 @@ public class TaskQueueZkImpl extends AbstractZKClient implements ITaskQueue { */ private String getOriginTaskFormat(String formatTask){ String[] taskArray = formatTask.split(Constants.UNDERLINE); + if(taskArray.length< 4){ + return formatTask; + } int processInstanceId = Integer.parseInt(taskArray[1]); int taskId = Integer.parseInt(taskArray[3]); From 233ec756cc9f1217452928c286fc342aa96853b6 Mon Sep 17 00:00:00 2001 From: lgcareer <18610854716@163.com> Date: Mon, 15 Jul 2019 10:55:32 +0800 Subject: [PATCH 05/16] fix bug 569 to resolve schedule doesn't really stop --- .../escheduler/api/service/ProcessDefinitionService.java | 2 +- .../java/cn/escheduler/api/service/SchedulerService.java | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/escheduler-api/src/main/java/cn/escheduler/api/service/ProcessDefinitionService.java b/escheduler-api/src/main/java/cn/escheduler/api/service/ProcessDefinitionService.java index 45ff487f5e..39133eeb5f 100644 --- a/escheduler-api/src/main/java/cn/escheduler/api/service/ProcessDefinitionService.java +++ b/escheduler-api/src/main/java/cn/escheduler/api/service/ProcessDefinitionService.java @@ -487,7 +487,7 @@ public class ProcessDefinitionService extends BaseDAGService { // set status schedule.setReleaseState(ReleaseState.OFFLINE); scheduleMapper.update(schedule); - deleteSchedule(project.getId(), id); + deleteSchedule(project.getId(), schedule.getId()); } break; } diff --git a/escheduler-api/src/main/java/cn/escheduler/api/service/SchedulerService.java b/escheduler-api/src/main/java/cn/escheduler/api/service/SchedulerService.java index 5ea5faf83d..9f6c67ff94 100644 --- a/escheduler-api/src/main/java/cn/escheduler/api/service/SchedulerService.java +++ b/escheduler-api/src/main/java/cn/escheduler/api/service/SchedulerService.java @@ -442,14 +442,14 @@ public class SchedulerService extends BaseService { /** * delete schedule */ - public static void deleteSchedule(int projectId, int processId) throws RuntimeException{ - logger.info("delete schedules of project id:{}, flow id:{}", projectId, processId); + public static void deleteSchedule(int projectId, int scheduleId) throws RuntimeException{ + logger.info("delete schedules of project id:{}, schedule id:{}", projectId, scheduleId); - String jobName = QuartzExecutors.buildJobName(processId); + String jobName = QuartzExecutors.buildJobName(scheduleId); String jobGroupName = QuartzExecutors.buildJobGroupName(projectId); if(!QuartzExecutors.getInstance().deleteJob(jobName, jobGroupName)){ - logger.warn("set offline failure:projectId:{},processId:{}",projectId,processId); + logger.warn("set offline failure:projectId:{},scheduleId:{}",projectId,scheduleId); throw new RuntimeException(String.format("set offline failure")); } From 1f9719578e40ec565426e404ffed48f326e265ac Mon Sep 17 00:00:00 2001 From: qiaozhanwei <825193156@qq.com> Date: Mon, 15 Jul 2019 18:09:39 +0800 Subject: [PATCH 06/16] sql task add kerberos doc update --- docs/zh_CN/images/hive_kerberos.png | Bin 0 -> 37052 bytes docs/zh_CN/images/sparksql_kerberos.png | Bin 0 -> 37390 bytes docs/zh_CN/系统使用手册.md | 51 ++++++++++++++---------- 3 files changed, 29 insertions(+), 22 deletions(-) create mode 100644 docs/zh_CN/images/hive_kerberos.png create mode 100644 docs/zh_CN/images/sparksql_kerberos.png diff --git a/docs/zh_CN/images/hive_kerberos.png b/docs/zh_CN/images/hive_kerberos.png new file mode 100644 index 0000000000000000000000000000000000000000..1532934f928d6b3d0d74c330523343878b5ed7c6 GIT binary patch literal 37052 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 g2v`xW=VydVjx`Lp=S_I%#m2Xo66h=}ee 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 literal 0 HcmV?d00001 diff --git a/docs/zh_CN/系统使用手册.md b/docs/zh_CN/系统使用手册.md index fc0e999118..595850bade 100644 --- a/docs/zh_CN/系统使用手册.md +++ b/docs/zh_CN/系统使用手册.md @@ -60,7 +60,7 @@ ### 执行流程定义 - **未上线状态的流程定义可以编辑,但是不可以运行**,所以先上线工作流 > 点击工作流定义,返回流程定义列表,点击”上线“图标,上线工作流定义。 - + > "下线"工作流之前,要先将定时管理的定时下线,才能成功下线工作流定义 - 点击”运行“,执行工作流。运行参数说明: @@ -98,28 +98,28 @@ ### 查看流程实例 > 点击“工作流实例”,查看流程实例列表。 - + > 点击工作流名称,查看任务执行状态。 - +

> 点击任务节点,点击“查看日志”,查看任务执行日志。 - +

- + > 点击任务实例节点,点击**查看历史**,可以查看该流程实例运行的该任务实例列表 - +

> 对工作流实例的操作: - +

@@ -165,7 +165,7 @@ - 密码:设置连接MySQL的密码 - 数据库名:输入连接MySQL的数据库名称 - Jdbc连接参数:用于MySQL连接的参数设置,以JSON形式填写 - +

@@ -191,7 +191,7 @@ #### 创建、编辑HIVE数据源 1.使用HiveServer2方式连接 - +

@@ -207,12 +207,19 @@ - Jdbc连接参数:用于HIVE连接的参数设置,以JSON形式填写 2.使用HiveServer2 HA Zookeeper方式连接 - +

+注意:如果开启了**kerberos**,则需要填写 **Principal** +

+ +

+ + + #### 创建、编辑Spark数据源

@@ -231,7 +238,7 @@ ### 上传资源 - 上传资源文件和udf函数,所有上传的文件和资源都会被存储到hdfs上,所以需要以下配置项: - + ``` conf/common/common.properties -- hdfs.startup.state=true @@ -242,7 +249,7 @@ conf/common/hadoop.properties ``` #### 文件管理 - + > 是对各种资源文件的管理,包括创建基本的txt/log/sh/conf等文件、上传jar包等各种类型文件,以及编辑、下载、删除等操作。

@@ -287,7 +294,7 @@ conf/common/hadoop.properties #### 资源管理 > 资源管理和文件管理功能类似,不同之处是资源管理是上传的UDF函数,文件管理上传的是用户程序,脚本及配置文件 - + * 上传udf资源 > 和上传文件相同。 @@ -303,7 +310,7 @@ conf/common/hadoop.properties - 参数:用来标注函数的输入参数 - 数据库名:预留字段,用于创建永久UDF函数 - UDF资源:设置创建的UDF对应的资源文件 - +

@@ -312,7 +319,7 @@ conf/common/hadoop.properties - 安全中心是只有管理员账户才有权限的功能,有队列管理、租户管理、用户管理、告警组管理、worker分组、令牌管理等功能,还可以对资源、数据源、项目等授权 - 管理员登录,默认用户名密码:admin/escheduler123 - + ### 创建队列 - 队列是在执行spark、mapreduce等程序,需要用到“队列”参数时使用的。 - “安全中心”->“队列管理”->“创建队列” @@ -357,7 +364,7 @@ conf/common/hadoop.properties ### 令牌管理 - 由于后端接口有登录检查,令牌管理,提供了一种可以通过调用接口的方式对系统进行各种操作。 - 调用示例: - + ```令牌调用示例 /** * test token @@ -477,15 +484,15 @@ conf/common/hadoop.properties ### 依赖(DEPENDENT)节点 - 依赖节点,就是**依赖检查节点**。比如A流程依赖昨天的B流程执行成功,依赖节点会去检查B流程在昨天是否有执行成功的实例。 - + > 拖动工具栏中的![PNG](https://analysys.github.io/easyscheduler_docs_cn/images/toolbar_DEPENDENT.png)任务节点到画板中,双击任务节点,如下图:

- + > 依赖节点提供了逻辑判断功能,比如检查昨天的B流程是否成功,或者C流程是否执行成功。 - +

@@ -536,7 +543,7 @@ conf/common/hadoop.properties ### SPARK节点 - 通过SPARK节点,可以直接直接执行SPARK程序,对于spark节点,worker会使用`spark-submit`方式提交任务 - + > 拖动工具栏中的![PNG](https://analysys.github.io/easyscheduler_docs_cn/images/toolbar_SPARK.png)任务节点到画板中,双击任务节点,如下图:

@@ -563,7 +570,7 @@ conf/common/hadoop.properties > 拖动工具栏中的![PNG](https://analysys.github.io/easyscheduler_docs_cn/images/toolbar_MR.png)任务节点到画板中,双击任务节点,如下图: 1. JAVA程序 - +

@@ -592,7 +599,7 @@ conf/common/hadoop.properties ### Python节点 - 使用python节点,可以直接执行python脚本,对于python节点,worker会使用`python **`方式提交任务。 - + > 拖动工具栏中的![PNG](https://analysys.github.io/easyscheduler_docs_cn/images/toolbar_PYTHON.png)任务节点到画板中,双击任务节点,如下图: From 98252e990d16f4128c612d89ead5ce959fce2db7 Mon Sep 17 00:00:00 2001 From: lenboo Date: Mon, 15 Jul 2019 18:51:07 +0800 Subject: [PATCH 07/16] add 1.1.0 documents --- docs/zh_CN/1.1.0-release.md | 54 +++++++++++++++++++++++++++++++++++++ docs/zh_CN/SUMMARY.md | 1 + 2 files changed, 55 insertions(+) create mode 100644 docs/zh_CN/1.1.0-release.md diff --git a/docs/zh_CN/1.1.0-release.md b/docs/zh_CN/1.1.0-release.md new file mode 100644 index 0000000000..ae17c7d0ee --- /dev/null +++ b/docs/zh_CN/1.1.0-release.md @@ -0,0 +1,54 @@ +Easy Scheduler Release 1.1.0 +=== +Easy Scheduler 1.1.0是1.x系列中的第五个版本。 + +新特性: +=== +- [[EasyScheduler-391](https://github.com/analysys/EasyScheduler/issues/391)] run a process under a specified tenement user +- [[EasyScheduler-288](https://github.com/analysys/EasyScheduler/issues/288)] Feature/qiye_weixin +- [[EasyScheduler-189](https://github.com/analysys/EasyScheduler/issues/189)] Kerberos等安全支持 +- [[EasyScheduler-398](https://github.com/analysys/EasyScheduler/issues/398)]管理员,有租户(install.sh设置默认租户),可以创建资源、项目和数据源(限制有一个管理员) +- [[EasyScheduler-293](https://github.com/analysys/EasyScheduler/issues/293)]点击运行流程时候选择的参数,没有地方可查看,也没有保存 +- [[EasyScheduler-401](https://github.com/analysys/EasyScheduler/issues/401)]定时很容易定时每秒一次,定时完成以后可以在页面显示一下下次触发时间 + +增强: +=== +- [[EasyScheduler-227](https://github.com/analysys/EasyScheduler/issues/227)] upgrade spring-boot to 2.1.x and spring to 5.x +- [[EasyScheduler-434](https://github.com/analysys/EasyScheduler/issues/434)] worker节点数量 zk和mysql中不一致 +- [[EasyScheduler-435](https://github.com/analysys/EasyScheduler/issues/435)]邮箱格式的验证 +- [[EasyScheduler-441](https://github.com/analysys/EasyScheduler/issues/441)] 禁止运行节点加入已完成节点检测 +- [[EasyScheduler-400](https://github.com/analysys/EasyScheduler/issues/400)] 首页页面,队列统计不和谐,命令统计无数据 +- [[EasyScheduler-395](https://github.com/analysys/EasyScheduler/issues/395)] 对于容错恢复的流程,状态不能为 **正在运行 +- [[EasyScheduler-529](https://github.com/analysys/EasyScheduler/issues/529)] optimize poll task from zookeeper +- [[EasyScheduler-242](https://github.com/analysys/EasyScheduler/issues/242)]worker-server节点获取任务性能问题 +- [[EasyScheduler-352](https://github.com/analysys/EasyScheduler/issues/352)]worker 分组, 队列消费问题 +- [[EasyScheduler-461](https://github.com/analysys/EasyScheduler/issues/461)]查看数据源参数,需要加密账号密码信息 +- [[EasyScheduler-396](https://github.com/analysys/EasyScheduler/issues/396)]Dockerfile优化,并关联Dockerfile和github实现自动打镜像 +- [[EasyScheduler-389](https://github.com/analysys/EasyScheduler/issues/389)]service monitor cannot find the change of master/worker +- [[EasyScheduler-511](https://github.com/analysys/EasyScheduler/issues/511)]support recovery process from stop/kill nodes. +- [[EasyScheduler-399](https://github.com/analysys/EasyScheduler/issues/399)]HadoopUtils指定用户操作,而不是 **部署用户 + +修复: +=== +- [[EasyScheduler-394](https://github.com/analysys/EasyScheduler/issues/394)] master&worker部署在同一台机器上时,如果重启master&worker服务,会导致之前调度的任务无法继续调度 +- [[EasyScheduler-469](https://github.com/analysys/EasyScheduler/issues/469)]Fix naming errors,monitor page +- [[EasyScheduler-392](https://github.com/analysys/EasyScheduler/issues/392)]Feature request: fix email regex check +- [[EasyScheduler-405](https://github.com/analysys/EasyScheduler/issues/405)]定时修改/添加页面,开始时间和结束时间不能相同 +- [[EasyScheduler-517](https://github.com/analysys/EasyScheduler/issues/517)]补数 - 子工作流 - 时间参数 +- [[EasyScheduler-532](https://github.com/analysys/EasyScheduler/issues/532)]python节点不执行的问题 +- [[EasyScheduler-543](https://github.com/analysys/EasyScheduler/issues/543)]optimize datasource connection params safety +- [[EasyScheduler-569](https://github.com/analysys/EasyScheduler/issues/569)]定时任务无法真正停止 +- [[EasyScheduler-463](https://github.com/analysys/EasyScheduler/issues/463)]邮箱验证不支持非常见后缀邮箱 + + + + +感谢: +=== +最后但最重要的是,没有以下伙伴的贡献就没有新版本的诞生: + +Baoqi, jimmy201602, samz406, petersear, millionfor, hyperknob, fanguanqun, yangqinlong, qq389401879, chgxtony, Stanfan, lfyee, thisnew, hujiang75277381, sunnyingit, lgbo-ustc, + ivivi, lzy305, JackIllkid, telltime, lipengbo2018, wuchunfu, telltime + +以及微信群里众多的热心伙伴!在此非常感谢! + diff --git a/docs/zh_CN/SUMMARY.md b/docs/zh_CN/SUMMARY.md index 0646577560..d69f530cd0 100644 --- a/docs/zh_CN/SUMMARY.md +++ b/docs/zh_CN/SUMMARY.md @@ -35,6 +35,7 @@ * 系统版本升级文档 * [版本升级](升级文档.md) * 历次版本发布内容 + * [1.1.0 release](1.1.0-release.md) * [1.0.3 release](1.0.3-release.md) * [1.0.2 release](1.0.2-release.md) * [1.0.1 release](1.0.1-release.md) From 8c13e7a7f2b7ad26d86b07369108ae9eed706ab5 Mon Sep 17 00:00:00 2001 From: qiaozhanwei <825193156@qq.com> Date: Tue, 16 Jul 2019 11:07:32 +0800 Subject: [PATCH 08/16] sql kerberos task update doc --- docs/zh_CN/系统使用手册.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/zh_CN/系统使用手册.md b/docs/zh_CN/系统使用手册.md index 595850bade..b4d6d6bd9b 100644 --- a/docs/zh_CN/系统使用手册.md +++ b/docs/zh_CN/系统使用手册.md @@ -215,11 +215,12 @@ 注意:如果开启了**kerberos**,则需要填写 **Principal**

- +

+ #### 创建、编辑Spark数据源

@@ -236,6 +237,14 @@ - 数据库名:输入连接Spark的数据库名称 - Jdbc连接参数:用于Spark连接的参数设置,以JSON形式填写 + + +注意:如果开启了**kerberos**,则需要填写 **Principal** + +

+ +

+ ### 上传资源 - 上传资源文件和udf函数,所有上传的文件和资源都会被存储到hdfs上,所以需要以下配置项: From 9c9310d1881967588ed8f0c254cac0a14055f342 Mon Sep 17 00:00:00 2001 From: lgcareer <18610854716@163.com> Date: Tue, 16 Jul 2019 11:16:41 +0800 Subject: [PATCH 09/16] [maven-release-plugin] prepare release 1.1.0-preview --- escheduler-alert/pom.xml | 2 +- escheduler-api/pom.xml | 2 +- escheduler-common/pom.xml | 2 +- escheduler-dao/pom.xml | 2 +- escheduler-rpc/pom.xml | 2 +- escheduler-server/pom.xml | 2 +- pom.xml | 4 ++-- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/escheduler-alert/pom.xml b/escheduler-alert/pom.xml index be8b5fbb6d..cda2488c36 100644 --- a/escheduler-alert/pom.xml +++ b/escheduler-alert/pom.xml @@ -4,7 +4,7 @@ cn.analysys escheduler - 1.1.0-SNAPSHOT + 1.1.0 escheduler-alert jar diff --git a/escheduler-api/pom.xml b/escheduler-api/pom.xml index b0d92d54a8..b3d9fc53fd 100644 --- a/escheduler-api/pom.xml +++ b/escheduler-api/pom.xml @@ -3,7 +3,7 @@ cn.analysys escheduler - 1.1.0-SNAPSHOT + 1.1.0 escheduler-api jar diff --git a/escheduler-common/pom.xml b/escheduler-common/pom.xml index 35b025b1d8..cc2bb36717 100644 --- a/escheduler-common/pom.xml +++ b/escheduler-common/pom.xml @@ -4,7 +4,7 @@ escheduler cn.analysys - 1.1.0-SNAPSHOT + 1.1.0 escheduler-common escheduler-common diff --git a/escheduler-dao/pom.xml b/escheduler-dao/pom.xml index 4d8fb6912e..3eb6dbf3e0 100644 --- a/escheduler-dao/pom.xml +++ b/escheduler-dao/pom.xml @@ -4,7 +4,7 @@ cn.analysys escheduler - 1.1.0-SNAPSHOT + 1.1.0 escheduler-dao escheduler-dao diff --git a/escheduler-rpc/pom.xml b/escheduler-rpc/pom.xml index e3d7c91a92..4687d1e462 100644 --- a/escheduler-rpc/pom.xml +++ b/escheduler-rpc/pom.xml @@ -4,7 +4,7 @@ escheduler cn.analysys - 1.1.0-SNAPSHOT + 1.1.0 4.0.0 diff --git a/escheduler-server/pom.xml b/escheduler-server/pom.xml index 7f149278c8..ac9a312734 100644 --- a/escheduler-server/pom.xml +++ b/escheduler-server/pom.xml @@ -3,7 +3,7 @@ escheduler cn.analysys - 1.1.0-SNAPSHOT + 1.1.0 escheduler-server escheduler-server diff --git a/pom.xml b/pom.xml index a97650aafb..93ac6f8ee9 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 cn.analysys escheduler - 1.1.0-SNAPSHOT + 1.1.0 pom escheduler http://maven.apache.org @@ -382,7 +382,7 @@ scm:git:https://github.com/analysys/EasyScheduler.git scm:git:https://github.com/analysys/EasyScheduler.git https://github.com/analysys/EasyScheduler.git - HEAD + 1.1.0-preview From 900379a74fe38b3f8609571be7f2e3e584b2736d Mon Sep 17 00:00:00 2001 From: lgcareer <18610854716@163.com> Date: Tue, 16 Jul 2019 11:18:50 +0800 Subject: [PATCH 10/16] [maven-release-plugin] rollback the release of 1.1.0-preview --- escheduler-alert/pom.xml | 2 +- escheduler-api/pom.xml | 2 +- escheduler-common/pom.xml | 2 +- escheduler-dao/pom.xml | 2 +- escheduler-rpc/pom.xml | 2 +- escheduler-server/pom.xml | 2 +- pom.xml | 4 ++-- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/escheduler-alert/pom.xml b/escheduler-alert/pom.xml index cda2488c36..be8b5fbb6d 100644 --- a/escheduler-alert/pom.xml +++ b/escheduler-alert/pom.xml @@ -4,7 +4,7 @@ cn.analysys escheduler - 1.1.0 + 1.1.0-SNAPSHOT escheduler-alert jar diff --git a/escheduler-api/pom.xml b/escheduler-api/pom.xml index b3d9fc53fd..b0d92d54a8 100644 --- a/escheduler-api/pom.xml +++ b/escheduler-api/pom.xml @@ -3,7 +3,7 @@ cn.analysys escheduler - 1.1.0 + 1.1.0-SNAPSHOT escheduler-api jar diff --git a/escheduler-common/pom.xml b/escheduler-common/pom.xml index cc2bb36717..35b025b1d8 100644 --- a/escheduler-common/pom.xml +++ b/escheduler-common/pom.xml @@ -4,7 +4,7 @@ escheduler cn.analysys - 1.1.0 + 1.1.0-SNAPSHOT escheduler-common escheduler-common diff --git a/escheduler-dao/pom.xml b/escheduler-dao/pom.xml index 3eb6dbf3e0..4d8fb6912e 100644 --- a/escheduler-dao/pom.xml +++ b/escheduler-dao/pom.xml @@ -4,7 +4,7 @@ cn.analysys escheduler - 1.1.0 + 1.1.0-SNAPSHOT escheduler-dao escheduler-dao diff --git a/escheduler-rpc/pom.xml b/escheduler-rpc/pom.xml index 4687d1e462..e3d7c91a92 100644 --- a/escheduler-rpc/pom.xml +++ b/escheduler-rpc/pom.xml @@ -4,7 +4,7 @@ escheduler cn.analysys - 1.1.0 + 1.1.0-SNAPSHOT 4.0.0 diff --git a/escheduler-server/pom.xml b/escheduler-server/pom.xml index ac9a312734..7f149278c8 100644 --- a/escheduler-server/pom.xml +++ b/escheduler-server/pom.xml @@ -3,7 +3,7 @@ escheduler cn.analysys - 1.1.0 + 1.1.0-SNAPSHOT escheduler-server escheduler-server diff --git a/pom.xml b/pom.xml index 93ac6f8ee9..a97650aafb 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 cn.analysys escheduler - 1.1.0 + 1.1.0-SNAPSHOT pom escheduler http://maven.apache.org @@ -382,7 +382,7 @@ scm:git:https://github.com/analysys/EasyScheduler.git scm:git:https://github.com/analysys/EasyScheduler.git https://github.com/analysys/EasyScheduler.git - 1.1.0-preview + HEAD From 94862f6d51ed0084cfc3e37b60eea1ebda110652 Mon Sep 17 00:00:00 2001 From: lgcareer <18610854716@163.com> Date: Tue, 16 Jul 2019 11:27:09 +0800 Subject: [PATCH 11/16] [maven-release-plugin] prepare release 1.1.0-preview --- escheduler-alert/pom.xml | 2 +- escheduler-api/pom.xml | 2 +- escheduler-common/pom.xml | 2 +- escheduler-dao/pom.xml | 2 +- escheduler-rpc/pom.xml | 2 +- escheduler-server/pom.xml | 2 +- pom.xml | 4 ++-- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/escheduler-alert/pom.xml b/escheduler-alert/pom.xml index be8b5fbb6d..cda2488c36 100644 --- a/escheduler-alert/pom.xml +++ b/escheduler-alert/pom.xml @@ -4,7 +4,7 @@ cn.analysys escheduler - 1.1.0-SNAPSHOT + 1.1.0 escheduler-alert jar diff --git a/escheduler-api/pom.xml b/escheduler-api/pom.xml index b0d92d54a8..b3d9fc53fd 100644 --- a/escheduler-api/pom.xml +++ b/escheduler-api/pom.xml @@ -3,7 +3,7 @@ cn.analysys escheduler - 1.1.0-SNAPSHOT + 1.1.0 escheduler-api jar diff --git a/escheduler-common/pom.xml b/escheduler-common/pom.xml index 35b025b1d8..cc2bb36717 100644 --- a/escheduler-common/pom.xml +++ b/escheduler-common/pom.xml @@ -4,7 +4,7 @@ escheduler cn.analysys - 1.1.0-SNAPSHOT + 1.1.0 escheduler-common escheduler-common diff --git a/escheduler-dao/pom.xml b/escheduler-dao/pom.xml index 4d8fb6912e..3eb6dbf3e0 100644 --- a/escheduler-dao/pom.xml +++ b/escheduler-dao/pom.xml @@ -4,7 +4,7 @@ cn.analysys escheduler - 1.1.0-SNAPSHOT + 1.1.0 escheduler-dao escheduler-dao diff --git a/escheduler-rpc/pom.xml b/escheduler-rpc/pom.xml index e3d7c91a92..4687d1e462 100644 --- a/escheduler-rpc/pom.xml +++ b/escheduler-rpc/pom.xml @@ -4,7 +4,7 @@ escheduler cn.analysys - 1.1.0-SNAPSHOT + 1.1.0 4.0.0 diff --git a/escheduler-server/pom.xml b/escheduler-server/pom.xml index 7f149278c8..ac9a312734 100644 --- a/escheduler-server/pom.xml +++ b/escheduler-server/pom.xml @@ -3,7 +3,7 @@ escheduler cn.analysys - 1.1.0-SNAPSHOT + 1.1.0 escheduler-server escheduler-server diff --git a/pom.xml b/pom.xml index a97650aafb..93ac6f8ee9 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 cn.analysys escheduler - 1.1.0-SNAPSHOT + 1.1.0 pom escheduler http://maven.apache.org @@ -382,7 +382,7 @@ scm:git:https://github.com/analysys/EasyScheduler.git scm:git:https://github.com/analysys/EasyScheduler.git https://github.com/analysys/EasyScheduler.git - HEAD + 1.1.0-preview From 32c6666c2807694e61e15ef952fb3accb3bcc53b Mon Sep 17 00:00:00 2001 From: lgcareer <18610854716@163.com> Date: Tue, 16 Jul 2019 11:27:36 +0800 Subject: [PATCH 12/16] [maven-release-plugin] prepare for next development iteration --- escheduler-alert/pom.xml | 2 +- escheduler-api/pom.xml | 2 +- escheduler-common/pom.xml | 2 +- escheduler-dao/pom.xml | 2 +- escheduler-rpc/pom.xml | 2 +- escheduler-server/pom.xml | 2 +- pom.xml | 4 ++-- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/escheduler-alert/pom.xml b/escheduler-alert/pom.xml index cda2488c36..be8b5fbb6d 100644 --- a/escheduler-alert/pom.xml +++ b/escheduler-alert/pom.xml @@ -4,7 +4,7 @@ cn.analysys escheduler - 1.1.0 + 1.1.0-SNAPSHOT escheduler-alert jar diff --git a/escheduler-api/pom.xml b/escheduler-api/pom.xml index b3d9fc53fd..b0d92d54a8 100644 --- a/escheduler-api/pom.xml +++ b/escheduler-api/pom.xml @@ -3,7 +3,7 @@ cn.analysys escheduler - 1.1.0 + 1.1.0-SNAPSHOT escheduler-api jar diff --git a/escheduler-common/pom.xml b/escheduler-common/pom.xml index cc2bb36717..35b025b1d8 100644 --- a/escheduler-common/pom.xml +++ b/escheduler-common/pom.xml @@ -4,7 +4,7 @@ escheduler cn.analysys - 1.1.0 + 1.1.0-SNAPSHOT escheduler-common escheduler-common diff --git a/escheduler-dao/pom.xml b/escheduler-dao/pom.xml index 3eb6dbf3e0..4d8fb6912e 100644 --- a/escheduler-dao/pom.xml +++ b/escheduler-dao/pom.xml @@ -4,7 +4,7 @@ cn.analysys escheduler - 1.1.0 + 1.1.0-SNAPSHOT escheduler-dao escheduler-dao diff --git a/escheduler-rpc/pom.xml b/escheduler-rpc/pom.xml index 4687d1e462..e3d7c91a92 100644 --- a/escheduler-rpc/pom.xml +++ b/escheduler-rpc/pom.xml @@ -4,7 +4,7 @@ escheduler cn.analysys - 1.1.0 + 1.1.0-SNAPSHOT 4.0.0 diff --git a/escheduler-server/pom.xml b/escheduler-server/pom.xml index ac9a312734..7f149278c8 100644 --- a/escheduler-server/pom.xml +++ b/escheduler-server/pom.xml @@ -3,7 +3,7 @@ escheduler cn.analysys - 1.1.0 + 1.1.0-SNAPSHOT escheduler-server escheduler-server diff --git a/pom.xml b/pom.xml index 93ac6f8ee9..a97650aafb 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 cn.analysys escheduler - 1.1.0 + 1.1.0-SNAPSHOT pom escheduler http://maven.apache.org @@ -382,7 +382,7 @@ scm:git:https://github.com/analysys/EasyScheduler.git scm:git:https://github.com/analysys/EasyScheduler.git https://github.com/analysys/EasyScheduler.git - 1.1.0-preview + HEAD From 6ad22dab5343554f3368fa85da3702f3b4575f01 Mon Sep 17 00:00:00 2001 From: lenboo Date: Tue, 16 Jul 2019 11:36:36 +0800 Subject: [PATCH 13/16] update 1.1.0 documents --- docs/zh_CN/1.1.0-release.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/zh_CN/1.1.0-release.md b/docs/zh_CN/1.1.0-release.md index ae17c7d0ee..87084169d6 100644 --- a/docs/zh_CN/1.1.0-release.md +++ b/docs/zh_CN/1.1.0-release.md @@ -10,6 +10,8 @@ Easy Scheduler 1.1.0是1.x系列中的第五个版本。 - [[EasyScheduler-398](https://github.com/analysys/EasyScheduler/issues/398)]管理员,有租户(install.sh设置默认租户),可以创建资源、项目和数据源(限制有一个管理员) - [[EasyScheduler-293](https://github.com/analysys/EasyScheduler/issues/293)]点击运行流程时候选择的参数,没有地方可查看,也没有保存 - [[EasyScheduler-401](https://github.com/analysys/EasyScheduler/issues/401)]定时很容易定时每秒一次,定时完成以后可以在页面显示一下下次触发时间 +- [[EasyScheduler-493](https://github.com/analysys/EasyScheduler/pull/493)]add datasource kerberos auth and FAQ modify and add resource upload s3 + 增强: === @@ -47,8 +49,7 @@ Easy Scheduler 1.1.0是1.x系列中的第五个版本。 === 最后但最重要的是,没有以下伙伴的贡献就没有新版本的诞生: -Baoqi, jimmy201602, samz406, petersear, millionfor, hyperknob, fanguanqun, yangqinlong, qq389401879, chgxtony, Stanfan, lfyee, thisnew, hujiang75277381, sunnyingit, lgbo-ustc, - ivivi, lzy305, JackIllkid, telltime, lipengbo2018, wuchunfu, telltime +Baoqi, jimmy201602, samz406, petersear, millionfor, hyperknob, fanguanqun, yangqinlong, qq389401879, chgxtony, Stanfan, lfyee, thisnew, hujiang75277381, sunnyingit, lgbo-ustc, ivivi, lzy305, JackIllkid, telltime, lipengbo2018, wuchunfu, telltime 以及微信群里众多的热心伙伴!在此非常感谢! From bd2a35ab45ae811791c8cf2ca1864e5dfa6efe22 Mon Sep 17 00:00:00 2001 From: qiaozhanwei <825193156@qq.com> Date: Tue, 16 Jul 2019 14:22:24 +0800 Subject: [PATCH 14/16] update doc --- docs/zh_CN/后端部署文档.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/zh_CN/后端部署文档.md b/docs/zh_CN/后端部署文档.md index ea1090a1d4..e39901031d 100644 --- a/docs/zh_CN/后端部署文档.md +++ b/docs/zh_CN/后端部署文档.md @@ -15,7 +15,7 @@ * [Hive](https://staroon.pro/2017/12/09/HiveInstall/)(1.2.1) : 选装,hive任务提交需要安装 * Spark(1.x,2.x) : 选装,Spark任务提交需要安装 * PostgreSQL(8.2.15+) : 选装,PostgreSQL PostgreSQL存储过程需要安装 - + ``` 注意:EasyScheduler本身不依赖Hadoop、Hive、Spark、PostgreSQL,仅是会调用他们的Client,用于对应任务的运行。 ``` @@ -36,7 +36,7 @@ escheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL #### 准备三: ssh免密配置 在部署机器和其他安装机器上配置ssh免密登录,如果要在部署机上安装调度,需要配置本机免密登录自己 - + - [将 **主机器** 和各个其它机器SSH打通](http://geek.analysys.cn/topic/113) @@ -66,7 +66,7 @@ escheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL mysql -h {host} -u {user} -p{password} -D {db} < quartz.sql ``` -* 1.0.2版本创建表和导入基础数据 +* 1.0.2 **之后** 版本创建表和导入基础数据 修改conf/dao/data_source.properties中的下列属性 ``` @@ -93,7 +93,7 @@ install.sh : 一键部署脚本 ``` - 修改权限(请将deployUser自行修改为对应部署用户),使得部署用户对escheduler-backend目录有操作权限 - + `sudo chown -R deployUser:deployUser escheduler-backend` - 修改conf/env/目录下的 `.escheduler_env.sh` 环境变量 @@ -166,11 +166,11 @@ install.sh : 一键部署脚本 ### 2.3 系统常用启停服务(服务用途请具体参见《系统架构设计》小节) * 一键停止集群所有服务 - + ` sh ./bin/stop_all.sh` * 一键开启集群所有服务 - + ` sh ./bin/start_all.sh` * 启停Master @@ -207,7 +207,7 @@ sh ./bin/escheduler-daemon.sh stop alert-server ``` ## 3、数据库升级 -数据库升级是在1.0.2版本增加的功能,执行以下命令即可自动升级数据库 +数据库升级是在1.0.2 **之后** 版本增加的功能,执行以下命令即可自动升级数据库 ``` sh ./script/upgrade_escheduler.sh ``` From d44425362da939e36aceb9f0d2bbf59f66ba52f8 Mon Sep 17 00:00:00 2001 From: lgcareer <18610854716@163.com> Date: Tue, 16 Jul 2019 14:32:19 +0800 Subject: [PATCH 15/16] [maven-release-plugin] prepare release 1.1.0-preview --- escheduler-alert/pom.xml | 2 +- escheduler-api/pom.xml | 2 +- escheduler-common/pom.xml | 2 +- escheduler-dao/pom.xml | 2 +- escheduler-rpc/pom.xml | 2 +- escheduler-server/pom.xml | 2 +- pom.xml | 4 ++-- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/escheduler-alert/pom.xml b/escheduler-alert/pom.xml index be8b5fbb6d..cda2488c36 100644 --- a/escheduler-alert/pom.xml +++ b/escheduler-alert/pom.xml @@ -4,7 +4,7 @@ cn.analysys escheduler - 1.1.0-SNAPSHOT + 1.1.0 escheduler-alert jar diff --git a/escheduler-api/pom.xml b/escheduler-api/pom.xml index b0d92d54a8..b3d9fc53fd 100644 --- a/escheduler-api/pom.xml +++ b/escheduler-api/pom.xml @@ -3,7 +3,7 @@ cn.analysys escheduler - 1.1.0-SNAPSHOT + 1.1.0 escheduler-api jar diff --git a/escheduler-common/pom.xml b/escheduler-common/pom.xml index 35b025b1d8..cc2bb36717 100644 --- a/escheduler-common/pom.xml +++ b/escheduler-common/pom.xml @@ -4,7 +4,7 @@ escheduler cn.analysys - 1.1.0-SNAPSHOT + 1.1.0 escheduler-common escheduler-common diff --git a/escheduler-dao/pom.xml b/escheduler-dao/pom.xml index 4d8fb6912e..3eb6dbf3e0 100644 --- a/escheduler-dao/pom.xml +++ b/escheduler-dao/pom.xml @@ -4,7 +4,7 @@ cn.analysys escheduler - 1.1.0-SNAPSHOT + 1.1.0 escheduler-dao escheduler-dao diff --git a/escheduler-rpc/pom.xml b/escheduler-rpc/pom.xml index e3d7c91a92..4687d1e462 100644 --- a/escheduler-rpc/pom.xml +++ b/escheduler-rpc/pom.xml @@ -4,7 +4,7 @@ escheduler cn.analysys - 1.1.0-SNAPSHOT + 1.1.0 4.0.0 diff --git a/escheduler-server/pom.xml b/escheduler-server/pom.xml index 7f149278c8..ac9a312734 100644 --- a/escheduler-server/pom.xml +++ b/escheduler-server/pom.xml @@ -3,7 +3,7 @@ escheduler cn.analysys - 1.1.0-SNAPSHOT + 1.1.0 escheduler-server escheduler-server diff --git a/pom.xml b/pom.xml index a97650aafb..93ac6f8ee9 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 cn.analysys escheduler - 1.1.0-SNAPSHOT + 1.1.0 pom escheduler http://maven.apache.org @@ -382,7 +382,7 @@ scm:git:https://github.com/analysys/EasyScheduler.git scm:git:https://github.com/analysys/EasyScheduler.git https://github.com/analysys/EasyScheduler.git - HEAD + 1.1.0-preview From bd30d48c4fce31d8eb9c9d1faec8d8f607f2124f Mon Sep 17 00:00:00 2001 From: lgcareer <18610854716@163.com> Date: Tue, 16 Jul 2019 14:32:45 +0800 Subject: [PATCH 16/16] [maven-release-plugin] prepare for next development iteration --- escheduler-alert/pom.xml | 2 +- escheduler-api/pom.xml | 2 +- escheduler-common/pom.xml | 2 +- escheduler-dao/pom.xml | 2 +- escheduler-rpc/pom.xml | 2 +- escheduler-server/pom.xml | 2 +- pom.xml | 4 ++-- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/escheduler-alert/pom.xml b/escheduler-alert/pom.xml index cda2488c36..be8b5fbb6d 100644 --- a/escheduler-alert/pom.xml +++ b/escheduler-alert/pom.xml @@ -4,7 +4,7 @@ cn.analysys escheduler - 1.1.0 + 1.1.0-SNAPSHOT escheduler-alert jar diff --git a/escheduler-api/pom.xml b/escheduler-api/pom.xml index b3d9fc53fd..b0d92d54a8 100644 --- a/escheduler-api/pom.xml +++ b/escheduler-api/pom.xml @@ -3,7 +3,7 @@ cn.analysys escheduler - 1.1.0 + 1.1.0-SNAPSHOT escheduler-api jar diff --git a/escheduler-common/pom.xml b/escheduler-common/pom.xml index cc2bb36717..35b025b1d8 100644 --- a/escheduler-common/pom.xml +++ b/escheduler-common/pom.xml @@ -4,7 +4,7 @@ escheduler cn.analysys - 1.1.0 + 1.1.0-SNAPSHOT escheduler-common escheduler-common diff --git a/escheduler-dao/pom.xml b/escheduler-dao/pom.xml index 3eb6dbf3e0..4d8fb6912e 100644 --- a/escheduler-dao/pom.xml +++ b/escheduler-dao/pom.xml @@ -4,7 +4,7 @@ cn.analysys escheduler - 1.1.0 + 1.1.0-SNAPSHOT escheduler-dao escheduler-dao diff --git a/escheduler-rpc/pom.xml b/escheduler-rpc/pom.xml index 4687d1e462..e3d7c91a92 100644 --- a/escheduler-rpc/pom.xml +++ b/escheduler-rpc/pom.xml @@ -4,7 +4,7 @@ escheduler cn.analysys - 1.1.0 + 1.1.0-SNAPSHOT 4.0.0 diff --git a/escheduler-server/pom.xml b/escheduler-server/pom.xml index ac9a312734..7f149278c8 100644 --- a/escheduler-server/pom.xml +++ b/escheduler-server/pom.xml @@ -3,7 +3,7 @@ escheduler cn.analysys - 1.1.0 + 1.1.0-SNAPSHOT escheduler-server escheduler-server diff --git a/pom.xml b/pom.xml index 93ac6f8ee9..a97650aafb 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 cn.analysys escheduler - 1.1.0 + 1.1.0-SNAPSHOT pom escheduler http://maven.apache.org @@ -382,7 +382,7 @@ scm:git:https://github.com/analysys/EasyScheduler.git scm:git:https://github.com/analysys/EasyScheduler.git https://github.com/analysys/EasyScheduler.git - 1.1.0-preview + HEAD