| # |
| # 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. |
| # |
| |
| name: E2E - SQL |
| |
| on: |
| push: |
| branches: [ dev ] |
| paths: |
| - '.github/workflows/e2e-sql.yml' |
| - '**/pom.xml' |
| - '**/src/main/**' |
| - '!examples/**' |
| - '!distribution/**' |
| - 'distribution/proxy/**' |
| - '!distribution/proxy/src/main/release-docs/**' |
| - '!kernel/data-pipeline/**' |
| - '!test/**' |
| - 'test/pom.xml' |
| - 'test/e2e/fixture/**' |
| - 'test/e2e/env/**' |
| - 'test/e2e/sql/**' |
| - '!*.md' |
| pull_request: |
| branches: [ master ] |
| paths: |
| - '.github/workflows/e2e-sql.yml' |
| - '**/pom.xml' |
| - '**/src/main/**' |
| - '!examples/**' |
| - '!distribution/**' |
| - 'distribution/proxy/**' |
| - '!distribution/proxy/src/main/release-docs/**' |
| - '!kernel/data-pipeline/**' |
| - '!test/**' |
| - 'test/pom.xml' |
| - 'test/e2e/fixture/**' |
| - 'test/e2e/env/**' |
| - 'test/e2e/sql/**' |
| - '!*.md' |
| workflow_dispatch: |
| |
| concurrency: |
| group: e2e-${{ github.workflow }}-${{ github.ref }} |
| cancel-in-progress: true |
| |
| env: |
| MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3 -Dspotless.apply.skip=true |
| SEGMENT_DOWNLOAD_TIMEOUT_MINS: 1 |
| |
| jobs: |
| global-environment: |
| name: Import Global Environment |
| uses: ./.github/workflows/required-reusable.yml |
| |
| build-e2e-image: |
| name: Build E2E Image |
| needs: global-environment |
| runs-on: ubuntu-latest |
| timeout-minutes: 20 |
| steps: |
| - uses: actions/checkout@v4 |
| - uses: actions/setup-java@v4 |
| with: |
| distribution: 'temurin' |
| java-version: 11 |
| - uses: actions/cache@v4 |
| with: |
| path: ~/.m2/repository |
| key: ${{ needs.global-environment.outputs.GLOBAL_CACHE_PREFIX }}-maven-third-party-e2e-cache-${{ github.sha }} |
| restore-keys: | |
| ${{ needs.global-environment.outputs.GLOBAL_CACHE_PREFIX }}-maven-third-party-e2e-cache- |
| ${{ needs.global-environment.outputs.GLOBAL_CACHE_PREFIX }}-maven-third-party- |
| - name: Build E2E Image |
| run: ./mvnw -B clean install -am -pl test/e2e/sql -Pit.env.docker -DskipTests -Dspotless.apply.skip=true |
| - name: Save E2E Image |
| run: docker save -o /tmp/${{ needs.global-environment.outputs.GLOBAL_CACHE_PREFIX }}-proxy-test.tar apache/shardingsphere-proxy-test:latest |
| - uses: actions/upload-artifact@v4 |
| with: |
| name: e2e-image |
| path: /tmp/${{ needs.global-environment.outputs.GLOBAL_CACHE_PREFIX }}-proxy-test.tar |
| retention-days: 10 |
| |
| e2e-sql: |
| name: E2E - SQL |
| needs: [ build-e2e-image, global-environment ] |
| if: ${{ needs.global-environment.outputs.GLOBAL_JOB_ENABLED == 'true' }} |
| runs-on: ubuntu-latest |
| timeout-minutes: 15 |
| strategy: |
| max-parallel: 20 |
| fail-fast: false |
| matrix: |
| adapter: [ proxy, jdbc ] |
| mode: [ Standalone, Cluster ] |
| database: [ MySQL, PostgreSQL ] |
| # Fix me #25051 |
| #scenario: [ dbtbl_with_readwrite_splitting, dbtbl_with_readwrite_splitting_and_encrypt, sharding_and_encrypt, encrypt_and_readwrite_splitting, encrypt_shadow, readwrite_splitting_and_shadow, sharding_and_shadow, sharding_encrypt_shadow, mask_encrypt, mask_sharding, mask_encrypt_sharding ] |
| scenario: [ empty_rules, rdl_empty_rules, passthrough, db, tbl, encrypt, readwrite_splitting, shadow, mask, dbtbl_with_readwrite_splitting_and_encrypt, sharding_and_encrypt, encrypt_and_readwrite_splitting, encrypt_shadow, readwrite_splitting_and_shadow, sharding_and_shadow, sharding_encrypt_shadow, mask_encrypt, mask_sharding, mask_encrypt_sharding, db_tbl_sql_federation, empty_storage_units ] |
| additional-options: [ '' ] |
| include: |
| - adapter: proxy |
| database: MySQL |
| scenario: passthrough |
| additional-options: '-Dmysql-connector-java.version=8.3.0' |
| exclude: |
| - adapter: jdbc |
| scenario: passthrough |
| - adapter: jdbc |
| mode: Cluster |
| - adapter: proxy |
| mode: Standalone |
| scenario: empty_rules |
| - adapter: proxy |
| mode: Standalone |
| scenario: rdl_empty_rules |
| - adapter: proxy |
| mode: Standalone |
| scenario: passthrough |
| - adapter: proxy |
| scenario: empty_storage_units |
| steps: |
| - uses: actions/checkout@v4 |
| - uses: actions/cache@v4 |
| with: |
| path: ~/.m2/repository |
| key: ${{ needs.global-environment.outputs.GLOBAL_CACHE_PREFIX }}-maven-third-party-e2e-cache-${{ github.sha }} |
| - uses: actions/setup-java@v4 |
| with: |
| distribution: 'temurin' |
| java-version: 11 |
| - name: Download E2E Image |
| if: matrix.adapter == 'proxy' |
| uses: actions/download-artifact@v4 |
| with: |
| name: e2e-image |
| path: /tmp/ |
| - name: Load E2E Image |
| if: matrix.adapter == 'proxy' |
| run: docker load -i /tmp/${{ needs.global-environment.outputs.GLOBAL_CACHE_PREFIX }}-proxy-test.tar |
| - name: Run E2E Test |
| run: ./mvnw -nsu -B install -f test/e2e/sql/pom.xml -Dspotless.apply.skip=true -Dit.cluster.env.type=DOCKER -Dit.cluster.adapters=${{ matrix.adapter }} -Dit.run.modes=${{ matrix.mode }} -Dit.run.additional.cases=false -Dit.scenarios=${{ matrix.scenario }} -Dit.cluster.databases=${{ matrix.database }} ${{ matrix.additional-options }} |