Просмотр исходного кода

Merge pull request #10022 from id/230222-ci-build-el9

230222 ci build el9 and macos12 packages
Ivan Dyachkov 3 лет назад
Родитель
Сommit
d448628979

+ 4 - 4
.github/workflows/build_and_push_docker_images.yaml

@@ -23,9 +23,9 @@ on:
 
 jobs:
   prepare:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     # prepare source with any OTP version, no need for a matrix
-    container: "ghcr.io/emqx/emqx-builder/5.0-28:1.13.4-24.3.4.2-2-ubuntu20.04"
+    container: "ghcr.io/emqx/emqx-builder/5.0-29:1.13.4-24.3.4.2-2-ubuntu22.04"
 
     outputs:
       PROFILE: ${{ steps.get_profile.outputs.PROFILE }}
@@ -109,7 +109,7 @@ jobs:
           path: source.zip
 
   docker:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     needs: prepare
 
     strategy:
@@ -125,7 +125,7 @@ jobs:
         # NOTE: 'otp' and 'elixir' are to configure emqx-builder image
         #       only support latest otp and elixir, not a matrix
         builder:
-          - 5.0-28 # update to latest
+          - 5.0-29 # update to latest
         otp:
           - 24.3.4.2-2 # switch to 25 once ready to release 5.1
         elixir:

+ 15 - 10
.github/workflows/build_packages.yaml

@@ -22,8 +22,9 @@ on:
 
 jobs:
   prepare:
-    runs-on: ubuntu-20.04
-    container: ghcr.io/emqx/emqx-builder/5.0-28:1.13.4-24.3.4.2-2-ubuntu20.04
+    runs-on: ubuntu-22.04
+    if: (github.repository_owner == 'emqx' && github.event_name == 'schedule') || github.event_name != 'schedule'
+    container: ghcr.io/emqx/emqx-builder/5.0-29:1.13.4-24.3.4.2-2-ubuntu22.04
     outputs:
       BUILD_PROFILE: ${{ steps.get_profile.outputs.BUILD_PROFILE }}
       IS_EXACT_TAG: ${{ steps.get_profile.outputs.IS_EXACT_TAG }}
@@ -153,6 +154,7 @@ jobs:
           - 24.3.4.2-2
         os:
           - macos-11
+          - macos-12
           - macos-12-arm64
     runs-on: ${{ matrix.os }}
     steps:
@@ -211,19 +213,20 @@ jobs:
           - ubuntu18.04
           - debian11
           - debian10
+          - el9
           - el8
           - el7
           - amzn2
         build_machine:
           - aws-arm64
-          - ubuntu-20.04
+          - ubuntu-22.04
         builder:
-          - 5.0-28
+          - 5.0-29
         elixir:
           - 1.13.4
         exclude:
         - arch: arm64
-          build_machine: ubuntu-20.04
+          build_machine: ubuntu-22.04
         - arch: amd64
           build_machine: aws-arm64
         include:
@@ -232,7 +235,7 @@ jobs:
             arch: amd64
             os: ubuntu22.04
             build_machine: ubuntu-22.04
-            builder: 5.0-28
+            builder: 5.0-29
             elixir: 1.13.4
             release_with: elixir
           - profile: emqx
@@ -240,7 +243,7 @@ jobs:
             arch: amd64
             os: amzn2
             build_machine: ubuntu-22.04
-            builder: 5.0-28
+            builder: 5.0-29
             elixir: 1.13.4
             release_with: elixir
 
@@ -306,7 +309,7 @@ jobs:
           {"text": "Scheduled run of ${{ github.workflow }}@${{ matrix.os }} failed: https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}"}
 
   publish_artifacts:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     needs: [prepare, mac, linux]
     if: needs.prepare.outputs.IS_EXACT_TAG && github.event_name != 'schedule'
     strategy:
@@ -375,9 +378,11 @@ jobs:
         push "ubuntu/focal" "packages/$PROFILE/$PROFILE-$VERSION-ubuntu20.04-arm64.deb"
         push "ubuntu/jammy" "packages/$PROFILE/$PROFILE-$VERSION-ubuntu22.04-amd64.deb"
         push "ubuntu/jammy" "packages/$PROFILE/$PROFILE-$VERSION-ubuntu22.04-arm64.deb"
