xiaochun.liu 5 роки тому
батько
коміт
7a11d39f10

+ 53 - 0
.github/workflows/ci_e2e.yml

@@ -0,0 +1,53 @@
+#
+# 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.
+#
+
+on: ["push", "pull_request"]
+env:
+  DOCKER_DIR: ./docker
+  LOG_DIR: /tmp/dolphinscheduler
+
+name: e2e Test
+
+jobs:
+
+  build:
+    name: Test
+    runs-on: ubuntu-latest
+    steps:
+
+      - uses: actions/checkout@v1
+        with:
+          submodules: true
+      - uses: actions/cache@v1
+        with:
+          path: ~/.m2/repository
+          key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+          restore-keys: |
+            ${{ runner.os }}-maven-
+      - name: Build Image
+        run: export VERSION=latest && sh ./dockerfile/hooks/build
+      - name: Docker Run
+        run: docker run -dit -e POSTGRESQL_USERNAME=test -e POSTGRESQL_PASSWORD=test -p 8888:8888 dolphinscheduler all
+      - name: Check Server Status
+        run: sh ./dockerfile/hooks/check
+      - name: Run e2e Test
+        run: echo "Run e2e Test"
+      - name: Collect logs
+        run: |
+          mkdir -p ${LOG_DIR}
+          docker logs dolphinscheduler > ${LOG_DIR}/dolphinscheduler.txt
+        continue-on-error: true

+ 1 - 1
dockerfile/README.md

@@ -12,7 +12,7 @@ Official Website: https://dolphinscheduler.apache.org
 
 #### You can start a dolphinscheduler instance
 ```
-$ docker run -d --name dolphinscheduler \ 
+$ docker run -dit --name dolphinscheduler \ 
 -e POSTGRESQL_USERNAME=test -e POSTGRESQL_PASSWORD=test \
 -p 8888:8888 \
 dolphinscheduler all

+ 13 - 2
dockerfile/hooks/build

@@ -18,11 +18,22 @@
 echo "------ dolphinscheduler start - build -------"
 printenv
 
+if [[ "${VERSION}x" = "x" ]]; then
+    VERSION=`cat $(pwd)/pom.xml| grep "SNAPSHOT</version>" | awk -F "-SNAPSHOT" '{print $1}' | awk -F ">" '{print $2}'`
+fi
+
+if [[ "${DOCKER_REPO}x" = "x" ]]; then
+    DOCKER_REPO='dolphinscheduler'
+fi
+
+echo "Version: $VERSION"
+echo "Repo: $DOCKER_REPO"
+
 echo -e "Current Directory is $(pwd)\n"
 
 # maven package(Project Directory)
-echo -e "mvn clean compile package -Prelease"
-mvn clean compile package -Prelease
+echo -e "mvn -B clean compile package -Prelease -Dmaven.test.skip=true"
+mvn -B clean compile package -Prelease -Dmaven.test.skip=true
 
 # mv dolphinscheduler-bin.tar.gz file to dockerfile directory
 echo -e "mv $(pwd)/dolphinscheduler-dist/target/apache-dolphinscheduler-incubating-${VERSION}-SNAPSHOT-dolphinscheduler-bin.tar.gz $(pwd)/dockerfile/\n"

+ 26 - 0
dockerfile/hooks/check

@@ -0,0 +1,26 @@
+#!/bin/bash
+#
+# 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.
+#
+echo "------ dolphinscheduler check - server - status -------"
+server_num=$(docker top `docker container list | grep startup | awk '{print $1}'`| grep java | grep "dolphinscheduler" | awk -F 'classpath ' '{print $2}' | awk '{print $2}' | sort | uniq -c | wc -l)
+if [ $server_num -eq 5 ]
+then
+    echo "Server all start successfully"
+else
+    echo "Server start failed "$server_num
+    exit 1
+fi

+ 3 - 1
dockerfile/startup.sh

@@ -187,4 +187,6 @@ case "$1" in
     ;;
 esac
 
-exec tee ${LOGFILE}
+echo "tee begin"
+exec tee ${LOGFILE}
+