This is an automated email from the ASF dual-hosted git repository.
fanjia pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new a89b86cef2 [Improve][CI] Optimizing CI time cost (#7997)
a89b86cef2 is described below
commit a89b86cef22a4deb1d4395323a58ae56915247de
Author: Jia Fan <[email protected]>
AuthorDate: Mon Nov 11 20:41:40 2024 +0800
[Improve][CI] Optimizing CI time cost (#7997)
---
.github/workflows/backend.yml | 123 ++++++++++++--------
.github/workflows/notify_test_workflow.yml | 2 +-
.github/workflows/schedule_backend.yml | 127 ++-------------------
.../e2e/common/container/TestContainerId.java | 19 +--
.../seatunnel/e2e/common/util/ContainerUtil.java | 34 +++++-
.../seatunnel/engine/e2e/joblog/JobLogIT.java | 7 +-
.../engine/core/job/ExecutionAddress.java | 4 +-
.../seatunnel/engine/core/job/JobDAGInfo.java | 1 +
.../seatunnel/engine/server/dag/DAGUtils.java | 3 +
.../engine/server/master/JobHistoryService.java | 33 +++---
.../seatunnel/engine/server/master/JobMaster.java | 3 +
.../engine/server/rest/service/BaseService.java | 4 +
tools/update_modules_check/update_modules_check.py | 4 +
13 files changed, 172 insertions(+), 192 deletions(-)
diff --git a/.github/workflows/backend.yml b/.github/workflows/backend.yml
index 67b2511f10..6f51b0a9e9 100644
--- a/.github/workflows/backend.yml
+++ b/.github/workflows/backend.yml
@@ -19,11 +19,19 @@ name: Backend
on:
workflow_call:
+ inputs:
+ TEST_IN_PR:
+ required: false
+ type: string
+ default: 'true'
concurrency:
group: backend-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
+env:
+ TEST_IN_PR: ${{ inputs.TEST_IN_PR }}
+
jobs:
license-header:
name: License header
@@ -137,7 +145,7 @@ jobs:
echo "engine-e2e=$true_or_false" >> $GITHUB_OUTPUT
echo "engine-e2e_files=$file_list" >> $GITHUB_OUTPUT
- api_files=`python tools/update_modules_check/check_file_updates.py
ua $workspace apache/dev origin/$current_branch "seatunnel-api/**"
"seatunnel-common/**" "seatunnel-config/**" "seatunnel-engine/**"
"seatunnel-core/**" "seatunnel-e2e/seatunnel-e2e-common/**"
"seatunnel-formats/**" "seatunnel-plugin-discovery/**"
"seatunnel-transforms-v2/**" "seatunnel-translation/**"
"seatunnel-e2e/seatunnel-transforms-v2-e2e/**" "pom.xml" "**/workflows/**"
"tools/**" "seatunnel-dist/**"`
+ api_files=`python tools/update_modules_check/check_file_updates.py
ua $workspace apache/dev origin/$current_branch "seatunnel-api/**"
"seatunnel-common/**" "seatunnel-config/**" "seatunnel-core/**"
"seatunnel-e2e/seatunnel-e2e-common/**" "seatunnel-formats/**"
"seatunnel-plugin-discovery/**" "seatunnel-transforms-v2/**"
"seatunnel-translation/**" "seatunnel-e2e/seatunnel-transforms-v2-e2e/**"
"pom.xml" "**/workflows/**" "tools/**" "seatunnel-dist/**"`
true_or_false=${api_files%%$'\n'*}
file_list=${api_files#*$'\n'}
if [[ $repository_owner == 'apache' ]];then
@@ -224,7 +232,7 @@ jobs:
- name: Make integration test modules
id: it-modules
timeout-minutes: 60
- if: ${{ steps.filter.outputs.api == 'false' &&
(steps.engine-modules.outputs.modules != '' ||
steps.cv2-modules.outputs.modules != '' ||
steps.cv2-e2e-modules.outputs.modules != '' ||
steps.cv2-flink-e2e-modules.outputs.modules != '' ||
steps.cv2-spark-e2e-modules.outputs.modules != '' ||
steps.engine-e2e-modules.outputs.modules != '') }}
+ if: ${{ steps.filter.outputs.api == 'false' &&
(steps.engine-modules.outputs.modules != '' ||
steps.cv2-modules.outputs.modules != '' ||
steps.cv2-e2e-modules.outputs.modules != '' ||
steps.cv2-flink-e2e-modules.outputs.modules != '' ||
steps.cv2-spark-e2e-modules.outputs.modules != '') }}
run: |
modules='${{ steps.cv2-e2e-modules.outputs.modules }}${{
steps.cv2-flink-e2e-modules.outputs.modules }}${{
steps.cv2-spark-e2e-modules.outputs.modules }}${{
steps.engine-e2e-modules.outputs.modules }}${{
steps.engine-modules.outputs.modules }}${{ steps.cv2-modules.outputs.modules }}'
modules=${modules: 1}
@@ -270,7 +278,7 @@ jobs:
max_attempts: 3
retry_on: error
command: |
- ./mvnw -B -q install -DskipTests -D"maven.test.skip"=true
-D"maven.javadoc.skip"=true -D"license.skipAddThirdParty"
+ ./mvnw -B install -DskipTests -D"maven.test.skip"=true
-D"maven.javadoc.skip"=true -D"license.skipAddThirdParty"
- name: Check Dependencies Licenses
run: tools/dependencies/checkLicense.sh
@@ -376,7 +384,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run updated modules integration test (part-1)
- if: needs.changes.outputs.api == 'false' &&
needs.changes.outputs.it-modules != ''
run: |
sub_modules=`python
tools/update_modules_check/update_modules_check.py sub_update_it_module
${{needs.changes.outputs.it-modules}} 8 0`
if [ ! -z $sub_modules ]; then
@@ -407,7 +414,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run updated modules integration test (part-2)
- if: needs.changes.outputs.api == 'false' &&
needs.changes.outputs.it-modules != ''
run: |
sub_modules=`python
tools/update_modules_check/update_modules_check.py sub_update_it_module
${{needs.changes.outputs.it-modules}} 8 1`
if [ ! -z $sub_modules ]; then
@@ -438,7 +444,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run updated modules integration test (part-3)
- if: needs.changes.outputs.api == 'false' &&
needs.changes.outputs.it-modules != ''
run: |
sub_modules=`python
tools/update_modules_check/update_modules_check.py sub_update_it_module
${{needs.changes.outputs.it-modules}} 8 2`
if [ ! -z $sub_modules ]; then
@@ -469,7 +474,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run updated modules integration test (part-4)
- if: needs.changes.outputs.api == 'false' &&
needs.changes.outputs.it-modules != ''
run: |
sub_modules=`python
tools/update_modules_check/update_modules_check.py sub_update_it_module
${{needs.changes.outputs.it-modules}} 8 3`
if [ ! -z $sub_modules ]; then
@@ -499,7 +503,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run updated modules integration test (part-5)
- if: needs.changes.outputs.api == 'false' &&
needs.changes.outputs.it-modules != ''
run: |
sub_modules=`python
tools/update_modules_check/update_modules_check.py sub_update_it_module
${{needs.changes.outputs.it-modules}} 8 4`
if [ ! -z $sub_modules ]; then
@@ -529,7 +532,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run updated modules integration test (part-6)
- if: needs.changes.outputs.api == 'false' &&
needs.changes.outputs.it-modules != ''
run: |
sub_modules=`python
tools/update_modules_check/update_modules_check.py sub_update_it_module
${{needs.changes.outputs.it-modules}} 8 5`
if [ ! -z $sub_modules ]; then
@@ -559,7 +561,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run updated modules integration test (part-7)
- if: needs.changes.outputs.api == 'false' &&
needs.changes.outputs.it-modules != ''
run: |
sub_modules=`python
tools/update_modules_check/update_modules_check.py sub_update_it_module
${{needs.changes.outputs.it-modules}} 8 6`
if [ ! -z $sub_modules ]; then
@@ -590,7 +591,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run updated modules integration test (part-8)
- if: needs.changes.outputs.api == 'false' &&
needs.changes.outputs.it-modules != ''
run: |
sub_modules=`python
tools/update_modules_check/update_modules_check.py sub_update_it_module
${{needs.changes.outputs.it-modules}} 8 7`
if [ ! -z $sub_modules ]; then
@@ -603,7 +603,7 @@ jobs:
engine-v2-it:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true' || needs.changes.outputs.engine-e2e == 'true'
runs-on: ${{ matrix.os }}
strategy:
matrix:
@@ -621,7 +621,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run seatunnel zeta integration test
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw -T 1 -B verify -DskipUT=true -DskipIT=false
-D"license.skipAddThirdParty"=true --no-snapshot-updates -pl
:connector-seatunnel-e2e-base,:connector-console-seatunnel-e2e -am -Pci
env:
@@ -661,8 +660,11 @@ jobs:
KUBECONFIG: /etc/rancher/k3s/k3s.yaml
transform-v2-it-part-1:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true'
runs-on: ${{ matrix.os }}
+ env:
+ RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
+ RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
strategy:
matrix:
java: [ '8', '11' ]
@@ -679,7 +681,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run transform-v2 integration test (part-1)
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false
-D"license.skipAddThirdParty"=true --no-snapshot-updates -pl
:seatunnel-transforms-v2-e2e-part-1 -am -Pci
env:
@@ -687,8 +688,11 @@ jobs:
transform-v2-it-part-2:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true'
runs-on: ${{ matrix.os }}
+ env:
+ RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
+ RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
strategy:
matrix:
java: [ '8', '11' ]
@@ -705,7 +709,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run transform-v2 integration test (part-2)
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false
-D"license.skipAddThirdParty"=true --no-snapshot-updates -pl
:seatunnel-transforms-v2-e2e-part-2 -am -Pci
env:
@@ -713,8 +716,11 @@ jobs:
all-connectors-it-1:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true'
runs-on: ${{ matrix.os }}
+ env:
+ RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
+ RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
strategy:
matrix:
java: [ '8', '11' ]
@@ -731,7 +737,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run connector-v2 integration test (part-1)
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw help:evaluate -Dexpression=project.modules -q -DforceStdout
-pl :seatunnel-connector-v2-e2e >> /tmp/sub_module.txt
sub_modules=`python
tools/update_modules_check/update_modules_check.py sub /tmp/sub_module.txt`
@@ -742,8 +747,11 @@ jobs:
all-connectors-it-2:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true'
runs-on: ${{ matrix.os }}
+ env:
+ RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
+ RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
strategy:
matrix:
java: [ '8', '11' ]
@@ -760,7 +768,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run connector-v2 integration test (part-2)
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw help:evaluate -Dexpression=project.modules -q -DforceStdout
-pl :seatunnel-connector-v2-e2e >> /tmp/sub_module.txt
sub_modules=`python
tools/update_modules_check/update_modules_check.py sub /tmp/sub_module.txt`
@@ -771,8 +778,11 @@ jobs:
all-connectors-it-3:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true'
runs-on: ${{ matrix.os }}
+ env:
+ RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
+ RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
strategy:
matrix:
java: [ '8', '11' ]
@@ -789,7 +799,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run connector-v2 integration test (part-3)
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw help:evaluate -Dexpression=project.modules -q -DforceStdout
-pl :seatunnel-connector-v2-e2e >> /tmp/sub_module.txt
sub_modules=`python
tools/update_modules_check/update_modules_check.py sub /tmp/sub_module.txt`
@@ -800,8 +809,11 @@ jobs:
all-connectors-it-4:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true'
runs-on: ${{ matrix.os }}
+ env:
+ RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
+ RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
strategy:
matrix:
java: [ '8', '11' ]
@@ -818,7 +830,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run connector-v2 integration test (part-4)
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw help:evaluate -Dexpression=project.modules -q -DforceStdout
-pl :seatunnel-connector-v2-e2e >> /tmp/sub_module.txt
sub_modules=`python
tools/update_modules_check/update_modules_check.py sub /tmp/sub_module.txt`
@@ -829,8 +840,11 @@ jobs:
all-connectors-it-5:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true'
runs-on: ${{ matrix.os }}
+ env:
+ RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
+ RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
strategy:
matrix:
java: [ '8', '11' ]
@@ -847,7 +861,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run connector-v2 integration test (part-5)
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw help:evaluate -Dexpression=project.modules -q -DforceStdout
-pl :seatunnel-connector-v2-e2e >> /tmp/sub_module.txt
sub_modules=`python
tools/update_modules_check/update_modules_check.py sub /tmp/sub_module.txt`
@@ -858,8 +871,11 @@ jobs:
all-connectors-it-6:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true'
runs-on: ${{ matrix.os }}
+ env:
+ RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
+ RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
strategy:
matrix:
java: [ '8', '11' ]
@@ -876,7 +892,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run connector-v2 integration test (part-6)
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw help:evaluate -Dexpression=project.modules -q -DforceStdout
-pl :seatunnel-connector-v2-e2e >> /tmp/sub_module.txt
sub_modules=`python
tools/update_modules_check/update_modules_check.py sub /tmp/sub_module.txt`
@@ -887,8 +902,11 @@ jobs:
all-connectors-it-7:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true'
runs-on: ${{ matrix.os }}
+ env:
+ RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
+ RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
strategy:
matrix:
java: [ '8', '11' ]
@@ -905,7 +923,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run connector-v2 integration test (part-7)
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw help:evaluate -Dexpression=project.modules -q -DforceStdout
-pl :seatunnel-connector-v2-e2e >> /tmp/sub_module.txt
sub_modules=`python
tools/update_modules_check/update_modules_check.py sub /tmp/sub_module.txt`
@@ -916,8 +933,11 @@ jobs:
jdbc-connectors-it-part-1:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true'
runs-on: ${{ matrix.os }}
+ env:
+ RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
+ RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
strategy:
matrix:
java: [ '8', '11' ]
@@ -934,7 +954,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run jdbc connectors integration test (part-1)
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false
-D"license.skipAddThirdParty"=true --no-snapshot-updates -pl
:connector-jdbc-e2e-part-1 -am -Pci
env:
@@ -942,8 +961,11 @@ jobs:
jdbc-connectors-it-part-2:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true'
runs-on: ${{ matrix.os }}
+ env:
+ RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
+ RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
strategy:
matrix:
java: [ '8', '11' ]
@@ -960,7 +982,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run jdbc connectors integration test (part-2)
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false
-D"license.skipAddThirdParty"=true --no-snapshot-updates -pl
:connector-jdbc-e2e-part-2 -am -Pci
env:
@@ -968,8 +989,11 @@ jobs:
jdbc-connectors-it-part-3:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true'
runs-on: ${{ matrix.os }}
+ env:
+ RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
+ RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
strategy:
matrix:
java: [ '8', '11' ]
@@ -986,7 +1010,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run jdbc connectors integration test (part-3)
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false
-D"license.skipAddThirdParty"=true --no-snapshot-updates -pl
:connector-jdbc-e2e-part-3 -am -Pci
env:
@@ -994,8 +1017,11 @@ jobs:
jdbc-connectors-it-part-4:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true'
runs-on: ${{ matrix.os }}
+ env:
+ RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
+ RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
strategy:
matrix:
java: [ '8', '11' ]
@@ -1012,7 +1038,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run jdbc connectors integration test (part-4)
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false
-D"license.skipAddThirdParty"=true --no-snapshot-updates -pl
:connector-jdbc-e2e-part-4 -am -Pci
env:
@@ -1020,8 +1045,11 @@ jobs:
jdbc-connectors-it-part-5:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true'
runs-on: ${{ matrix.os }}
+ env:
+ RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
+ RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
strategy:
matrix:
java: [ '8', '11' ]
@@ -1038,7 +1066,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run jdbc connectors integration test (part-5)
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false
-D"license.skipAddThirdParty"=true --no-snapshot-updates -pl
:connector-jdbc-e2e-part-5 -am -Pci
env:
@@ -1046,8 +1073,11 @@ jobs:
jdbc-connectors-it-part-6:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true'
runs-on: ${{ matrix.os }}
+ env:
+ RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
+ RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
strategy:
matrix:
java: [ '8', '11' ]
@@ -1064,7 +1094,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run jdbc connectors integration test (part-6)
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false
-D"license.skipAddThirdParty"=true --no-snapshot-updates -pl
:connector-jdbc-e2e-part-6 -am -Pci
env:
@@ -1072,8 +1101,11 @@ jobs:
jdbc-connectors-it-part-7:
needs: [ changes, sanity-check ]
- if: needs.changes.outputs.api == 'true'
+ if: needs.changes.outputs.api == 'true' || needs.changes.outputs.engine ==
'true'
runs-on: ${{ matrix.os }}
+ env:
+ RUN_ALL_CONTAINER: ${{ needs.changes.outputs.api }}
+ RUN_ZETA_CONTAINER: ${{ needs.changes.outputs.engine }}
strategy:
matrix:
java: [ '8', '11' ]
@@ -1090,7 +1122,6 @@ jobs:
- name: free disk space
run: tools/github/free_disk_space.sh
- name: run jdbc connectors integration test (part-7)
- if: needs.changes.outputs.api == 'true'
run: |
./mvnw -B -T 1 verify -DskipUT=true -DskipIT=false
-D"license.skipAddThirdParty"=true --no-snapshot-updates -pl
:connector-jdbc-e2e-part-7 -am -Pci
env:
@@ -1104,7 +1135,7 @@ jobs:
matrix:
java: [ '8', '11' ]
os: [ 'ubuntu-latest' ]
- timeout-minutes: 120
+ timeout-minutes: 30
steps:
- uses: actions/checkout@v2
- name: Set up JDK ${{ matrix.java }}
diff --git a/.github/workflows/notify_test_workflow.yml
b/.github/workflows/notify_test_workflow.yml
index 58d1b5f2be..797d067257 100644
--- a/.github/workflows/notify_test_workflow.yml
+++ b/.github/workflows/notify_test_workflow.yml
@@ -80,7 +80,7 @@ jobs:
status = 'completed'
const conclusion = 'action_required'
- github.rest.checks.create({
+ await github.rest.checks.create({
owner: context.repo.owner,
repo: context.repo.repo,
name: name,
diff --git a/.github/workflows/schedule_backend.yml
b/.github/workflows/schedule_backend.yml
index 503a3866df..1d2bc3fe84 100644
--- a/.github/workflows/schedule_backend.yml
+++ b/.github/workflows/schedule_backend.yml
@@ -18,128 +18,17 @@
name: Schedule Backend
on:
schedule:
- - cron: '0 0 03 * *'
+ - cron: '0 16 * * *'
concurrency:
group: backend-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
- license-header:
- if: github.repository == 'apache/seatunnel'
- name: License header
- runs-on: ubuntu-latest
- timeout-minutes: 10
- steps:
- - uses: actions/checkout@v3
- with:
- submodules: true
- - name: Check license header
- uses: apache/skywalking-eyes@985866ce7e324454f61e22eb2db2e998db09d6f3
-
- code-style:
- if: github.repository == 'apache/seatunnel'
- name: Code style
- runs-on: ubuntu-latest
- timeout-minutes: 10
- steps:
- - uses: actions/checkout@v3
- with:
- submodules: true
- - name: Check code style
- run: ./mvnw --batch-mode --quiet --no-snapshot-updates clean
spotless:check
-
- dead-link:
- if: github.repository == 'apache/seatunnel'
- name: Dead links
- runs-on: ubuntu-latest
- timeout-minutes: 30
- steps:
- - uses: actions/checkout@v2
- - run: sudo npm install -g [email protected]
- - run: |
- for file in $(find . -name "*.md"); do
- markdown-link-check -c .dlc.json -q "$file"
- done
-
- sanity-check:
- if: github.repository == 'apache/seatunnel'
- name: Sanity check results
- needs: [ license-header, code-style, dead-link ]
- runs-on: ubuntu-latest
- timeout-minutes: 10
- steps:
- - name: Check results
- run: |
- [[ ${{ needs.license-header.result }} == 'success' ]] || exit 1;
- [[ ${{ needs.code-style.result }} == 'success' ]] || exit 1;
- [[ ${{ needs.dead-link.result }} == 'success' ]] || exit 1;
-
- dependency-license:
- name: Dependency licenses
- needs: [ sanity-check ]
- runs-on: ubuntu-latest
- timeout-minutes: 40
- steps:
- - uses: actions/checkout@v3
- with:
- submodules: true
- - uses: actions/setup-java@v3
- with:
- distribution: 'temurin'
- java-version: '8'
- cache: 'maven'
- - name: Install
- run: >-
- ./mvnw -B -q install -DskipTests
- -D"maven.test.skip"=true
- -D"maven.javadoc.skip"=true
- -D"scalastyle.skip"=true
- -D"license.skipAddThirdParty"
- - name: Check Dependencies Licenses
- run: tools/dependencies/checkLicense.sh
-
- unit-test:
- needs: [ sanity-check ]
- runs-on: ${{ matrix.os }}
- strategy:
- matrix:
- java: [ '8', '11' ]
- os: [ 'ubuntu-latest', 'windows-latest' ]
- timeout-minutes: 90
- steps:
- - uses: actions/checkout@v2
- - name: Set up JDK ${{ matrix.java }}
- uses: actions/setup-java@v3
- with:
- java-version: ${{ matrix.java }}
- distribution: 'temurin'
- cache: 'maven'
- - name: run all modules unit test
- run: |
- ./mvnw -B -T 1C clean verify -D"maven.test.skip"=false
-D"scalastyle.skip"=true -D"license.skipAddThirdParty"=true
--no-snapshot-updates
- env:
- MAVEN_OPTS: -Xmx2048m
-
- integration-test:
- needs: [ sanity-check ]
- runs-on: ${{ matrix.os }}
- strategy:
- matrix:
- java: [ '8', '11' ]
- os: [ 'ubuntu-latest' ]
- timeout-minutes: 90
- steps:
- - uses: actions/checkout@v2
- - name: Set up JDK ${{ matrix.java }}
- uses: actions/setup-java@v3
- with:
- java-version: ${{ matrix.java }}
- distribution: 'temurin'
- cache: 'maven'
- - name: run all modules integration test
- run: |
- ./mvnw -T 1C -B verify -DskipUT=true -DskipIT=false
-D"scalastyle.skip"=true -D"license.skipAddThirdParty"=true
--no-snapshot-updates
- env:
- MAVEN_OPTS: -Xmx2048m
-
+ call-build-and-test:
+ permissions:
+ packages: write
+ name: Run
+ uses: ./.github/workflows/backend.yml
+ with:
+ TEST_IN_PR: false
diff --git
a/seatunnel-e2e/seatunnel-e2e-common/src/test/java/org/apache/seatunnel/e2e/common/container/TestContainerId.java
b/seatunnel-e2e/seatunnel-e2e-common/src/test/java/org/apache/seatunnel/e2e/common/container/TestContainerId.java
index db8306bfa2..bc886bf59d 100644
---
a/seatunnel-e2e/seatunnel-e2e-common/src/test/java/org/apache/seatunnel/e2e/common/container/TestContainerId.java
+++
b/seatunnel-e2e/seatunnel-e2e-common/src/test/java/org/apache/seatunnel/e2e/common/container/TestContainerId.java
@@ -26,18 +26,19 @@ import static
org.apache.seatunnel.e2e.common.container.EngineType.SPARK;
@AllArgsConstructor
@Getter
public enum TestContainerId {
- FLINK_1_13(FLINK, "1.13.6"),
- FLINK_1_14(FLINK, "1.14.6"),
- FLINK_1_15(FLINK, "1.15.3"),
- FLINK_1_16(FLINK, "1.16.0"),
- FLINK_1_17(FLINK, "1.17.2"),
- FLINK_1_18(FLINK, "1.18.0"),
- SPARK_2_4(SPARK, "2.4.6"),
- SPARK_3_3(SPARK, "3.3.0"),
- SEATUNNEL(EngineType.SEATUNNEL, "dev");
+ FLINK_1_13(FLINK, "1.13.6", true),
+ FLINK_1_14(FLINK, "1.14.6", false),
+ FLINK_1_15(FLINK, "1.15.3", true),
+ FLINK_1_16(FLINK, "1.16.0", false),
+ FLINK_1_17(FLINK, "1.17.2", false),
+ FLINK_1_18(FLINK, "1.18.0", true),
+ SPARK_2_4(SPARK, "2.4.6", true),
+ SPARK_3_3(SPARK, "3.3.0", true),
+ SEATUNNEL(EngineType.SEATUNNEL, "dev", true);
private final EngineType engineType;
private final String version;
+ private final boolean testInPR;
@Override
public String toString() {
diff --git
a/seatunnel-e2e/seatunnel-e2e-common/src/test/java/org/apache/seatunnel/e2e/common/util/ContainerUtil.java
b/seatunnel-e2e/seatunnel-e2e-common/src/test/java/org/apache/seatunnel/e2e/common/util/ContainerUtil.java
index 6c6a8e5cdd..faf744df38 100644
---
a/seatunnel-e2e/seatunnel-e2e-common/src/test/java/org/apache/seatunnel/e2e/common/util/ContainerUtil.java
+++
b/seatunnel-e2e/seatunnel-e2e-common/src/test/java/org/apache/seatunnel/e2e/common/util/ContainerUtil.java
@@ -24,6 +24,7 @@ import
org.apache.seatunnel.shade.com.typesafe.config.ConfigResolveOptions;
import org.apache.seatunnel.api.configuration.ReadonlyConfig;
import org.apache.seatunnel.api.table.factory.FactoryException;
import org.apache.seatunnel.common.constants.PluginType;
+import org.apache.seatunnel.e2e.common.container.EngineType;
import org.apache.seatunnel.e2e.common.container.TestContainer;
import org.apache.commons.lang3.StringUtils;
@@ -299,7 +300,38 @@ public final class ContainerUtil {
ServiceLoader.load(TestContainer.class,
Thread.currentThread().getContextClassLoader())
.iterator()
.forEachRemaining(result::add);
- return result;
+ boolean isTestInPR =
+
Boolean.parseBoolean(System.getenv().getOrDefault("TEST_IN_PR", "true"));
+ boolean testAllContainer =
+
Boolean.parseBoolean(System.getenv().getOrDefault("RUN_ALL_CONTAINER", "true"));
+ boolean testZetaContainer =
+ Boolean.parseBoolean(
+ System.getenv().getOrDefault("RUN_ZETA_CONTAINER",
"true"));
+ log.info(
+ "Test in PR: {}, Run all container: {}, Run zeta
container: {}",
+ isTestInPR,
+ testAllContainer,
+ testZetaContainer);
+ if (isTestInPR) {
+ return result.stream()
+ .filter(container ->
container.identifier().isTestInPR())
+ .filter(
+ container -> {
+ if (testAllContainer) {
+ return true;
+ }
+ if (testZetaContainer) {
+ return container
+ .identifier()
+ .getEngineType()
+ .equals(EngineType.SEATUNNEL);
+ }
+ return true;
+ })
+ .collect(Collectors.toList());
+ } else {
+ return result;
+ }
} catch (ServiceConfigurationError e) {
log.error("Could not load service provider for containers.", e);
throw new FactoryException("Could not load service provider for
containers.", e);
diff --git
a/seatunnel-e2e/seatunnel-engine-e2e/connector-seatunnel-e2e-base/src/test/java/org/apache/seatunnel/engine/e2e/joblog/JobLogIT.java
b/seatunnel-e2e/seatunnel-engine-e2e/connector-seatunnel-e2e-base/src/test/java/org/apache/seatunnel/engine/e2e/joblog/JobLogIT.java
index 4afbfacb71..7d2b8ff006 100644
---
a/seatunnel-e2e/seatunnel-engine-e2e/connector-seatunnel-e2e-base/src/test/java/org/apache/seatunnel/engine/e2e/joblog/JobLogIT.java
+++
b/seatunnel-e2e/seatunnel-engine-e2e/connector-seatunnel-e2e-base/src/test/java/org/apache/seatunnel/engine/e2e/joblog/JobLogIT.java
@@ -207,7 +207,12 @@ public class JobLogIT extends SeaTunnelContainer {
"sh", "-c", "find /tmp/seatunnel/logs -name " +
tuple2.f1() + "\n");
String file1 = execResult.getStdout();
Assertions.assertEquals(
- tuple2.f0(), StringUtils.isBlank(file) &&
StringUtils.isBlank(file1));
+ tuple2.f0(),
+ StringUtils.isBlank(file) && StringUtils.isBlank(file1),
+ "Server Logs: \n"
+ + server.getLogs()
+ + "\n SecondServer Logs: \n"
+ + secondServer.getLogs());
}
}
diff --git
a/seatunnel-engine/seatunnel-engine-core/src/main/java/org/apache/seatunnel/engine/core/job/ExecutionAddress.java
b/seatunnel-engine/seatunnel-engine-core/src/main/java/org/apache/seatunnel/engine/core/job/ExecutionAddress.java
index ef445b50cb..605890c518 100644
---
a/seatunnel-engine/seatunnel-engine-core/src/main/java/org/apache/seatunnel/engine/core/job/ExecutionAddress.java
+++
b/seatunnel-engine/seatunnel-engine-core/src/main/java/org/apache/seatunnel/engine/core/job/ExecutionAddress.java
@@ -22,6 +22,6 @@ import java.io.Serializable;
@AllArgsConstructor
@NoArgsConstructor
public class ExecutionAddress implements Serializable {
- String hostname;
- int port;
+ private String hostname;
+ private int port;
}
diff --git
a/seatunnel-engine/seatunnel-engine-core/src/main/java/org/apache/seatunnel/engine/core/job/JobDAGInfo.java
b/seatunnel-engine/seatunnel-engine-core/src/main/java/org/apache/seatunnel/engine/core/job/JobDAGInfo.java
index f0ef24bad6..9790f48e39 100644
---
a/seatunnel-engine/seatunnel-engine-core/src/main/java/org/apache/seatunnel/engine/core/job/JobDAGInfo.java
+++
b/seatunnel-engine/seatunnel-engine-core/src/main/java/org/apache/seatunnel/engine/core/job/JobDAGInfo.java
@@ -39,6 +39,7 @@ public class JobDAGInfo implements Serializable {
Map<String, Object> envOptions;
Map<Integer, List<Edge>> pipelineEdges;
Map<Long, VertexInfo> vertexInfoMap;
+ ExecutionAddress master;
Set<ExecutionAddress> historyExecutionPlan;
public JsonObject toJsonObject() {
diff --git
a/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/dag/DAGUtils.java
b/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/dag/DAGUtils.java
index 62df65c917..e8e05aa0e8 100644
---
a/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/dag/DAGUtils.java
+++
b/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/dag/DAGUtils.java
@@ -55,6 +55,7 @@ public class DAGUtils {
JobImmutableInformation jobImmutableInformation,
EngineConfig engineConfig,
boolean isPhysicalDAGIInfo,
+ ExecutionAddress master,
Set<ExecutionAddress> historyExecutionAddress) {
List<Pipeline> pipelines =
new ExecutionPlanGenerator(logicalDag,
jobImmutableInformation, engineConfig)
@@ -93,6 +94,7 @@ public class DAGUtils {
logicalDag.getJobConfig().getEnvOptions(),
pipelineWithEdges,
vertexInfoMap,
+ master,
historyExecutionAddress);
} else {
// Generate LogicalPlan DAG
@@ -141,6 +143,7 @@ public class DAGUtils {
logicalDag.getJobConfig().getEnvOptions(),
pipelineWithEdges,
vertexInfoMap,
+ master,
historyExecutionAddress);
}
}
diff --git
a/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/master/JobHistoryService.java
b/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/master/JobHistoryService.java
index 7b0d83ef03..ed09e3ee9d 100644
---
a/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/master/JobHistoryService.java
+++
b/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/master/JobHistoryService.java
@@ -309,19 +309,26 @@ public class JobHistoryService {
JobDAGInfo jobDagInfo = event.getOldValue();
try {
Set<ExecutionAddress> historyExecutionPlan =
jobDagInfo.getHistoryExecutionPlan();
-
- historyExecutionPlan.forEach(
- address -> {
- logger.info("clean job log, jobId: " + jobId + ",
address: " + address);
- try {
- NodeEngineUtil.sendOperationToMemberNode(
- nodeEngine,
- new CleanLogOperation(jobId),
- new Address(address.getHostname(),
address.getPort()));
- } catch (UnknownHostException e) {
- throw new RuntimeException(e);
- }
- });
+ Stream.concat(historyExecutionPlan.stream(),
Stream.of(jobDagInfo.getMaster()))
+ .forEach(
+ address -> {
+ logger.info(
+ "clean job log, jobId: "
+ + jobId
+ + ", address: "
+ + address);
+ try {
+
NodeEngineUtil.sendOperationToMemberNode(
+ nodeEngine,
+ new
CleanLogOperation(jobId),
+ new Address(
+
address.getHostname(),
+
address.getPort()))
+ .join();
+ } catch (UnknownHostException e) {
+ throw new RuntimeException(e);
+ }
+ });
} catch (Exception e) {
logger.warning("clean job log err", e);
}
diff --git
a/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/master/JobMaster.java
b/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/master/JobMaster.java
index 49b676c97e..db3d7b1d21 100644
---
a/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/master/JobMaster.java
+++
b/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/master/JobMaster.java
@@ -589,6 +589,9 @@ public class JobMaster {
jobImmutableInformation,
engineConfig,
isPhysicalDAGIInfo,
+ new ExecutionAddress(
+ this.nodeEngine.getThisAddress().getHost(),
+
this.nodeEngine.getThisAddress().getPort()),
historyExecutionAddress);
}
return jobDAGInfo;
diff --git
a/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/rest/service/BaseService.java
b/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/rest/service/BaseService.java
index f342aaba45..fc99feb264 100644
---
a/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/rest/service/BaseService.java
+++
b/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/rest/service/BaseService.java
@@ -31,6 +31,7 @@ import org.apache.seatunnel.engine.common.config.JobConfig;
import org.apache.seatunnel.engine.common.utils.PassiveCompletableFuture;
import org.apache.seatunnel.engine.core.classloader.ClassLoaderService;
import org.apache.seatunnel.engine.core.dag.logical.LogicalDag;
+import org.apache.seatunnel.engine.core.job.ExecutionAddress;
import org.apache.seatunnel.engine.core.job.JobDAGInfo;
import org.apache.seatunnel.engine.core.job.JobImmutableInformation;
import org.apache.seatunnel.engine.core.job.JobInfo;
@@ -166,6 +167,9 @@ public abstract class BaseService {
jobImmutableInformation,
getSeaTunnelServer(false).getSeaTunnelConfig().getEngineConfig(),
true,
+ new ExecutionAddress(
+ this.nodeEngine.getMasterAddress().getHost(),
+ this.nodeEngine.getMasterAddress().getPort()),
new HashSet<>());
jobInfoJson
diff --git a/tools/update_modules_check/update_modules_check.py
b/tools/update_modules_check/update_modules_check.py
index 8359bc7d97..f2f33abd10 100644
--- a/tools/update_modules_check/update_modules_check.py
+++ b/tools/update_modules_check/update_modules_check.py
@@ -176,6 +176,10 @@ def get_sub_update_it_modules(modules, total_num,
current_num):
module_list.remove("connector-rocketmq-e2e")
if "seatunnel-engine-k8s-e2e" in module_list:
module_list.remove("seatunnel-engine-k8s-e2e")
+ if "connector-seatunnel-e2e-base" in module_list:
+ module_list.remove("connector-seatunnel-e2e-base")
+ if "connector-console-seatunnel-e2e" in module_list:
+ module_list.remove("connector-console-seatunnel-e2e")
if "connector-doris-e2e" in module_list:
module_list.remove("connector-doris-e2e")
if "connector-paimon-e2e" in module_list: