Commit c5dd1116 authored by baoliang's avatar baoliang
Browse files

merge from upstream

parents c0c1468d d8ff5e32
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ Lodash 高性能的 JavaScript 实用工具库
- #### Node安装
Node包下载 (注意版本 8.9.4) `https://nodejs.org/download/release/v8.9.4/` 


- #### 前端项目构建
用命令行模式 `cd`  进入 `escheduler-ui`项目目录并执行 `npm install` 拉取项目依赖包

@@ -31,6 +32,16 @@ Node包下载 (注意版本 8.9.4) `https://nodejs.org/download/release/v8.9.4/`
> 运行 `cnpm install` 


- 新建一个`.env`文件,用于跟后端交互的接口

`escheduler-ui`目录下新建一个`.env`文件,在文件里添加后端服务的ip地址和端口,用于跟后端交互,`.env`文件内容如下:
```
# 代理的接口地址(自行修改)
API_BASE = http://192.168.xx.xx:12345

# 如果您需要用ip访问项目可以把 "#" 号去掉(例)
#DEV_HOST = 192.168.xx.xx
```

> #####  !!!这里特别注意 项目如果在拉取依赖包的过程中报 " node-sass error " 错误,请在执行完后再次执行以下命令
```
@@ -49,6 +60,7 @@ npm install node-sass --unsafe-perm //单独安装node-sass依赖

再拷贝到服务器对应的目录下(前端服务静态页面存放目录)


访问地址 `http://localhost:8888/#/` 


+1 −10
Original line number Diff line number Diff line
@@ -3,23 +3,14 @@
前端有3种部署方式,分别为自动化部署,手动部署和编译源码部署

## 1、准备工作
#### 准备一:下载安装包
#### 下载安装包

