Browse Source

ci: try to prepare a compiled test profile for test jobs

Zaiming (Stone) Shi 3 years atrás
parent
commit
3bcd76a681
1 changed files with 87 additions and 89 deletions
  1. 87 89
      .github/workflows/run_test_cases.yaml

+ 87 - 89
.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
+          with:
+            path: source
+            fetch-depth: 0
+        - name: find_ct_apps
+          working-directory: source
+          id: run_find_apps
           run: |
-            scripts/get-dep-refs.sh
-            make clean-all
-        - name: load quicer cache
-          uses: actions/cache@v2
+            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:
-            path: source/_build/default/lib/quicer/
-            key: ${{ matrix.os }}-${{ matrix.otp }}-${{ matrix.arch }}-${{ steps.deps-refs.outputs.DEP_QUICER_REF }}
+            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 <app-name>.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 <app-name>.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: