diff --git a/.github/workflows/run_test_cases.yaml b/.github/workflows/run_test_cases.yaml index 967f899df..94686b3f4 100644 --- a/.github/workflows/run_test_cases.yaml +++ b/.github/workflows/run_test_cases.yaml @@ -14,73 +14,77 @@ on: pull_request: jobs: - eunit_and_proper: - strategy: - matrix: - otp: - - 24.2.1-1 - elixir: - - 1.13.3 - os: - - ubuntu20.04 - arch: - - amd64 - - runs-on: aws-amd64 - container: "emqx/emqx-builder/5.0-14:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os }}" - + prepare: + runs-on: ubuntu-20.04 + # prepare source with any OTP version, no need for a matrix + container: "ghcr.io/emqx/emqx-builder/5.0-14:1.13.3-24.2.1-1-ubuntu20.04" + outputs: + fast_ct_apps: ${{ steps.run_find_apps.outputs.fast_ct_apps }} + docker_ct_apps: ${{ steps.run_find_apps.outputs.docker_ct_apps }} steps: - uses: actions/checkout@v2 - - - name: Get deps git refs for cache - id: deps-refs - run: | - scripts/get-dep-refs.sh - make clean-all - - name: load quicer cache - uses: actions/cache@v2 with: - path: source/_build/default/lib/quicer/ - key: ${{ matrix.os }}-${{ matrix.otp }}-${{ matrix.arch }}-${{ steps.deps-refs.outputs.DEP_QUICER_REF }} + path: source + fetch-depth: 0 + - name: find_ct_apps + working-directory: source + id: run_find_apps + run: | + fast_ct_apps="$(./scripts/find-apps.sh --ct fast --json)" + docker_ct_apps="$(./scripts/find-apps.sh --ct docker --json)" + echo "fast-ct-apps: $fast_ct_apps" + echo "docer-ct-apps: $docker_ct_apps" + echo "::set-output name=fast_ct_apps::$fast_ct_apps" + echo "::set-output name=docker_ct_apps::$docker_ct_apps" + - name: get_all_deps + working-directory: source + run: | + make deps-all + ./rebar3 as test compile + cd .. + zip -ryq source.zip source/* source/.[^.]* + - uses: actions/upload-artifact@v2 + with: + name: source + path: source.zip + eunit_and_proper: + needs: prepare + runs-on: aws-amd64 + defaults: + run: + shell: bash + container: "ghcr.io/emqx/emqx-builder/5.0-14:1.13.3-24.2.1-1-ubuntu20.04" + + steps: + - uses: AutoModality/action-clean@v1 + - uses: actions/download-artifact@v2 + with: + name: source + path: . + - name: unzip source code + run: unzip -o -q source.zip # produces eunit.coverdata - name: eunit + working-directory: source run: make eunit # produces proper.coverdata - name: proper + working-directory: source run: make proper - uses: actions/upload-artifact@v2 with: name: coverdata - path: _build/test/cover - - find_apps: - runs-on: aws-amd64 - container: emqx/emqx-builder/5.0-14:1.13.3-24.2.1-1-ubuntu20.04 - outputs: - fast_ct_apps: ${{ steps.run_find_apps.outputs.fast_ct_apps }} - docker_ct_apps: ${{ steps.run_find_apps.outputs.docker_ct_apps }} - defaults: - run: - shell: bash - steps: - - uses: actions/checkout@v2 - - name: find apps - id: run_find_apps - run: | - fast_ct_apps="$(./scripts/find-apps.sh --ct fast --json)" - docker_ct_apps="$(./scripts/find-apps.sh --ct docker --json)" - echo "::set-output name=fast_ct_apps::$fast_ct_apps" - echo "::set-output name=docker_ct_apps::$docker_ct_apps" + path: source/_build/test/cover ct_docker: - needs: find_apps + needs: prepare strategy: fail-fast: false matrix: - app_name: ${{ fromJson(needs.find_apps.outputs.docker_ct_apps) }} + app_name: ${{ fromJson(needs.prepare.outputs.docker_ct_apps) }} otp_release: - "erlang24" @@ -90,8 +94,15 @@ jobs: shell: bash steps: - - uses: actions/checkout@v2 + - uses: AutoModality/action-clean@v1 + - uses: actions/download-artifact@v2 + with: + name: source + path: . + - name: unzip source code + run: unzip -q source.zip - name: docker compose up + working-directory: source env: MONGO_TAG: 5 MYSQL_TAG: 8 @@ -112,98 +123,85 @@ jobs: # produces .coverdata - name: run common test + working-directory: source run: | docker exec -i ${{ matrix.otp_release }} bash -c "git config --global --add safe.directory \"$GITHUB_WORKSPACE\" && make ${{ matrix.app_name }}-ct" - uses: actions/upload-artifact@v1 if: matrix.otp_release == 'erlang24' with: name: coverdata - path: _build/test/cover + path: source/_build/test/cover - uses: actions/upload-artifact@v1 if: failure() with: name: logs_${{ matrix.otp_release }} - path: _build/test/logs + path: source/_build/test/logs ct: - needs: find_apps + needs: prepare strategy: fail-fast: false matrix: - app_name: ${{ fromJson(needs.find_apps.outputs.fast_ct_apps) }} - otp: - - 24.2.1-1 - elixir: - - 1.13.3 - os: - - ubuntu20.04 - arch: - - amd64 + app_name: ${{ fromJson(needs.prepare.outputs.fast_ct_apps) }} runs-on: aws-amd64 - container: "emqx/emqx-builder/5.0-14:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os }}" + container: "ghcr.io/emqx/emqx-builder/5.0-14:1.13.3-24.2.1-1-ubuntu20.04" defaults: run: shell: bash steps: - - uses: actions/checkout@v2 + - uses: AutoModality/action-clean@v1 + - uses: actions/download-artifact@v2 + with: + name: source + path: . + - name: unzip source code + run: unzip -q source.zip + # produces .coverdata - name: run common test + working-directory: source run: | make ${{ matrix.app_name }}-ct - uses: actions/upload-artifact@v1 if: matrix.otp == '24.2.1-1' with: name: coverdata - path: _build/test/cover + path: source/_build/test/cover - uses: actions/upload-artifact@v1 if: failure() with: name: logs_${{ matrix.otp_release }} - path: _build/test/logs + path: source/_build/test/logs make_cover: needs: - eunit_and_proper - ct - ct_docker - strategy: - matrix: - otp: - - 24.2.1-1 - elixir: - - 1.13.3 - os: - - ubuntu20.04 - arch: - - amd64 - - runs-on: aws-amd64 - container: "emqx/emqx-builder/5.0-14:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os }}" + runs-on: ubuntu-20.04 + container: "ghcr.io/emqx/emqx-builder/5.0-14:1.13.3-24.2.1-1-ubuntu20.04" steps: - - uses: actions/checkout@v2 - - - name: Get deps git refs for cache - id: deps-refs - run: | - scripts/get-dep-refs.sh - make clean-all - - name: load quicer cache - uses: actions/cache@v2 + - uses: AutoModality/action-clean@v1 + - uses: actions/download-artifact@v2 with: - path: source/_build/default/lib/quicer/ - key: ${{ matrix.os }}-${{ matrix.otp }}-${{ matrix.arch }}-${{ steps.deps-refs.outputs.DEP_QUICER_REF }} + name: source + path: . + - name: unzip source code + run: unzip -q source.zip - uses: actions/download-artifact@v2 name: download coverdata with: name: coverdata - path: _build/test/cover + path: source/_build/test/cover - name: make cover + working-directory: source run: make cover - name: send to coveralls + working-directory: source env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: make coveralls @@ -211,7 +209,7 @@ jobs: # do this in a separate job upload_coverdata: needs: make_cover - runs-on: aws-amd64 + runs-on: ubuntu-20.04 steps: - name: Coveralls Finished env: