| name: Nightly - Dubbo 3 |
| |
| on: |
| schedule: |
| # nightly build at 2:00+8, should convert into UTC |
| - cron: '0 18 * * *' |
| - cron: '0 21 * * *' |
| workflow_dispatch: |
| inputs: |
| remark: |
| description: 'test description' |
| required: false |
| default: 'test' |
| |
| |
| env: |
| FORK_COUNT: 1 |
| FAIL_FAST: 0 |
| SHOW_ERROR_DETAIL: 1 |
| BUILD_OPTS: --batch-mode --no-snapshot-updates --no-transfer-progress --settings ${{github.workspace}}/.mvn/settings.xml |
| -Dmaven.wagon.http.retryHandler.count=3 clean package dependency:copy-dependencies -DskipTests |
| #multi-version size limit |
| VERSIONS_LIMIT: 12 |
| #candidate versions (the dubbo snapshot version will be extracted from pom.xml and appended before CANDIDATE_VERSIONS ) |
| CANDIDATE_VERSIONS: ' |
| dubbo.version: 3.0.3; |
| spring.version: 4.2.9.RELEASE, 4.3.30.RELEASE, 5.1.20.RELEASE, 5.3.3; |
| spring-boot.version: 1.1.12.RELEASE, 1.2.8.RELEASE, 1.3.8.RELEASE, 1.4.7.RELEASE, 1.5.22.RELEASE; |
| spring-boot.version: 2.0.9.RELEASE, 2.1.18.RELEASE, 2.2.12.RELEASE, 2.3.7.RELEASE, 2.4.1 |
| ' |
| DUBBO_REF: '3.1' |
| |
| jobs: |
| build-samples: |
| runs-on: ubuntu-latest |
| strategy: |
| fail-fast: false |
| matrix: |
| java: [8, 11] |
| steps: |
| - uses: actions/checkout@v1 |
| - name: Cache local Maven repository |
| uses: actions/cache@v2 |
| with: |
| path: ~/.m2/repository |
| key: ${{ runner.os }}-samples-maven-${{ hashFiles('**/pom.xml') }} |
| restore-keys: | |
| ${{ runner.os }}-samples-maven- |
| - name: Set up JDK ${{matrix.java}} |
| uses: actions/setup-java@v1 |
| with: |
| java-version: ${{matrix.java}} |
| - name: Build with Maven |
| run: | |
| ./mvnw $BUILD_OPTS |
| |
| build-dubbo: |
| runs-on: ubuntu-latest |
| strategy: |
| fail-fast: false |
| # Map a step output to a job output |
| outputs: |
| commit_id: ${{ steps.git-checker.outputs.commit_id }} |
| version: ${{ steps.git-checker.outputs.version }} |
| steps: |
| - uses: actions/checkout@v2 |
| with: |
| repository: 'apache/dubbo' |
| ref: ${{env.DUBBO_REF}} |
| - name: Get commit id and dubbo version |
| id: git-checker |
| run: | |
| # Calculate Dubbo Version |
| REVISION=`awk '/<revision>[^<]+<\/revision>/{gsub(/<revision>|<\/revision>/,"",$1);print $1;exit;}' pom.xml` |
| echo "::set-output name=version::$REVISION" |
| echo "dubbo version: $REVISION" |
| # |
| # commit id |
| commit_id=`git log --format="%H" -n 1` |
| echo "::set-output name=commit_id::$commit_id" |
| echo "commit_id: $commit_id" |
| - name: Dubbo cache |
| id: dubbocache |
| uses: actions/cache@v2 |
| with: |
| path: ~/.m2/repository/org/apache/dubbo |
| key: ${{ runner.os }}-dubbo-snapshot-${{steps.git-checker.outputs.commit_id}} |
| - name: Cache local Maven repository |
| if: steps.dubbocache.outputs.cache-hit != 'true' |
| uses: actions/cache@v2 |
| with: |
| path: ~/.m2/repository |
| key: ${{ runner.os }}-dubbo-${{env.DUBBO_REF}}-maven-${{ hashFiles('**/pom.xml') }} |
| restore-keys: | |
| ${{ runner.os }}-dubbo-${{env.DUBBO_REF}}-maven- |
| - name: Set up JDK 8 |
| if: steps.dubbocache.outputs.cache-hit != 'true' |
| uses: actions/setup-java@v1 |
| with: |
| java-version: 8 |
| - name: Build dubbo |
| if: steps.dubbocache.outputs.cache-hit != 'true' |
| run: | |
| ./mvnw --batch-mode --no-snapshot-updates --no-transfer-progress clean install -Dmaven.test.skip=true -Dmaven.test.skip.exec=true |
| |
| prepare_test: |
| runs-on: ubuntu-latest |
| env: |
| #'JOB_COUNT' MUST match 'job_id' list of 'testjob' |
| JOB_COUNT: 5 |
| steps: |
| - uses: actions/checkout@v1 |
| - name: Prepare test list |
| run: | |
| bash ./test/scripts/prepare-test.sh |
| - name: Upload test list |
| uses: actions/upload-artifact@v2 |
| with: |
| name: test-list |
| path: test/jobs |
| |
| testjob: |
| needs: [prepare_test, build-dubbo] |
| name: 'Integration Test (Java${{matrix.java}}, Job${{matrix.job_id}})' |
| runs-on: ubuntu-latest |
| env: |
| JAVA_VER: ${{matrix.java}} |
| TEST_CASE_FILE: jobs/testjob_${{matrix.job_id}}.txt |
| strategy: |
| fail-fast: false |
| matrix: |
| java: [8, 11] |
| #testjob id list MUST match 'JOB_COUNT' of 'prepare_test' |
| job_id: [1,2,3,4,5] |
| steps: |
| - uses: actions/checkout@v1 |
| - name: Set up JDK ${{matrix.java}} |
| uses: actions/setup-java@v1 |
| with: |
| java-version: ${{matrix.java}} |
| - name: Cache local Maven repository |
| uses: actions/cache@v2 |
| with: |
| path: ~/.m2/repository |
| key: ${{ runner.os }}-samples-maven-${{ hashFiles('**/pom.xml') }} |
| restore-keys: | |
| ${{ runner.os }}-samples-maven- |
| - name: Dubbo cache |
| uses: actions/cache@v2 |
| with: |
| path: ~/.m2/repository/org/apache/dubbo |
| key: ${{ runner.os }}-dubbo-snapshot-${{needs.build-dubbo.outputs.commit_id}} |
| - name: Download test list |
| uses: actions/download-artifact@v2 |
| with: |
| name: test-list |
| path: test/jobs/ |
| - name: Init Candidate Versions |
| run: | |
| DUBBO_VERSION="${{needs.build-dubbo.outputs.version}}" |
| CANDIDATE_VERSIONS="dubbo.version:$DUBBO_VERSION;compiler.version:$DUBBO_VERSION;dubbo.compiler.version:$DUBBO_VERSION;$CANDIDATE_VERSIONS" |
| echo "CANDIDATE_VERSIONS=$CANDIDATE_VERSIONS" >> $GITHUB_ENV |
| - name: Build test image |
| run: | |
| cd test && bash ./build-test-image.sh |
| - name: Run tests |
| run: cd test && bash ./run-tests.sh |
| - name: Upload test result |
| if: always() |
| uses: actions/upload-artifact@v2 |
| with: |
| name: test-result |
| path: test/jobs/*-result* |
| |
| test_result: |
| needs: [testjob] |
| name: 'Test Result (Java${{matrix.java}})' |
| if: always() |
| runs-on: ubuntu-latest |
| strategy: |
| fail-fast: false |
| matrix: |
| java: [8, 11] |
| env: |
| JAVA_VER: ${{matrix.java}} |
| steps: |
| - uses: actions/checkout@v1 |
| - name: Download test result |
| uses: actions/download-artifact@v2 |
| with: |
| name: test-result |
| path: test/jobs/ |
| - name: Merge test result - java ${{matrix.java}} |
| run: ./test/scripts/merge-test-results.sh |