目前最新安装包版本是1.0.1,下载地址: [码云下载](https://gitee.com/easyscheduler/EasyScheduler/attach_files/)

下载escheduler-ui-1.0.1.tar.gz后,解压后会产生dist目录,进入dist目录
> cd dist  

#### 准备二:新建一个`.env`文件

在dist目录下新建一个`.env`文件,在文件里添加后端服务的ip地址和端口,用于跟后端交互,`.env`文件内容如下:
```
# 代理的接口地址(自行修改)
API_BASE = http://192.168.xx.xx:12345

# 如果您需要用ip访问项目可以把 "#" 号去掉(例)
#DEV_HOST = 192.168.xx.xx
```

## 2、部署
以下两种方式任选其一部署即可,推荐自动化部署
+7 −2
Original line number Diff line number Diff line
@@ -148,11 +148,11 @@ install.sh : 一键部署脚本

* 一键停止集群所有服务
   
   ` sh ./script/stop_all.sh`
   ` sh ./bin/stop_all.sh`
   
* 一键开启集群所有服务
   
   ` sh ./script/start_all.sh`
   ` sh ./bin/start_all.sh`

* 启停Master

@@ -186,3 +186,7 @@ sh ./bin/escheduler-daemon.sh stop logger-server
sh ./bin/escheduler-daemon.sh start alert-server
sh ./bin/escheduler-daemon.sh stop alert-server
```

## 3、数据库升级
数据库升级是在1.0.2版本增加的功能,执行以下命令即可自动升级数据库。
sh ./script/upgrade_escheduler.sh
 No newline at end of file
+22 −8
Original line number Diff line number Diff line
@@ -30,12 +30,17 @@ public class EschedulerManager {
    UpgradeDao upgradeDao = UpgradeDao.getInstance();

    public void initEscheduler() {
        // Determines whether the escheduler table structure has been init
        if(upgradeDao.isExistsTable("t_escheduler_version") || upgradeDao.isExistsTable("t_escheduler_queue")) {
            logger.info("The database has been initialized. Skip the initialization step");
            return;
        }
        this.initEschedulerSchema();
    }

    public void initEschedulerSchema() {

        logger.info("Start initializing the ark manager mysql table structure");
        logger.info("Start initializing the escheduler manager mysql table structure");
        upgradeDao.initEschedulerSchema();
    }

@@ -52,15 +57,20 @@ public class EschedulerManager {
        }else {

            String version = "";
            // The target version of the upgrade
            String schemaVersion = "";
            for(String schemaDir : schemaList) {
            // Gets the version of the current system
            if (upgradeDao.isExistsTable("t_escheduler_version")) {
                version = upgradeDao.getCurrentVersion();
                }else {
            }else if(upgradeDao.isExistsColumn("t_escheduler_queue","create_time")){
                version = "1.0.1";
            }else if(upgradeDao.isExistsTable("t_escheduler_queue")){
                version = "1.0.0";
            }else{
                logger.error("Unable to determine current software version, so cannot upgrade");
            }
            // The target version of the upgrade
            String schemaVersion = "";
            for(String schemaDir : schemaList) {


                schemaVersion = schemaDir.split("_")[0];
                if(SchemaUtils.isAGreatVersion(schemaVersion , version)) {
@@ -70,7 +80,11 @@ public class EschedulerManager {

                    logger.info("Begin upgrading escheduler's mysql table structure");
                    upgradeDao.upgradeEscheduler(schemaDir);

                    if(SchemaUtils.isAGreatVersion(version,"1.0.1")){
                        version = upgradeDao.getCurrentVersion();
                    }else {
                        version = schemaVersion;
                    }
                }

            }
+52 −5
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import cn.escheduler.common.utils.MysqlUtil;
import cn.escheduler.common.utils.ScriptRunner;
import cn.escheduler.dao.AbstractBaseDao;
import cn.escheduler.dao.datasource.ConnectionFactory;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@@ -33,6 +34,7 @@ public class UpgradeDao extends AbstractBaseDao {

    public static final Logger logger = LoggerFactory.getLogger(UpgradeDao.class);
    private static final String T_VERSION_NAME = "t_escheduler_version";
    private static final String rootDir = System.getProperty("user.dir");

    @Override
    protected void init() {
@@ -64,6 +66,10 @@ public class UpgradeDao extends AbstractBaseDao {

    private void runInitEschedulerDML() {
        Connection conn = null;
        if (StringUtils.isEmpty(rootDir)) {
            throw new RuntimeException("Environment variable user.dir not found");
        }
        String mysqlSQLFilePath = rootDir + "/sql/create/release-1.0.0_schema/mysql/escheduler_dml.sql";
        try {
            conn = ConnectionFactory.getDataSource().getConnection();
            conn.setAutoCommit(false);
@@ -71,7 +77,7 @@ public class UpgradeDao extends AbstractBaseDao {
            // Execute the ark_manager_dml.sql script to import the data related to escheduler

            ScriptRunner initScriptRunner = new ScriptRunner(conn, false, true);
            Reader initSqlReader = new FileReader(new File("sql/create/release-1.0.0_schema/mysql/escheduler_dml.sql"));
            Reader initSqlReader = new FileReader(new File(mysqlSQLFilePath));
            initScriptRunner.runScript(initSqlReader);

            conn.commit();
@@ -100,11 +106,15 @@ public class UpgradeDao extends AbstractBaseDao {

    private void runInitEschedulerDDL() {
        Connection conn = null;
        if (StringUtils.isEmpty(rootDir)) {
            throw new RuntimeException("Environment variable user.dir not found");
        }
        String mysqlSQLFilePath = rootDir + "/sql/create/release-1.0.0_schema/mysql/escheduler_ddl.sql";
        try {
            conn = ConnectionFactory.getDataSource().getConnection();
            // Execute the escheduler_ddl.sql script to create the table structure of escheduler
            ScriptRunner initScriptRunner = new ScriptRunner(conn, true, true);
            Reader initSqlReader = new FileReader(new File("sql/create/release-1.0.0_schema/mysql/escheduler_ddl.sql"));
            Reader initSqlReader = new FileReader(new File(mysqlSQLFilePath));
            initScriptRunner.runScript(initSqlReader);

        } catch (IOException e) {
@@ -122,7 +132,11 @@ public class UpgradeDao extends AbstractBaseDao {

    }


    /**
     * Determines whether a table exists
     * @param tableName
     * @return
     */
    public boolean isExistsTable(String tableName) {
        Connection conn = null;
        try {
@@ -144,6 +158,33 @@ public class UpgradeDao extends AbstractBaseDao {

    }

    /**
     * Determines whether a field exists in the specified table
     * @param tableName
     * @param columnName
     * @return
     */
    public boolean isExistsColumn(String tableName,String columnName) {
        Connection conn = null;
        try {
            conn = ConnectionFactory.getDataSource().getConnection();
            ResultSet rs = conn.getMetaData().getColumns(null,null,tableName,columnName);
            if (rs.next()) {
                return true;
            } else {
                return false;
            }

        } catch (SQLException e) {
            logger.error(e.getMessage(),e);
            throw new RuntimeException(e.getMessage(),e);
        } finally {
            MysqlUtil.realeaseResource(null, null, conn);

        }

    }


    public String getCurrentVersion() {
        String sql = String.format("select version from %s",T_VERSION_NAME);
@@ -182,7 +223,10 @@ public class UpgradeDao extends AbstractBaseDao {

    private void upgradeEschedulerDML(String schemaDir) {
        String schemaVersion = schemaDir.split("_")[0];
        String mysqlSQLFilePath = "sql/upgrade/" + schemaDir + "/mysql/escheduler_dml.sql";
        if (StringUtils.isEmpty(rootDir)) {
            throw new RuntimeException("Environment variable user.dir not found");
        }
        String mysqlSQLFilePath = rootDir + "/sql/upgrade/" + schemaDir + "/mysql/escheduler_dml.sql";
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
@@ -239,7 +283,10 @@ public class UpgradeDao extends AbstractBaseDao {
    }

    private void upgradeEschedulerDDL(String schemaDir) {
        String mysqlSQLFilePath = "sql/upgrade/" + schemaDir + "/mysql/escheduler_ddl.sql";
        if (StringUtils.isEmpty(rootDir)) {
            throw new RuntimeException("Environment variable user.dir not found");
        }
        String mysqlSQLFilePath = rootDir + "/sql/upgrade/" + schemaDir + "/mysql/escheduler_ddl.sql";
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
Loading