name: Nightly - Dubbo 2

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: 2.7.9;
    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: 'master'

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;$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