+        push "el/6" "packages/$PROFILE/$PROFILE-$VERSION-amzn2-amd64.rpm"
+        push "el/6" "packages/$PROFILE/$PROFILE-$VERSION-amzn2-arm64.rpm"
         push "el/7" "packages/$PROFILE/$PROFILE-$VERSION-el7-amd64.rpm"
         push "el/7" "packages/$PROFILE/$PROFILE-$VERSION-el7-arm64.rpm"
         push "el/8" "packages/$PROFILE/$PROFILE-$VERSION-el8-amd64.rpm"
         push "el/8" "packages/$PROFILE/$PROFILE-$VERSION-el8-arm64.rpm"
-        push "el/6" "packages/$PROFILE/$PROFILE-$VERSION-amzn2-amd64.rpm"
-        push "el/6" "packages/$PROFILE/$PROFILE-$VERSION-amzn2-arm64.rpm"
+        push "el/9" "packages/$PROFILE/$PROFILE-$VERSION-el9-amd64.rpm"
+        push "el/9" "packages/$PROFILE/$PROFILE-$VERSION-el9-arm64.rpm"

+ 10 - 7
.github/workflows/build_slim_packages.yaml

@@ -29,15 +29,14 @@ jobs:
       fail-fast: false
       matrix:
         profile:
-        - ["emqx", "24.3.4.2-2", "el7"]
-        - ["emqx", "24.3.4.2-2", "ubuntu20.04"]
-        - ["emqx", "25.1.2-2", "ubuntu22.04"]
-        - ["emqx-enterprise", "24.3.4.2-2", "ubuntu20.04"]
-        - ["emqx-enterprise", "25.1.2-2", "ubuntu22.04"]
+          - ["emqx", "24.3.4.2-2", "el7", "erlang"]
+          - ["emqx", "25.1.2-2", "ubuntu22.04", "elixir"]
+          - ["emqx-enterprise", "24.3.4.2-2", "amzn2", "erlang"]
+          - ["emqx-enterprise", "25.1.2-2", "ubuntu20.04", "erlang"]
         builder:
-        - 5.0-28
+          - 5.0-29
         elixir:
-        - 1.13.4
+          - '1.13.4'
 
     container: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.profile[1] }}-${{ matrix.profile[2] }}"
 
@@ -54,18 +53,22 @@ jobs:
       run: |
         git config --global --add safe.directory "$GITHUB_WORKSPACE"
     - name: build and test tgz package
+      if: matrix.profile[3] == 'erlang'
       run: |
         make ${EMQX_NAME}-tgz
         ./scripts/pkg-tests.sh ${EMQX_NAME}-tgz
     - name: build and test deb/rpm packages
+      if: matrix.profile[3] == 'erlang'
       run: |
         make ${EMQX_NAME}-pkg
         ./scripts/pkg-tests.sh ${EMQX_NAME}-pkg
     - name: build and test tgz package (Elixir)
+      if: matrix.profile[3] == 'elixir'
       run: |
         make ${EMQX_NAME}-elixir-tgz
         ./scripts/pkg-tests.sh ${EMQX_NAME}-elixir-tgz
     - name: build and test deb/rpm packages (Elixir)
+      if: matrix.profile[3] == 'elixir'
       run: |
         make ${EMQX_NAME}-elixir-pkg
         ./scripts/pkg-tests.sh ${EMQX_NAME}-elixir-pkg

+ 4 - 3
.github/workflows/check_deps_integrity.yaml

@@ -1,11 +1,12 @@
 name: Check Rebar Dependencies
 
-on: [pull_request, push]
+on:
+  pull_request:
 
 jobs:
   check_deps_integrity:
-    runs-on: ubuntu-20.04
-    container: ghcr.io/emqx/emqx-builder/5.0-28:1.13.4-25.1.2-2-ubuntu20.04
+    runs-on: ubuntu-latest
+    container: ghcr.io/emqx/emqx-builder/5.0-29:1.13.4-25.1.2-2-ubuntu22.04
 
     steps:
       - uses: actions/checkout@v3

+ 2 - 2
.github/workflows/code_style_check.yaml

@@ -4,8 +4,8 @@ on: [pull_request]
 
 jobs:
   code_style_check:
