ソースを参照

close 579, add combined server to simplify test

Baoqi 5 年 前
コミット
1b5b1e25af

+ 5 - 3
escheduler-api/pom.xml

@@ -9,9 +9,11 @@
   <packaging>jar</packaging>
 
   <dependencies>
-
-
-    <dependency>
+      <dependency>
+          <groupId>cn.analysys</groupId>
+          <artifactId>escheduler-alert</artifactId>
+      </dependency>
+      <dependency>
       <groupId>cn.analysys</groupId>
       <artifactId>escheduler-server</artifactId>
       <exclusions>

+ 54 - 0
escheduler-api/src/main/java/cn/escheduler/api/CombinedApplicationServer.java

@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package cn.escheduler.api;
+
+import cn.escheduler.alert.AlertServer;
+import cn.escheduler.dao.ProcessDao;
+import cn.escheduler.server.master.MasterServer;
+import cn.escheduler.server.rpc.LoggerServer;
+import cn.escheduler.server.worker.WorkerServer;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.web.servlet.ServletComponentScan;
+import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.context.annotation.ComponentScan;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+@SpringBootApplication
+@ServletComponentScan
+@ComponentScan("cn.escheduler")
+@EnableSwagger2
+public class CombinedApplicationServer extends SpringBootServletInitializer {
+
+    public static void main(String[] args) throws Exception {
+
+        ConfigurableApplicationContext context = SpringApplication.run(ApiApplicationServer.class, args);
+        ProcessDao processDao = context.getBean(ProcessDao.class);
+        MasterServer master = new MasterServer(processDao);
+        master.run(processDao);
+
+        WorkerServer workerServer = new WorkerServer();
+        workerServer.run();
+
+        LoggerServer server = new LoggerServer();
+        server.start();
+
+        AlertServer alertServer = AlertServer.getInstance();
+        alertServer.start();
+    }
+}

+ 1 - 0
escheduler-api/src/main/java/cn/escheduler/api/configuration/AppConfiguration.java

@@ -84,6 +84,7 @@ public class AppConfiguration implements WebMvcConfigurer {
     registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
     registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
     registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
+    registry.addResourceHandler("/ui/**").addResourceLocations("file:ui/");
   }
 
   @Override

+ 4 - 0
escheduler-api/src/main/java/cn/escheduler/api/controller/MetricsController.java

@@ -0,0 +1,4 @@
+package cn.escheduler.api.controller;
+
+public class MetricsController {
+}

+ 54 - 0
escheduler-api/src/main/resources/combined_logback.xml

@@ -0,0 +1,54 @@
+<!-- Logback configuration. See http://logback.qos.ch/manual/index.html -->
+<configuration scan="true" scanPeriod="120 seconds">
+    <property name="log.base" value="logs"/>
+    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+        <encoder>
+            <pattern>
+                %highlight([%level]) %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{10}:[%line] - %msg%n
+            </pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+    <appender name="TASKLOGFILE" class="cn.escheduler.server.worker.log.TaskLogAppender">
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>INFO</level>
+        </filter>
+        <filter class="cn.escheduler.server.worker.log.TaskLogFilter"></filter>
+        <file>${log.base}/{processDefinitionId}/{processInstanceId}/{taskInstanceId}.log</file>
+        <encoder>
+            <pattern>
+                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
+            </pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <append>true</append>
+    </appender>
+
+    <appender name="COMBINEDLOGFILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <file>${log.base}/escheduler-combined.log</file>
+        <filter class="cn.escheduler.server.worker.log.WorkerLogFilter">
+            <level>INFO</level>
+        </filter>
+
+        <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+            <fileNamePattern>${log.base}/escheduler-combined.%d{yyyy-MM-dd_HH}.%i.log</fileNamePattern>
+            <maxHistory>168</maxHistory>
+            <maxFileSize>200MB</maxFileSize>
+        </rollingPolicy>
+             
+        <encoder>
+            <pattern>
+                [%level] %date{yyyy-MM-dd HH:mm:ss.SSS} %logger{96}:[%line] - %msg%n
+            </pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+          
+    </appender>
+
+
+    <root level="INFO">
+        <appender-ref ref="STDOUT"/>
+        <appender-ref ref="TASKLOGFILE"/>
+        <appender-ref ref="COMBINEDLOGFILE"/>
+    </root>
+</configuration>

