| # |
| # 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: Nightly - E2E Example Generator |
| |
| on: |
| schedule: |
| - cron: '0 19 */1 * *' # once a day. UTC time |
| workflow_dispatch: |
| |
| env: |
| MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard -Dmaven.wagon.http.retryHandler.count=3 -Dcheckstyle.skip=true -Dspotless.apply.skip=true -Dmaven.javadoc.skip=true -Drat.skip=true |
| REPOSITORY_NAME: shardingsphere |
| |
| jobs: |
| build-cache: |
| if: github.repository == 'apache/shardingsphere' |
| name: Build Cache |
| runs-on: ubuntu-latest |
| timeout-minutes: 90 |
| steps: |
| - uses: actions/checkout@v3 |
| - uses: actions/setup-java@v3 |
| with: |
| distribution: 'temurin' |
| java-version: '11' |
| - uses: actions/cache@v3 |
| with: |
| path: ~/.m2/repository |
| key: ${{ env.REPOSITORY_NAME }}-maven-third-party-${{ hashFiles('**/pom.xml') }} |
| restore-keys: | |
| ${{ env.REPOSITORY_NAME }}-maven-third-party- |
| - name: Build with Maven |
| run: ./mvnw -B -T1C -ntp clean install -DskipITs -DskipTests |
| |
| generate-and-test-examples: |
| if: github.repository == 'apache/shardingsphere' |
| name: Example-${{ matrix.feature }}-${{ matrix.framework }}-${{ matrix.mode }}-${{ matrix.transaction }} |
| runs-on: ubuntu-latest |
| timeout-minutes: 90 |
| needs: build-cache |
| strategy: |
| fail-fast: false |
| matrix: |
| feature: [ sharding, readwrite-splitting, encrypt, shadow, mask ] |
| framework: [ jdbc, spring-boot-starter-jdbc, spring-boot-starter-jpa, spring-boot-starter-mybatis, spring-namespace-jdbc, spring-namespace-jpa, spring-namespace-mybatis ] |
| mode: [ standalone, cluster-zookeeper ] |
| transaction: [ local, xa-atomikos, xa-narayana ] |
| product: [ jdbc ] |
| exclude: |
| - feature: shadow |
| framework: spring-boot-starter-jpa |
| - feature: shadow |
| framework: spring-namespace-jpa |
| - transaction: xa-atomikos |
| mode: cluster-zookeeper |
| - transaction: xa-narayana |
| mode: cluster-zookeeper |
| - feature: sharding |
| framework: spring-boot-starter-mybatis |
| mode: standalone |
| transaction: xa-atomikos |
| - feature: sharding |
| framework: spring-boot-starter-mybatis |
| mode: standalone |
| transaction: xa-narayana |
| services: |
| mysql: |
| image: mysql:8.0.22 |
| env: |
| MYSQL_ROOT_PASSWORD: 123456 |
| ports: |
| - 3306:3306 |
| options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 |
| zookeeper: |
| image: zookeeper:3.6.3 |
| ports: |
| - 2181:2181 |
| options: --health-cmd="echo ruok | nc localhost 2181" --health-interval=10s --health-timeout=5s --health-retries=3 |
| steps: |
| - uses: actions/checkout@v3 |
| - uses: actions/setup-java@v3 |
| with: |
| distribution: 'temurin' |
| java-version: '11' |
| - uses: actions/cache@v3 |
| with: |
| path: ~/.m2/repository |
| key: ${{ env.REPOSITORY_NAME }}-maven-third-party-${{ hashFiles('**/pom.xml') }} |
| restore-keys: | |
| ${{ env.REPOSITORY_NAME }}-maven-third-party- |
| - name: Prepare environments |
| run: sh .github/workflows/resources/sql/nightly-generator-init.sh |
| - name: Build with Maven |
| run: ./mvnw -B -T1C -ntp clean install -DskipITs -DskipTests |
| - name: Generate examples |
| run: ./mvnw -B clean install -f examples/shardingsphere-example-generator/pom.xml -Pexample-generator -Dproducts=${{ matrix.product }} -Dmodes=${{ matrix.mode }} -Dtransactions=${{ matrix.transaction }} -Dfeatures=${{ matrix.feature }} -Dframeworks=${{ matrix.framework }} |
| - name: Test examples |
| run : ./mvnw -B test -f examples/shardingsphere-example-generator/target/generated-sources/shardingsphere-jdbc-sample/${{ matrix.feature }}--${{ matrix.framework }}--${{ matrix.mode }}--${{ matrix.transaction }}/pom.xml -Pexample-generator -Dexec.cleanupDaemonThreads=false |
| - name: Package examples |
| run: | |
| cd examples/shardingsphere-example-generator/target/generated-sources/shardingsphere-jdbc-sample/ |
| tar -czvf ${{ matrix.feature }}--${{ matrix.framework }}--${{ matrix.mode }}--${{ matrix.transaction }}.tar.gz ${{ matrix.feature }}--${{ matrix.framework }}--${{ matrix.mode }}--${{ matrix.transaction }} |
| - uses: burnett01/rsync-deployments@5.2 |
| with: |
| switches: -avzr |
| path: examples/shardingsphere-example-generator/target/generated-sources/shardingsphere-jdbc-sample/${{ matrix.feature }}--${{ matrix.framework }}--${{ matrix.mode }}--${{ matrix.transaction }}.tar.gz |
| remote_path: ${{ secrets.NIGHTLIES_RSYNC_PATH }}/shardingsphere/examples |
| remote_host: ${{ secrets.NIGHTLIES_RSYNC_HOST }} |
| remote_port: ${{ secrets.NIGHTLIES_RSYNC_PORT }} |
| remote_user: ${{ secrets.NIGHTLIES_RSYNC_USER }} |
| remote_key: ${{ secrets.NIGHTLIES_RSYNC_KEY }} |