-    runs-on: ubuntu-20.04
-    container: "ghcr.io/emqx/emqx-builder/5.0-28:1.13.4-25.1.2-2-ubuntu20.04"
+    runs-on: ubuntu-22.04
+    container: "ghcr.io/emqx/emqx-builder/5.0-29:1.13.4-25.1.2-2-ubuntu22.04"
     steps:
       - uses: actions/checkout@v3
         with:

+ 3 - 2
.github/workflows/elixir_apps_check.yaml

@@ -2,13 +2,14 @@
 
 name: Check Elixir Release Applications
 
-on: [pull_request, push]
+on:
+  pull_request:
 
 jobs:
   elixir_apps_check:
     runs-on: ubuntu-latest
     # just use the latest builder
-    container: "ghcr.io/emqx/emqx-builder/5.0-28:1.13.4-25.1.2-2-ubuntu20.04"
+    container: "ghcr.io/emqx/emqx-builder/5.0-29:1.13.4-25.1.2-2-ubuntu22.04"
 
     strategy:
       fail-fast: false

+ 4 - 3
.github/workflows/elixir_deps_check.yaml

@@ -2,12 +2,13 @@
 
 name: Elixir Dependency Version Check
 
-on: [pull_request, push]
+on:
+  pull_request:
 
 jobs:
   elixir_deps_check:
-    runs-on: ubuntu-20.04
-    container: ghcr.io/emqx/emqx-builder/5.0-28:1.13.4-25.1.2-2-ubuntu20.04
+    runs-on: ubuntu-latest
+    container: ghcr.io/emqx/emqx-builder/5.0-29:1.13.4-25.1.2-2-ubuntu22.04
 
     steps:
       - name: Checkout

+ 1 - 1
.github/workflows/elixir_release.yml

@@ -17,7 +17,7 @@ jobs:
         profile:
           - emqx
           - emqx-enterprise
-    container: ghcr.io/emqx/emqx-builder/5.0-28:1.13.4-25.1.2-2-ubuntu20.04
+    container: ghcr.io/emqx/emqx-builder/5.0-29:1.13.4-25.1.2-2-ubuntu22.04
     steps:
       - name: Checkout
         uses: actions/checkout@v3

+ 4 - 4
.github/workflows/run_emqx_app_tests.yaml

@@ -12,7 +12,7 @@ jobs:
     strategy:
       matrix:
         builder:
-          - 5.0-28
+          - 5.0-29
         otp:
           - 24.3.4.2-2
           - 25.1.2-2
@@ -22,16 +22,16 @@ jobs:
         elixir:
           - 1.13.4
         os:
-          - ubuntu20.04
+          - ubuntu22.04
         arch:
           - amd64
         runs-on:
           - aws-amd64
-          - ubuntu-20.04
+          - ubuntu-22.04
         use-self-hosted:
           - ${{ github.repository_owner == 'emqx' }}
         exclude:
-          - runs-on: ubuntu-20.04
+          - runs-on: ubuntu-22.04
             use-self-hosted: true
           - runs-on: aws-amd64
             use-self-hosted: false

+ 8 - 7
.github/workflows/run_fvt_tests.yaml

@@ -7,16 +7,17 @@ concurrency:
 on:
   push:
     branches:
-      - '**'
+      - master
+      - 'ci/**'
     tags:
       - v*
   pull_request:
 
 jobs:
   prepare:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     # prepare source with any OTP version, no need for a matrix
-    container: ghcr.io/emqx/emqx-builder/5.0-28:1.13.4-24.3.4.2-2-debian11
+    container: ghcr.io/emqx/emqx-builder/5.0-29:1.13.4-24.3.4.2-2-debian11
 
     steps:
       - uses: actions/checkout@v3
@@ -33,7 +34,7 @@ jobs:
           path: source.zip
 
   docker_test:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     needs: prepare
 
     strategy:
@@ -49,7 +50,7 @@ jobs:
         os:
           - ["debian11", "debian:11-slim"]
         builder:
-          - 5.0-28
+          - 5.0-29
         otp:
           - 24.3.4.2-2
         elixir:
@@ -107,7 +108,7 @@ jobs:
         docker exec node1.emqx.io node_dump
 
   helm_test:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-22.04
     needs: prepare
 
     strategy:
@@ -122,7 +123,7 @@ jobs:
         os:
         - ["debian11", "debian:11-slim"]
         builder:
-        - 5.0-28
+        - 5.0-29
         otp:
         - 24.3.4.2-2
         elixir:

+ 2 - 2
.github/workflows/run_relup_tests.yaml

@@ -14,8 +14,8 @@ concurrency:
 
 jobs:
   relup_test_plan:
-    runs-on: ubuntu-20.04
-    container: "ghcr.io/emqx/emqx-builder/5.0-28:1.13.4-24.3.4.2-2-ubuntu20.04"
+    runs-on: ubuntu-22.04
+    container: "ghcr.io/emqx/emqx-builder/5.0-29:1.13.4-24.3.4.2-2-ubuntu22.04"
     outputs:
       CUR_EE_VSN: ${{ steps.find-versions.outputs.CUR_EE_VSN }}
       OLD_VERSIONS: ${{ steps.find-versions.outputs.OLD_VERSIONS }}

+ 212 - 211
.github/workflows/run_test_cases.yaml

@@ -7,225 +7,226 @@ concurrency:
 on:
   push:
     branches:
-      - '**'
+      - master
+      - 'ci/**'
     tags:
       - v*
       - e*
   pull_request:
 
 jobs:
-    build-matrix:
-        runs-on: ubuntu-latest
-        outputs:
-          prepare: ${{ steps.matrix.outputs.prepare }}
-          host: ${{ steps.matrix.outputs.host }}
-          docker: ${{ steps.matrix.outputs.docker }}
-          runs-on: ${{ steps.runner.outputs.runs-on }}
-        steps:
-          - uses: actions/checkout@v3
-          - name: Build matrix
-            id: matrix
-            run: |
-              APPS="$(./scripts/find-apps.sh --ci)"
-              MATRIX="$(echo "${APPS}" | jq -c '
-                [
-                  (.[] | select(.profile == "emqx") | . + {
-                    builder: "5.0-28",
-                    otp: "25.1.2-2",
-                    elixir: "1.13.4"
-                  }),
-                  (.[] | select(.profile == "emqx-enterprise") | . + {
-                    builder: "5.0-28",
-                    otp: ["24.3.4.2-2", "25.1.2-2"][],
-                    elixir: "1.13.4"
-                  })
-                ]
-              ')"
-              echo "${MATRIX}" | jq
-              MATRIX_PREPARE="$(echo "${MATRIX}" | jq -c 'map({profile, builder, otp, elixir}) | unique')"
-              MATRIX_HOST="$(echo "${MATRIX}" | jq -c 'map(select(.runner == "host"))')"
-              MATRIX_DOCKER="$(echo "${MATRIX}" | jq -c 'map(select(.runner == "docker"))')"
-              echo "prepare=${MATRIX_PREPARE}" | tee -a $GITHUB_OUTPUT
-              echo "host=${MATRIX_HOST}" | tee -a $GITHUB_OUTPUT
-              echo "docker=${MATRIX_DOCKER}" | tee -a $GITHUB_OUTPUT
-          - name: Choose runner host
-            id: runner
-            run: |
-              RUNS_ON="ubuntu-20.04"
-              ${{ github.repository_owner == 'emqx' }} && RUNS_ON="aws-amd64"
-              echo "runs-on=${RUNS_ON}" | tee -a $GITHUB_OUTPUT
+  build-matrix:
+    runs-on: ubuntu-latest
+    outputs:
+      prepare: ${{ steps.matrix.outputs.prepare }}
+      host: ${{ steps.matrix.outputs.host }}
+      docker: ${{ steps.matrix.outputs.docker }}
+      runs-on: ${{ steps.runner.outputs.runs-on }}
+    steps:
+      - uses: actions/checkout@v3
+      - name: Build matrix
+        id: matrix
+        run: |
+          APPS="$(./scripts/find-apps.sh --ci)"
+          MATRIX="$(echo "${APPS}" | jq -c '
+            [
+              (.[] | select(.profile == "emqx") | . + {
+                builder: "5.0-29",
+                otp: "25.1.2-2",
+                elixir: "1.13.4"
+              }),
+              (.[] | select(.profile == "emqx-enterprise") | . + {
+                builder: "5.0-29",
+                otp: ["24.3.4.2-2", "25.1.2-2"][],
+                elixir: "1.13.4"
+              })
+            ]
+          ')"
+          echo "${MATRIX}" | jq
+          MATRIX_PREPARE="$(echo "${MATRIX}" | jq -c 'map({profile, builder, otp, elixir}) | unique')"
+          MATRIX_HOST="$(echo "${MATRIX}" | jq -c 'map(select(.runner == "host"))')"
+          MATRIX_DOCKER="$(echo "${MATRIX}" | jq -c 'map(select(.runner == "docker"))')"
+          echo "prepare=${MATRIX_PREPARE}" | tee -a $GITHUB_OUTPUT
+          echo "host=${MATRIX_HOST}" | tee -a $GITHUB_OUTPUT
+          echo "docker=${MATRIX_DOCKER}" | tee -a $GITHUB_OUTPUT
+      - name: Choose runner host
+        id: runner
+        run: |
+          RUNS_ON="ubuntu-22.04"
+          ${{ github.repository_owner == 'emqx' }} && RUNS_ON="aws-amd64"
+          echo "runs-on=${RUNS_ON}" | tee -a $GITHUB_OUTPUT
 