+ 1 - 1
escheduler-server/src/main/java/cn/escheduler/server/rpc/LoggerServer.java

@@ -44,7 +44,7 @@ public class LoggerServer {
      */
     private Server server;
 
-    private void start() throws IOException {
+    public void start() throws IOException {
 	    /* The port on which the server should run */
         int port = Constants.RPC_PORT;
         server = ServerBuilder.forPort(port)

+ 26 - 0
escheduler-ui/build/webpack.config.combined.js

@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+const merge = require('webpack-merge')
+const prodConfig = require('./webpack.config.prod')
+
+const config = merge.smart(prodConfig, {
+  output: {
+    publicPath: '/escheduler/ui/'
+  }
+})
+
+module.exports = config

+ 2 - 1
escheduler-ui/package.json

@@ -10,7 +10,8 @@
     "lint": "standard \"**/*.{js,vue}\"",
     "lint:fix": "standard \"**/*.{js,vue}\" --fix",
     "start": "npm run dev",
-    "combo": "node ./build/combo.js"
+    "combo": "node ./build/combo.js",
+    "build:combined": "npm run clean && cross-env NODE_ENV=production webpack --config ./build/webpack.config.combined.js"
   },
   "dependencies": {
     "autoprefixer": "^9.1.0",

+ 4 - 4
escheduler-ui/src/view/common/meta.inc

@@ -11,12 +11,12 @@
 <meta name="theme-color" content="#4a8dee">
 <meta name="msapplication-navbutton-color" content="#4a8dee">
 <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1">
-<link rel="shortcut icon" href="/images/favicon.ico"/>
-<link href="/combo/1.0.0/base.css?v1.0.0.1" rel="stylesheet">
-<link href="/combo/1.0.0/3rd.css?v1.0.0.1" rel="stylesheet">
+<link rel="shortcut icon" href="images/favicon.ico"/>
+<link href="combo/1.0.0/base.css?v1.0.0.1" rel="stylesheet">
+<link href="combo/1.0.0/3rd.css?v1.0.0.1" rel="stylesheet">
 
 <!--[if lt IE 9]>
-<script src="/combo/1.0.0/es5.js"></script>
+<script src="combo/1.0.0/es5.js"></script>
 <![endif]-->
 
 <script>

+ 1 - 1
escheduler-ui/src/view/common/outro.inc

@@ -2,7 +2,7 @@
 <!--<script src="https://s1.analysys.cn/libs/??jqueryui/1.12.1/jquery-ui.min.js,twitter-bootstrap/3.3.7/js/bootstrap.min.js,jsPlumb/2.8.5/js/jsplumb.min.js"></script> -->
 <!--<script src="https://s1.analysys.cn/libs/??highlight.js/9.13.1/highlight.min.js,element-ui/2.4.9/index.js,clipboard.js/2.0.1/clipboard.min.js,d3/3.3.6/d3.min.js,dayjs/1.7.8/dayjs.min.js"></script> -->
 
-<script src="/combo/1.0.0/3rd.js?v1.0.0.1" type="text/javascript"></script>
+<script src="combo/1.0.0/3rd.js?v1.0.0.1" type="text/javascript"></script>
 
 
 

+ 8 - 0
package.xml

@@ -34,6 +34,14 @@
 			<outputDirectory>.</outputDirectory>
 		</fileSet>
 
+		<fileSet>
+			<directory>escheduler-ui/dist</directory>
+			<includes>
+				<include>**/*.*</include>
+			</includes>
+			<outputDirectory>./ui</outputDirectory>
+		</fileSet>
+
 		<fileSet>
 			<directory>sql</directory>
 			<includes>