Merge pull request #11262 from thalesmg/fix-gcp-consumer-hc-20230712-… #22351
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run test case | |
concurrency: | |
group: test-${{ github.event_name }}-${{ github.ref }} | |
cancel-in-progress: true | |
on: | |
push: | |
branches: | |
- master | |
- 'ci/**' | |
tags: | |
- v* | |
- e* | |
pull_request: | |
env: | |
IS_CI: "yes" | |
jobs: | |
build-matrix: | |
runs-on: ubuntu-22.04 | |
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.1-1", | |
otp: "25.3.2-1", | |
elixir: "1.14.5" | |
}), | |
(.[] | select(.profile == "emqx-enterprise") | . + { | |
builder: "5.1-1", | |
otp: ["25.3.2-1"][], | |
elixir: "1.14.5" | |
}) | |
] | |
')" | |
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 }}-ubuntu22.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 }} | |
run: | | |
make ensure-rebar3 | |
# fetch all deps and compile | |
make ${{ matrix.profile }}-compile | |
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 | |
check_examples: | |
needs: | |
- build-matrix | |
- prepare | |
runs-on: ${{ needs.build-matrix.outputs.runs-on }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: ${{ fromJson(needs.build-matrix.outputs.prepare) }} | |
container: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-ubuntu22.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 | |
- name: check example config files | |
env: | |
PROFILE: ${{ matrix.profile }} | |
working-directory: source | |
run: ./scripts/test/check-example-configs.sh | |
static_checks: | |
needs: | |
- build-matrix | |
- prepare | |
runs-on: ${{ needs.build-matrix.outputs.runs-on }} | |
strategy: | |
fail-fast: false | |
matrix: | |
include: ${{ fromJson(needs.build-matrix.outputs.prepare) }} | |
container: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-ubuntu22.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 | |
- uses: actions/cache@v3 | |
with: | |
path: "source/emqx_dialyzer_${{ matrix.otp }}_plt" | |
key: rebar3-dialyzer-plt-${{ matrix.profile }}-${{ matrix.otp }}-${{ hashFiles('source/rebar.*', 'source/apps/*/rebar.*', 'source/lib-ee/*/rebar.*') }} | |
restore-keys: | | |
rebar3-dialyzer-plt-${{ matrix.profile }}-${{ matrix.otp }}- | |
- name: run static checks | |
env: | |
PROFILE: ${{ matrix.profile }} | |
working-directory: source | |
run: make static_checks | |
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 }}-ubuntu22.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 | |
# 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 | |
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 | |
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>-<otp-vsn>-sg<suitegroup>.coverdata | |
- name: run common tests | |
working-directory: source | |
env: | |
DOCKER_CT_RUNNER_IMAGE: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-ubuntu22.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" | |
OPENTS_TAG: "9aa7f88" | |
MINIO_TAG: "RELEASE.2023-03-20T20-16-18Z" | |
PROFILE: ${{ matrix.profile }} | |
SUITEGROUP: ${{ matrix.suitegroup }} | |
CT_COVER_EXPORT_PREFIX: ${{ matrix.profile }}-${{ matrix.otp }}-sg${{ matrix.suitegroup }} | |
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 }}-sg${{ matrix.suitegroup }} | |
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) }} | |
container: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-ubuntu22.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 | |
# produces $PROFILE-<app-name>-<otp-vsn>-sg<suitegroup>.coverdata | |
- name: run common tests | |
working-directory: source | |
env: | |
PROFILE: ${{ matrix.profile }} | |
SUITEGROUP: ${{ matrix.suitegroup }} | |
CT_COVER_EXPORT_PREFIX: ${{ matrix.profile }}-${{ matrix.otp }}-sg${{ matrix.suitegroup }} | |
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 }}-sg${{ matrix.suitegroup }} | |
path: source/_build/test/logs | |
make_cover: | |
needs: | |
- eunit_and_proper | |
- ct | |
- ct_docker | |
runs-on: ubuntu-22.04 | |
container: "ghcr.io/emqx/emqx-builder/5.1-1:1.14.5-25.3.2-1-ubuntu22.04" | |
steps: | |
- uses: AutoModality/action-clean@v1 | |
- uses: actions/download-artifact@v3 | |
with: | |
name: source-emqx-enterprise-25.3.2-1 | |
path: . | |
- name: unzip source code | |
run: unzip -q source.zip | |
- uses: actions/download-artifact@v3 | |
name: download coverdata | |
with: | |
name: coverdata | |
path: source/_build/test/cover | |
- name: make cover | |
working-directory: source | |
env: | |
PROFILE: emqx-enterprise | |
run: make cover | |
- name: send to coveralls | |
working-directory: source | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
PROFILE: emqx-enterprise | |
run: make coveralls | |
- name: get coveralls logs | |
working-directory: source | |
if: failure() | |
run: cat rebar3.crashdump | |
# do this in a separate job | |
upload_coverdata: | |
needs: make_cover | |
runs-on: ubuntu-22.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 |