-    prepare:
-        runs-on: ${{ needs.build-matrix.outputs.runs-on }}
-        needs: [build-matrix]
-        strategy:
-          fail-fast: false
-          matrix:
-            include: ${{ fromJson(needs.build-matrix.outputs.prepare) }}
-        container: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-ubuntu20.04"
-        steps:
-        - uses: AutoModality/action-clean@v1
-        - uses: actions/checkout@v3
-          with:
-            path: source
-        - name: get_all_deps
-          working-directory: source
-          env:
-            PROFILE: ${{ matrix.profile }}
-              #DIAGNOSTIC: 1
-          run: |
-            make ensure-rebar3
-            # fetch all deps and compile
-            make ${{ matrix.profile }}
-            make static_checks
-            make test-compile
-            cd ..
-            zip -ryq source.zip source/* source/.[^.]*
-        - uses: actions/upload-artifact@v3
-          with:
-            name: source-${{ matrix.profile }}-${{ matrix.otp }}
-            path: source.zip
+  prepare:
+    runs-on: ${{ needs.build-matrix.outputs.runs-on }}
+    needs: [build-matrix]
+    strategy:
+      fail-fast: false
+      matrix:
+        include: ${{ fromJson(needs.build-matrix.outputs.prepare) }}
+    container: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-ubuntu20.04"
+    steps:
+      - uses: AutoModality/action-clean@v1
+      - uses: actions/checkout@v3
+        with:
+          path: source
+      - name: get_all_deps
+        working-directory: source
+        env:
+          PROFILE: ${{ matrix.profile }}
+            #DIAGNOSTIC: 1
+        run: |
+          make ensure-rebar3
+          # fetch all deps and compile
+          make ${{ matrix.profile }}
+          make static_checks
+          make test-compile
+          cd ..
+          zip -ryq source.zip source/* source/.[^.]*
+      - uses: actions/upload-artifact@v3
+        with:
+          name: source-${{ matrix.profile }}-${{ matrix.otp }}
+          path: source.zip
 
-    eunit_and_proper:
-        needs:
-          - build-matrix
-          - prepare
-        runs-on: ${{ needs.build-matrix.outputs.runs-on }}
-        strategy:
-          fail-fast: false
-          matrix:
-            include: ${{ fromJson(needs.build-matrix.outputs.prepare) }}
+  eunit_and_proper:
+    needs:
+      - build-matrix
+      - prepare
+    runs-on: ${{ needs.build-matrix.outputs.runs-on }}
+    strategy:
+      fail-fast: false
+      matrix:
+        include: ${{ fromJson(needs.build-matrix.outputs.prepare) }}
 
-        defaults:
-          run:
-            shell: bash
-        container: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-ubuntu20.04"
+    defaults:
+      run:
+        shell: bash
+    container: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-ubuntu20.04"
 
-        steps:
-        - uses: AutoModality/action-clean@v1
-        - uses: actions/download-artifact@v3
-          with:
-            name: source-${{ matrix.profile }}-${{ matrix.otp }}
-            path: .
-        - name: unzip source code
-          run: unzip -o -q source.zip
-          # produces eunit.coverdata
-        - name: eunit
-          env:
-            PROFILE: ${{ matrix.profile }}
-            CT_COVER_EXPORT_PREFIX: ${{ matrix.profile }}-${{ matrix.otp }}
-          working-directory: source
-          run: make eunit
+    steps:
+      - uses: AutoModality/action-clean@v1
+      - uses: actions/download-artifact@v3
+        with:
+          name: source-${{ matrix.profile }}-${{ matrix.otp }}
+          path: .
+      - name: unzip source code
+        run: unzip -o -q source.zip
+        # produces eunit.coverdata
+      - name: eunit
+        env:
+          PROFILE: ${{ matrix.profile }}
+          CT_COVER_EXPORT_PREFIX: ${{ matrix.profile }}-${{ matrix.otp }}
+        working-directory: source
+        run: make eunit
 
-          # produces proper.coverdata
-        - name: proper
-          env:
-            PROFILE: ${{ matrix.profile }}
-            CT_COVER_EXPORT_PREFIX: ${{ matrix.profile }}-${{ matrix.otp }}
-          working-directory: source
-          run: make proper
+        # produces proper.coverdata
+      - name: proper
+        env:
+          PROFILE: ${{ matrix.profile }}
+          CT_COVER_EXPORT_PREFIX: ${{ matrix.profile }}-${{ matrix.otp }}
+        working-directory: source
+        run: make proper
 
-        - uses: actions/upload-artifact@v3
-          with:
-            name: coverdata
-            path: source/_build/test/cover
+      - uses: actions/upload-artifact@v3
+        with:
+          name: coverdata
+          path: source/_build/test/cover
 
-    ct_docker:
-        needs:
-          - build-matrix
-          - prepare
-        runs-on: ${{ needs.build-matrix.outputs.runs-on }}
-        strategy:
-          fail-fast: false
-          matrix:
-            include: ${{ fromJson(needs.build-matrix.outputs.docker) }}
+  ct_docker:
+    needs:
+      - build-matrix
+      - prepare
+    runs-on: ${{ needs.build-matrix.outputs.runs-on }}
+    strategy:
+      fail-fast: false
+      matrix:
+        include: ${{ fromJson(needs.build-matrix.outputs.docker) }}
 
-        defaults:
-          run:
-            shell: bash
+    defaults:
+      run:
+        shell: bash
 
-        steps:
-        - uses: AutoModality/action-clean@v1
-        - uses: actions/download-artifact@v3
-          with:
-            name: source-${{ matrix.profile }}-${{ matrix.otp }}
-            path: .
-        - name: unzip source code
-          run: unzip -q source.zip
-        - name: run tests
-          working-directory: source
-          env:
-            DOCKER_CT_RUNNER_IMAGE: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-ubuntu20.04"
-            MONGO_TAG: "5"
-            MYSQL_TAG: "8"
-            PGSQL_TAG: "13"
-            REDIS_TAG: "7.0"
-            INFLUXDB_TAG: "2.5.0"
-            TDENGINE_TAG: "3.0.2.4"
-            PROFILE: ${{ matrix.profile }}
-            CT_COVER_EXPORT_PREFIX: ${{ matrix.profile }}-${{ matrix.otp }}
-          run: ./scripts/ct/run.sh --ci --app ${{ matrix.app }}
-        - uses: actions/upload-artifact@v3
-          with:
-            name: coverdata
-            path: source/_build/test/cover
-        - uses: actions/upload-artifact@v3
-          if: failure()
-          with:
-            name: logs-${{ matrix.profile }}-${{ matrix.prefix }}-${{ matrix.otp }}
-            path: source/_build/test/logs
+    steps:
+      - uses: AutoModality/action-clean@v1
+      - uses: actions/download-artifact@v3
+        with:
+          name: source-${{ matrix.profile }}-${{ matrix.otp }}
+          path: .
+      - name: unzip source code
+        run: unzip -q source.zip
+      - name: run tests
+        working-directory: source
+        env:
+          DOCKER_CT_RUNNER_IMAGE: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-ubuntu20.04"
+          MONGO_TAG: "5"
+          MYSQL_TAG: "8"
+          PGSQL_TAG: "13"
+          REDIS_TAG: "7.0"
+          INFLUXDB_TAG: "2.5.0"
+          TDENGINE_TAG: "3.0.2.4"
+          PROFILE: ${{ matrix.profile }}
+          CT_COVER_EXPORT_PREFIX: ${{ matrix.profile }}-${{ matrix.otp }}
+        run: ./scripts/ct/run.sh --ci --app ${{ matrix.app }}
+      - uses: actions/upload-artifact@v3
+        with:
+          name: coverdata
+          path: source/_build/test/cover
+      - uses: actions/upload-artifact@v3
+        if: failure()
+        with:
+          name: logs-${{ matrix.profile }}-${{ matrix.prefix }}-${{ matrix.otp }}
+          path: source/_build/test/logs
 
-    ct:
-        needs:
-          - build-matrix
-          - prepare
-        runs-on: ${{ needs.build-matrix.outputs.runs-on }}
-        strategy:
-          fail-fast: false
-          matrix:
-            include: ${{ fromJson(needs.build-matrix.outputs.host) }}
+  ct:
+    needs:
+      - build-matrix
+      - prepare
+    runs-on: ${{ needs.build-matrix.outputs.runs-on }}
+    strategy:
+      fail-fast: false
+      matrix:
+        include: ${{ fromJson(needs.build-matrix.outputs.host) }}
 
-        container: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-ubuntu20.04"
-        defaults:
-          run:
-            shell: bash
+    container: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-ubuntu20.04"
+    defaults:
+      run:
+        shell: bash
 
-        steps:
-        - uses: AutoModality/action-clean@v1
-        - uses: actions/download-artifact@v3
-          with:
-            name: source-${{ matrix.profile }}-${{ matrix.otp }}
-            path: .
-        - name: unzip source code
-          run: unzip -q source.zip
+    steps:
+      - uses: AutoModality/action-clean@v1
+      - uses: actions/download-artifact@v3
+        with:
+          name: source-${{ matrix.profile }}-${{ matrix.otp }}
+          path: .
+      - name: unzip source code
+        run: unzip -q source.zip
 
-          # produces $PROFILE-<app-name>.coverdata
-        - name: run common test
-          working-directory: source
-          env:
-            PROFILE: ${{ matrix.profile }}
-            CT_COVER_EXPORT_PREFIX: ${{ matrix.profile }}-${{ matrix.otp }}
-          run: |
-            make "${{ matrix.app }}-ct"
-        - uses: actions/upload-artifact@v3
-          with:
-            name: coverdata
-            path: source/_build/test/cover
-            if-no-files-found: warn # do not fail if no coverdata found
-        - uses: actions/upload-artifact@v3
-          if: failure()
-          with:
-            name: logs-${{ matrix.profile }}-${{ matrix.prefix }}-${{ matrix.otp }}
-            path: source/_build/test/logs
+        # produces $PROFILE-<app-name>.coverdata
+      - name: run common test
+        working-directory: source
+        env:
+          PROFILE: ${{ matrix.profile }}
+          CT_COVER_EXPORT_PREFIX: ${{ matrix.profile }}-${{ matrix.otp }}
+        run: |
+          make "${{ matrix.app }}-ct"
+      - uses: actions/upload-artifact@v3
+        with:
+          name: coverdata
+          path: source/_build/test/cover
+          if-no-files-found: warn # do not fail if no coverdata found
+      - uses: actions/upload-artifact@v3
+        if: failure()
+        with:
+          name: logs-${{ matrix.profile }}-${{ matrix.prefix }}-${{ matrix.otp }}
+          path: source/_build/test/logs
 
-    make_cover:
-      needs:
-        - eunit_and_proper
-        - ct
-        - ct_docker
-      runs-on: ubuntu-20.04
-      container: "ghcr.io/emqx/emqx-builder/5.0-28:1.13.4-24.3.4.2-2-ubuntu20.04"
-      steps:
+  make_cover:
+    needs:
+      - eunit_and_proper
+      - ct
+      - ct_docker
+    runs-on: ubuntu-22.04
+    container: "ghcr.io/emqx/emqx-builder/5.0-29:1.13.4-24.3.4.2-2-ubuntu22.04"
+    steps:
       - uses: AutoModality/action-clean@v1
       - uses: actions/download-artifact@v3
         with:
@@ -258,15 +259,15 @@ jobs:
         if: failure()
         run: cat rebar3.crashdump
 
-    # do this in a separate job
-    upload_coverdata:
-      needs: make_cover
-      runs-on: ubuntu-20.04
-      steps:
-        - name: Coveralls Finished
-          env:
-            GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-          run: |
-            curl -v -k https://coveralls.io/webhook \
-                 --header "Content-Type: application/json" \
-                 --data "{\"repo_name\":\"$GITHUB_REPOSITORY\",\"repo_token\":\"$GITHUB_TOKEN\",\"payload\":{\"build_num\":$GITHUB_RUN_ID,\"status\":\"done\"}}" || true
+  # do this in a separate job
+  upload_coverdata:
+    needs: make_cover
+    runs-on: ubuntu-20.04
+    steps:
+      - name: Coveralls Finished
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+        run: |
+          curl -v -k https://coveralls.io/webhook \
+               --header "Content-Type: application/json" \
+               --data "{\"repo_name\":\"$GITHUB_REPOSITORY\",\"repo_token\":\"$GITHUB_TOKEN\",\"payload\":{\"build_num\":$GITHUB_RUN_ID,\"status\":\"done\"}}" || true

+ 3 - 2
.github/workflows/shellcheck.yaml

@@ -1,10 +1,11 @@
 name: Shellcheck
 
-on: [pull_request, push]
+on:
+  pull_request:
 
 jobs:
   shellcheck:
-    runs-on: ubuntu-20.04
+    runs-on: ubuntu-latest
     steps:
       - name: Checkout source code
         uses: actions/checkout@v3

+ 1 - 0
.github/workflows/stale.yaml

@@ -11,6 +11,7 @@ on:
 jobs:
   stale:
     runs-on: ubuntu-latest
+    if: github.repository_owner == 'emqx'
     permissions:
       issues: write
       pull-requests: none

+ 1 - 0
changes/ce/feat-10022.en.md

@@ -0,0 +1 @@
+Start releasing Rocky Linux 9 (compatible with Enterprise Linux 9) and MacOS 12 packages

+ 1 - 0
changes/ce/feat-10022.zh.md

@@ -0,0 +1 @@
+开始发布Rocky Linux 9(与Enterprise Linux 9兼容)和MacOS 12软件包。

+ 1 - 1
mix.exs

@@ -53,7 +53,7 @@ defmodule EMQXUmbrella.MixProject do
       {:jiffy, github: "emqx/jiffy", tag: "1.0.5", override: true},
       {:cowboy, github: "emqx/cowboy", tag: "2.9.0", override: true},
       {:esockd, github: "emqx/esockd", tag: "5.9.4", override: true},
-      {:rocksdb, github: "emqx/erlang-rocksdb", tag: "1.7.2-emqx-7", override: true},
+      {:rocksdb, github: "emqx/erlang-rocksdb", tag: "1.7.2-emqx-9", override: true},
       {:ekka, github: "emqx/ekka", tag: "0.14.1", override: true},
       {:gen_rpc, github: "emqx/gen_rpc", tag: "2.8.1", override: true},
       {:grpc, github: "emqx/grpc-erl", tag: "0.6.7", override: true},

+ 1 - 1
rebar.config

@@ -55,7 +55,7 @@
     , {jiffy, {git, "https://github.com/emqx/jiffy", {tag, "1.0.5"}}}
     , {cowboy, {git, "https://github.com/emqx/cowboy", {tag, "2.9.0"}}}
     , {esockd, {git, "https://github.com/emqx/esockd", {tag, "5.9.4"}}}
-    , {rocksdb, {git, "https://github.com/emqx/erlang-rocksdb", {tag, "1.7.2-emqx-7"}}}
+    , {rocksdb, {git, "https://github.com/emqx/erlang-rocksdb", {tag, "1.7.2-emqx-9"}}}
     , {ekka, {git, "https://github.com/emqx/ekka", {tag, "0.14.1"}}}
     , {gen_rpc, {git, "https://github.com/emqx/gen_rpc", {tag, "2.8.1"}}}
     , {grpc, {git, "https://github.com/emqx/grpc-erl", {tag, "0.6.7"}}}

+ 1 - 1
scripts/ct/run.sh

@@ -17,7 +17,7 @@ help() {
     echo "--only-up:              Only start the testbed but do not run CT"
     echo "--keep-up:              Keep the testbed running after CT"
     echo "--ci:                   Set this flag in GitHub action to enforce no tests are skipped"
-    echo "--"                     If any, all args after '--' are passed to rebar3 ct
+    echo "--:                     If any, all args after '--' are passed to rebar3 ct"
     echo "                        otherwise it runs the entire app's CT"
 }