From fdde829ab92973a90879615e03f861c62c688688 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Tue, 26 Apr 2022 17:36:09 +0200 Subject: [PATCH 1/6] ci: better names to ci checks --- .github/workflows/build_slim_packages.yaml | 15 +++++++++++++++ .github/workflows/code_style_check.yaml | 2 +- .github/workflows/elixir_release.yml | 2 +- .github/workflows/run_broker_tests.yaml | 12 ++++++++++++ .github/workflows/run_emqx_app_tests.yaml | 2 +- .github/workflows/run_test_cases.yaml | 17 ++++++++++++++++- 6 files changed, 46 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_slim_packages.yaml b/.github/workflows/build_slim_packages.yaml index 951ebbcfb..c5427e1c9 100644 --- a/.github/workflows/build_slim_packages.yaml +++ b/.github/workflows/build_slim_packages.yaml @@ -233,3 +233,18 @@ jobs: cd /LanguageTool bash start.sh > /dev/null & ./emqx_schema_validate /tmp/${{ matrix.profile }}/lib/emqx_dashboard/priv/www/static/schema.json + + packaging_allgood: + runs-on: ubuntu-20.04 + if: always() + needs: + - linux + - windows + - mac + steps: + - name: Check if all packging builds succeeded + uses: re-actors/alls-green@release/v1 + with: + #allowed-failures: + #allowed-skips: + jobs: ${{ toJSON(needs) }} diff --git a/.github/workflows/code_style_check.yaml b/.github/workflows/code_style_check.yaml index e7fac1c5a..ed9411093 100644 --- a/.github/workflows/code_style_check.yaml +++ b/.github/workflows/code_style_check.yaml @@ -3,7 +3,7 @@ name: Code style check on: [pull_request] jobs: - build: + code_style_check: strategy: matrix: otp: diff --git a/.github/workflows/elixir_release.yml b/.github/workflows/elixir_release.yml index 8af96830b..3ce943633 100644 --- a/.github/workflows/elixir_release.yml +++ b/.github/workflows/elixir_release.yml @@ -10,7 +10,7 @@ on: workflow_dispatch: jobs: - build: + elixir_release_build: runs-on: ubuntu-latest container: ghcr.io/emqx/emqx-builder/5.0-10:1.13.3-24.2.1-1-ubuntu20.04 diff --git a/.github/workflows/run_broker_tests.yaml b/.github/workflows/run_broker_tests.yaml index 0b20a641e..4d0f5130d 100644 --- a/.github/workflows/run_broker_tests.yaml +++ b/.github/workflows/run_broker_tests.yaml @@ -519,3 +519,15 @@ jobs: - uses: geekyeggo/delete-artifact@v1 with: name: emqx.tar + + integration_tests_allgood: + runs-on: ubuntu-20.04 + if: always() + needs: [advanced_feat,pgsql_authn_authz,JWT_authn,mysql_authn_authz,built_in_database_authn_authz] + steps: + - name: Check if all integration tests succeeded + uses: re-actors/alls-green@release/v1 + with: + #allowed-failures: + #allowed-skips: + jobs: ${{ toJSON(needs) }} diff --git a/.github/workflows/run_emqx_app_tests.yaml b/.github/workflows/run_emqx_app_tests.yaml index d10007139..ae296bd12 100644 --- a/.github/workflows/run_emqx_app_tests.yaml +++ b/.github/workflows/run_emqx_app_tests.yaml @@ -14,7 +14,7 @@ on: pull_request: jobs: - check_all: + run_emqx_app_tests: strategy: matrix: otp: diff --git a/.github/workflows/run_test_cases.yaml b/.github/workflows/run_test_cases.yaml index 98ae52b14..8e088364c 100644 --- a/.github/workflows/run_test_cases.yaml +++ b/.github/workflows/run_test_cases.yaml @@ -215,7 +215,7 @@ jobs: run: make coveralls # do this in a separate job - finish: + upload_coverdata: needs: make_cover runs-on: aws-amd64 steps: @@ -226,3 +226,18 @@ jobs: 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 + + functional_tests_allgood: + runs-on: ubuntu-20.04 + if: always() + needs: + - eunit_and_proper + - ct_docker + - ct + steps: + - name: Check if all functional tests succeeded + uses: re-actors/alls-green@release/v1 + with: + #allowed-failures: + #allowed-skips: + jobs: ${{ toJSON(needs) }} From a93eee5d083adb6dfbc9d6e809fae64ec123df9d Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Tue, 26 Apr 2022 22:29:54 +0200 Subject: [PATCH 2/6] ci: rename broker tests ci job to 'run_jmeter_tests' --- ...broker_tests.yaml => run_jmeter_tests.yaml} | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) rename .github/workflows/{run_broker_tests.yaml => run_jmeter_tests.yaml} (97%) diff --git a/.github/workflows/run_broker_tests.yaml b/.github/workflows/run_jmeter_tests.yaml similarity index 97% rename from .github/workflows/run_broker_tests.yaml rename to .github/workflows/run_jmeter_tests.yaml index 4d0f5130d..a35b366c8 100644 --- a/.github/workflows/run_broker_tests.yaml +++ b/.github/workflows/run_jmeter_tests.yaml @@ -1,4 +1,4 @@ -name: Broker tests +name: JMeter integration tests on: push: @@ -9,7 +9,7 @@ on: - "master" jobs: - build: + build_emqx_for_jmeter_tests: runs-on: ubuntu-latest outputs: version: ${{ steps.build_docker.outputs.version}} @@ -52,7 +52,7 @@ jobs: - mqtt_topic_rewrite # - mqtt_retainer - needs: build + needs: build_emqx_for_jmeter_tests steps: - uses: actions/checkout@v2 - uses: actions/download-artifact@v2 @@ -65,7 +65,7 @@ jobs: - name: docker compose up timeout-minutes: 5 env: - _EMQX_DOCKER_IMAGE_TAG: emqx/emqx:${{ needs.build.outputs.version }} + _EMQX_DOCKER_IMAGE_TAG: emqx/emqx:${{ needs.build_emqx_for_jmeter_tests.outputs.version }} run: | docker-compose \ -f .ci/docker-compose-file/docker-compose-emqx-cluster.yaml \ @@ -143,7 +143,7 @@ jobs: - pgsql_authn - pgsql_authz - needs: build + needs: build_emqx_for_jmeter_tests steps: - uses: actions/checkout@v2 - uses: actions/download-artifact@v2 @@ -244,7 +244,7 @@ jobs: - mysql_authn - mysql_authz - needs: build + needs: build_emqx_for_jmeter_tests steps: - uses: actions/checkout@v2 - uses: actions/download-artifact@v2 @@ -341,7 +341,7 @@ jobs: scripts_type: - jwt_authn - needs: build + needs: build_emqx_for_jmeter_tests steps: - uses: actions/checkout@v2 - uses: actions/download-artifact@v2 @@ -435,7 +435,7 @@ jobs: - built_in_database_authn - built_in_database_authz - needs: build + needs: build_emqx_for_jmeter_tests steps: - uses: actions/checkout@v2 - uses: actions/download-artifact@v2 @@ -448,7 +448,7 @@ jobs: - name: docker compose up timeout-minutes: 5 env: - _EMQX_DOCKER_IMAGE_TAG: emqx/emqx:${{ needs.build.outputs.version }} + _EMQX_DOCKER_IMAGE_TAG: emqx/emqx:${{ needs.build_emqx_for_jmeter_tests.outputs.version }} PGSQL_TAG: ${{ matrix.mysql_tag }} run: | docker-compose \ From 0ad463ac847d5681a5134877352c2077c77c9705 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Wed, 27 Apr 2022 08:16:25 +0200 Subject: [PATCH 3/6] ci: do not use matrix for code_style_check So the job can be used as 'required' for PRs --- .github/workflows/code_style_check.yaml | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/.github/workflows/code_style_check.yaml b/.github/workflows/code_style_check.yaml index ed9411093..323e4cb64 100644 --- a/.github/workflows/code_style_check.yaml +++ b/.github/workflows/code_style_check.yaml @@ -4,16 +4,8 @@ on: [pull_request] jobs: code_style_check: - strategy: - matrix: - otp: - - 24.2.1-1 - elixir: - - 1.13.3 - os: - - ubuntu20.04 runs-on: ubuntu-20.04 - container: "ghcr.io/emqx/emqx-builder/5.0-10:${{ matrix.elixir}}-${{ matrix.otp }}-${{ matrix.os }}" + container: "ghcr.io/emqx/emqx-builder/5.0-10:1.13.3-24.2.1-1-ubuntu20.04" steps: - uses: actions/checkout@v2 with: From 89d242c3a3979e09611d9eff68dc640fd9e734b7 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Wed, 27 Apr 2022 08:22:36 +0200 Subject: [PATCH 4/6] ci: add 'allgood' summary jobs to a few builds * build_slim_packages * run_emqx_app_tests * run_jmeter_tests * run_test_cases --- .github/workflows/build_slim_packages.yaml | 6 +++--- .github/workflows/run_emqx_app_tests.yaml | 13 +++++++++++++ .github/workflows/run_jmeter_tests.yaml | 8 ++++---- .github/workflows/run_test_cases.yaml | 2 +- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build_slim_packages.yaml b/.github/workflows/build_slim_packages.yaml index c5427e1c9..a68595059 100644 --- a/.github/workflows/build_slim_packages.yaml +++ b/.github/workflows/build_slim_packages.yaml @@ -220,7 +220,7 @@ jobs: - emqx-edge - emqx - emqx-enterprise - runs-on: ubuntu-20.04 + runs-on: aws-amd64 container: "ghcr.io/iequ1/emqx-schema-validate:0.3.1" steps: - uses: actions/download-artifact@v2 @@ -234,8 +234,8 @@ jobs: bash start.sh > /dev/null & ./emqx_schema_validate /tmp/${{ matrix.profile }}/lib/emqx_dashboard/priv/www/static/schema.json - packaging_allgood: - runs-on: ubuntu-20.04 + allgood_packaging: + runs-on: ubuntu-latest if: always() needs: - linux diff --git a/.github/workflows/run_emqx_app_tests.yaml b/.github/workflows/run_emqx_app_tests.yaml index ae296bd12..8f02417f8 100644 --- a/.github/workflows/run_emqx_app_tests.yaml +++ b/.github/workflows/run_emqx_app_tests.yaml @@ -60,3 +60,16 @@ jobs: with: name: logs path: apps/emqx/_build/test/logs + + allgood_emqx_app_tests: + runs-on: ubuntu-latest + if: always() + needs: + - run_emqx_app_tests + steps: + - name: Check if all emqx app tests succeeded + uses: re-actors/alls-green@release/v1 + with: + #allowed-failures: + #allowed-skips: + jobs: ${{ toJSON(needs) }} diff --git a/.github/workflows/run_jmeter_tests.yaml b/.github/workflows/run_jmeter_tests.yaml index a35b366c8..d6dbe8826 100644 --- a/.github/workflows/run_jmeter_tests.yaml +++ b/.github/workflows/run_jmeter_tests.yaml @@ -156,7 +156,7 @@ jobs: - name: docker compose up timeout-minutes: 5 env: - _EMQX_DOCKER_IMAGE_TAG: emqx/emqx:${{ needs.build.outputs.version }} + _EMQX_DOCKER_IMAGE_TAG: emqx/emqx:${{ needs.build_emqx_for_jmeter_tests.outputs.version }} PGSQL_TAG: ${{ matrix.pgsql_tag }} run: | docker-compose \ @@ -257,7 +257,7 @@ jobs: - name: docker compose up timeout-minutes: 5 env: - _EMQX_DOCKER_IMAGE_TAG: emqx/emqx:${{ needs.build.outputs.version }} + _EMQX_DOCKER_IMAGE_TAG: emqx/emqx:${{ needs.build_emqx_for_jmeter_tests.outputs.version }} PGSQL_TAG: ${{ matrix.mysql_tag }} run: | docker-compose \ @@ -354,7 +354,7 @@ jobs: - name: docker compose up timeout-minutes: 5 env: - _EMQX_DOCKER_IMAGE_TAG: emqx/emqx:${{ needs.build.outputs.version }} + _EMQX_DOCKER_IMAGE_TAG: emqx/emqx:${{ needs.build_emqx_for_jmeter_tests.outputs.version }} run: | docker-compose \ -f .ci/docker-compose-file/docker-compose-emqx-cluster.yaml \ @@ -520,7 +520,7 @@ jobs: with: name: emqx.tar - integration_tests_allgood: + allgood_integration_tests: runs-on: ubuntu-20.04 if: always() needs: [advanced_feat,pgsql_authn_authz,JWT_authn,mysql_authn_authz,built_in_database_authn_authz] diff --git a/.github/workflows/run_test_cases.yaml b/.github/workflows/run_test_cases.yaml index 8e088364c..3309e1455 100644 --- a/.github/workflows/run_test_cases.yaml +++ b/.github/workflows/run_test_cases.yaml @@ -227,7 +227,7 @@ jobs: --header "Content-Type: application/json" \ --data "{\"repo_name\":\"$GITHUB_REPOSITORY\",\"repo_token\":\"$GITHUB_TOKEN\",\"payload\":{\"build_num\":$GITHUB_RUN_ID,\"status\":\"done\"}}" || true - functional_tests_allgood: + allgood_functional_tests: runs-on: ubuntu-20.04 if: always() needs: From 94239d98dfaead8c80bc08b1c039e849d1996ef8 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Wed, 27 Apr 2022 13:16:03 +0200 Subject: [PATCH 5/6] ci: no need to test apps/emqx if nothing changed in this sub-dir --- .github/workflows/run_emqx_app_tests.yaml | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run_emqx_app_tests.yaml b/.github/workflows/run_emqx_app_tests.yaml index 8f02417f8..8f9b9133f 100644 --- a/.github/workflows/run_emqx_app_tests.yaml +++ b/.github/workflows/run_emqx_app_tests.yaml @@ -30,11 +30,17 @@ jobs: arch: - amd64 - runs-on: ubuntu-20.04 + runs-on: aws-amd64 container: "ghcr.io/emqx/emqx-builder/5.0-10:${{ matrix.elixir}}-${{ matrix.otp }}-${{ matrix.os }}" + defaults: + run: + shell: bash + steps: - uses: actions/checkout@v2 + with: + fetch-depth: 0 - name: Get deps git refs for cache id: deps-refs run: | @@ -47,6 +53,18 @@ jobs: key: ${{ matrix.os }}-${{ matrix.otp }}-${{ matrix.arch }}-${{ steps.deps-refs.outputs.DEP_QUICER_REF }} - name: run run: | + echo "git diff base: $GITHUB_BASE_REF" + if [[ "$GITHUB_BASE_REF" =~ [0-9a-f]{8,40} ]]; then + # base is a commit sha1 + compare_base="$GITHUB_BASE_REF" + else + compare_base="origin/$GITHUB_BASE_REF" + fi + changed_files="$(git diff --name-only ${compare_base}...HEAD apps/emqx)" + if [ "$changed_files" = '' ]; then + echo "nothing changed in apps/emqx, ignored." + exit 0 + fi make ensure-rebar3 cp rebar3 apps/emqx/ cd apps/emqx From 71d166af276783b3c9e7a7652f5a79abca18c453 Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Thu, 28 Apr 2022 13:50:42 +0200 Subject: [PATCH 6/6] ci: remove 'if: always()' from allgood jobs --- .github/workflows/build_slim_packages.yaml | 1 - .github/workflows/run_emqx_app_tests.yaml | 1 - .github/workflows/run_jmeter_tests.yaml | 1 - .github/workflows/run_test_cases.yaml | 1 - 4 files changed, 4 deletions(-) diff --git a/.github/workflows/build_slim_packages.yaml b/.github/workflows/build_slim_packages.yaml index a68595059..df1d41614 100644 --- a/.github/workflows/build_slim_packages.yaml +++ b/.github/workflows/build_slim_packages.yaml @@ -236,7 +236,6 @@ jobs: allgood_packaging: runs-on: ubuntu-latest - if: always() needs: - linux - windows diff --git a/.github/workflows/run_emqx_app_tests.yaml b/.github/workflows/run_emqx_app_tests.yaml index 8f9b9133f..479757730 100644 --- a/.github/workflows/run_emqx_app_tests.yaml +++ b/.github/workflows/run_emqx_app_tests.yaml @@ -81,7 +81,6 @@ jobs: allgood_emqx_app_tests: runs-on: ubuntu-latest - if: always() needs: - run_emqx_app_tests steps: diff --git a/.github/workflows/run_jmeter_tests.yaml b/.github/workflows/run_jmeter_tests.yaml index d6dbe8826..476ca0ea8 100644 --- a/.github/workflows/run_jmeter_tests.yaml +++ b/.github/workflows/run_jmeter_tests.yaml @@ -522,7 +522,6 @@ jobs: allgood_integration_tests: runs-on: ubuntu-20.04 - if: always() needs: [advanced_feat,pgsql_authn_authz,JWT_authn,mysql_authn_authz,built_in_database_authn_authz] steps: - name: Check if all integration tests succeeded diff --git a/.github/workflows/run_test_cases.yaml b/.github/workflows/run_test_cases.yaml index 3309e1455..eba48b6b8 100644 --- a/.github/workflows/run_test_cases.yaml +++ b/.github/workflows/run_test_cases.yaml @@ -229,7 +229,6 @@ jobs: allgood_functional_tests: runs-on: ubuntu-20.04 - if: always() needs: - eunit_and_proper - ct_docker