Merge pull request #9510 from keynslug/chore/otp-25-compat

chore: enable OTP-25 compatibility
This commit is contained in:
Andrew Mayorov 2022-12-19 15:12:19 +04:00 committed by GitHub
commit cbe54c001c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
41 changed files with 234 additions and 266 deletions

View File

@ -2,7 +2,7 @@
define usage
make -f .ci/docker-compose-file/Makefile.local up
make -f .ci/docker-compose-file/Makefile.local ct CONTAINER=erlang24 SUITE=apps/emqx_authn/test/emqx_authn_mnesia_SUITE.erl
make -f .ci/docker-compose-file/Makefile.local ct CONTAINER=erlang SUITE=apps/emqx_authn/test/emqx_authn_mnesia_SUITE.erl
make -f .ci/docker-compose-file/Makefile.local down
endef
export usage

View File

@ -19,7 +19,7 @@ services:
command: /bin/generate-certs.sh
kdc:
hostname: kdc.emqx.net
image: ghcr.io/emqx/emqx-builder/5.0-17:1.13.4-24.2.1-1-ubuntu20.04
image: ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-24.3.4.2-1-ubuntu20.04
container_name: kdc.emqx.net
networks:
emqx_bridge:

View File

@ -1,9 +1,9 @@
version: '3.9'
services:
erlang24:
container_name: erlang24
image: ghcr.io/emqx/emqx-builder/5.0-17:1.13.4-24.2.1-1-ubuntu20.04
erlang:
container_name: erlang
image: ${DOCKER_CT_RUNNER_IMAGE:-ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-24.3.4.2-1-ubuntu20.04}
env_file:
- conf.env
environment:

View File

@ -3,7 +3,7 @@ inputs:
profile: # emqx, emqx-enterprise
required: true
type: string
otp: # 24.2.1-1, 23.3.4.9-3
otp: # 25.1.2-2, 24.3.4.2-1
required: true
type: string
os:

View File

@ -23,7 +23,7 @@ jobs:
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-24:1.13.4-24.3.4.2-1-ubuntu20.04"
container: "ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-24.3.4.2-1-ubuntu20.04"
outputs:
BUILD_PROFILE: ${{ steps.get_profile.outputs.BUILD_PROFILE }}
@ -119,8 +119,10 @@ jobs:
- [debian11, "debian:11-slim", "deploy/docker/Dockerfile"]
# NOTE: 'otp' and 'elixir' are to configure emqx-builder image
# only support latest otp and elixir, not a matrix
builder:
- 5.0-26 # update to latest
otp:
- 24.3.4.2-1 # update to latest
- 24.3.4.2-1 # switch to 25 once ready to release 5.1
elixir:
- 1.13.4 # update to latest
exclude: # TODO: publish enterprise to ecr too?
@ -174,7 +176,7 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
BUILD_FROM=ghcr.io/emqx/emqx-builder/5.0-24:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os[0] }}
BUILD_FROM=ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os[0] }}
RUN_FROM=${{ matrix.os[1] }}
EMQX_NAME=${{ steps.meta.outputs.emqx_name }}
file: source/${{ matrix.os[2] }}
@ -208,8 +210,10 @@ jobs:
- 'docker.io'
os:
- [debian11, "debian:11-slim", "deploy/docker/Dockerfile"]
builder:
- 5.0-26 # update to latest
otp:
- 24.3.4.2-1 # update to latest
- 25.1.2-2 # update to latest
elixir:
- 1.13.4 # update to latest
@ -252,7 +256,7 @@ jobs:
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
BUILD_FROM=ghcr.io/emqx/emqx-builder/5.0-24:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os[0] }}
BUILD_FROM=ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os[0] }}
RUN_FROM=${{ matrix.os[1] }}
EMQX_NAME=${{ steps.meta.outputs.emqx_name }}
file: source/${{ matrix.os[2] }}
@ -277,7 +281,7 @@ jobs:
- [debian11, "debian:11-slim", "deploy/docker/Dockerfile"]
# NOTE: only support latest otp version, not a matrix
otp:
- 24.3.4.2-1 # update to latest
- 24.3.4.2-1 # switch to 25 once ready to release 5.1
registry:
- 'docker.io'
- 'public.ecr.aws'
@ -342,7 +346,7 @@ jobs:
- ${{ needs.prepare.outputs.BUILD_PROFILE }}
# NOTE: for docker, only support latest otp version, not a matrix
otp:
- 24.3.4.2-1 # update to latest
- 25.1.2-2 # update to latest
elixir:
- 1.13.4 # update to latest
registry:

View File

@ -23,7 +23,7 @@ on:
jobs:
prepare:
runs-on: ubuntu-20.04
container: ghcr.io/emqx/emqx-builder/5.0-24:1.13.4-24.3.4.2-1-ubuntu20.04
container: ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-24.3.4.2-1-ubuntu20.04
outputs:
BUILD_PROFILE: ${{ steps.get_profile.outputs.BUILD_PROFILE }}
IS_EXACT_TAG: ${{ steps.get_profile.outputs.IS_EXACT_TAG }}
@ -48,7 +48,7 @@ jobs:
echo "WARN: This is NOT an exact git tag, will not publish release"
is_exact_tag='false'
fi
echo "::set-output name=IS_EXACT_TAG::${is_exact_tag}"
echo "IS_EXACT_TAG=${is_exact_tag}" >> $GITHUB_OUTPUT
case $tag in
refs/tags/v*)
PROFILE='emqx'
@ -103,7 +103,7 @@ jobs:
- uses: ilammy/msvc-dev-cmd@v1.12.0
- uses: erlef/setup-beam@v1
with:
otp-version: 24.2.1
otp-version: 24.3.4
- name: build
env:
PYTHON: python
@ -173,13 +173,15 @@ jobs:
needs: prepare
runs-on: ${{ matrix.build_machine }}
container:
image: "ghcr.io/emqx/emqx-builder/5.0-24:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os }}"
image: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os }}"
strategy:
fail-fast: false
matrix:
profile:
- ${{ needs.prepare.outputs.BUILD_PROFILE }}
builder:
- 5.0-26
otp:
- 24.3.4.2-1
elixir:
@ -244,6 +246,7 @@ jobs:
- name: build emqx packages
working-directory: source
env:
BUILDER: ${{ matrix.builder }}
OTP: ${{ matrix.otp }}
ELIXIR: ${{ matrix.elixir }}
PROFILE: ${{ matrix.profile }}
@ -272,7 +275,7 @@ jobs:
--pkgtype "${PKGTYPE}" \
--arch "${ARCH}" \
--elixir "${IsElixir}" \
--builder "ghcr.io/emqx/emqx-builder/5.0-24:${ELIXIR}-${OTP}-${SYSTEM}"
--builder "ghcr.io/emqx/emqx-builder/${BUILDER}:${ELIXIR}-${OTP}-${SYSTEM}"
done
- uses: actions/upload-artifact@v3
with:

View File

@ -29,14 +29,15 @@ jobs:
fail-fast: false
matrix:
profile:
- ["emqx", "el7"]
- ["emqx-enterprise", "ubuntu20.04"]
otp:
- 24.3.4.2-1
- ["emqx", "24.3.4.2-1", "el7"]
- ["emqx", "25.1.2-2", "ubuntu20.04"]
- ["emqx-enterprise", "24.3.4.2-1", "ubuntu20.04"]
builder:
- 5.0-26
elixir:
- 1.13.4
container: "ghcr.io/emqx/emqx-builder/5.0-24:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.profile[1] }}"
container: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.profile[1] }}-${{ matrix.profile[2] }}"
steps:
- uses: AutoModality/action-clean@v1
@ -72,7 +73,7 @@ jobs:
./scripts/pkg-tests.sh ${EMQX_NAME}-elixir-pkg
- uses: actions/upload-artifact@v3
with:
name: "${{ matrix.profile[0] }}-${{ matrix.otp }}-${{ matrix.profile[1] }}"
name: "${{ matrix.profile[0] }}-${{ matrix.profile[1] }}-${{ matrix.profile[2] }}"
path: _packages/${{ matrix.profile[0] }}/*
- uses: actions/upload-artifact@v3
with:
@ -89,7 +90,7 @@ jobs:
profile:
- emqx
otp:
- 24.2.1
- 25.1.2
steps:
- uses: actions/checkout@v3
- uses: ilammy/msvc-dev-cmd@v1.12.0
@ -119,7 +120,7 @@ jobs:
- uses: actions/upload-artifact@v3
with:
name: windows
path: _packages/${{ matrix.profile}}/*
path: _packages/${{ matrix.profile }}/*
mac:
strategy:

View File

@ -5,7 +5,7 @@ on: [pull_request, push]
jobs:
check_deps_integrity:
runs-on: ubuntu-20.04
container: ghcr.io/emqx/emqx-builder/5.0-24:1.13.4-24.3.4.2-1-ubuntu20.04
container: ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-25.1.2-2-ubuntu20.04
steps:
- uses: actions/checkout@v3

View File

@ -5,7 +5,7 @@ on: [pull_request]
jobs:
code_style_check:
runs-on: ubuntu-20.04
container: "ghcr.io/emqx/emqx-builder/5.0-24:1.13.4-24.3.4.2-1-ubuntu20.04"
container: "ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-25.1.2-2-ubuntu20.04"
steps:
- uses: actions/checkout@v3
with:

View File

@ -8,7 +8,7 @@ jobs:
elixir_apps_check:
runs-on: ubuntu-latest
# just use the latest builder
container: "ghcr.io/emqx/emqx-builder/5.0-24:1.13.4-24.3.4.2-1-ubuntu20.04"
container: "ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-25.1.2-2-ubuntu20.04"
strategy:
fail-fast: false

View File

@ -7,7 +7,7 @@ on: [pull_request, push]
jobs:
elixir_deps_check:
runs-on: ubuntu-20.04
container: ghcr.io/emqx/emqx-builder/5.0-24:1.13.4-24.3.4.2-1-ubuntu20.04
container: ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-25.1.2-2-ubuntu20.04
steps:
- name: Checkout

View File

@ -17,8 +17,7 @@ jobs:
profile:
- emqx
- emqx-enterprise
container: ghcr.io/emqx/emqx-builder/5.0-24:1.13.4-24.3.4.2-1-ubuntu20.04
container: ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-25.1.2-2-ubuntu20.04
steps:
- name: Checkout
uses: actions/checkout@v3

View File

@ -11,8 +11,11 @@ jobs:
run_emqx_app_tests:
strategy:
matrix:
builder:
- 5.0-26
otp:
- 24.3.4.2-1
- 25.1.2-2
# no need to use more than 1 version of Elixir, since tests
# run using only Erlang code. This is needed just to specify
# the base image.
@ -34,7 +37,7 @@ jobs:
use-self-hosted: false
runs-on: ${{ matrix.runs-on }}
container: "ghcr.io/emqx/emqx-builder/5.0-24:${{ matrix.elixir}}-${{ matrix.otp }}-${{ matrix.os }}"
container: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir}}-${{ matrix.otp }}-${{ matrix.os }}"
defaults:
run:

View File

@ -16,7 +16,7 @@ jobs:
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-24:1.13.4-24.3.4.2-1-alpine3.15.1
container: ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-24.3.4.2-1-alpine3.15.1
steps:
- uses: actions/checkout@v3
@ -48,6 +48,8 @@ jobs:
- rlog
os:
- ["alpine3.15.1", "alpine:3.15.1"]
builder:
- 5.0-26
otp:
- 24.3.4.2-1
elixir:
@ -57,7 +59,7 @@ jobs:
steps:
- uses: erlef/setup-beam@v1
with:
otp-version: "24.2"
otp-version: 24.3.4
- uses: actions/download-artifact@v3
with:
name: source
@ -68,7 +70,7 @@ jobs:
- name: make docker image
working-directory: source
env:
EMQX_BUILDER: ghcr.io/emqx/emqx-builder/5.0-24:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os[0] }}
EMQX_BUILDER: ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os[0] }}
EMQX_RUNNER: ${{ matrix.os[1] }}
run: |
make ${{ matrix.profile }}-docker
@ -119,6 +121,8 @@ jobs:
- emqx-enterprise
os:
- ["debian11", "debian:11-slim"]
builder:
- 5.0-26
otp:
- 24.3.4.2-1
elixir:
@ -130,7 +134,7 @@ jobs:
steps:
- uses: erlef/setup-beam@v1
with:
otp-version: "24.2"
otp-version: 24.3.4
- uses: actions/download-artifact@v3
with:
name: source
@ -141,7 +145,7 @@ jobs:
- name: make docker image
working-directory: source
env:
EMQX_BUILDER: ghcr.io/emqx/emqx-builder/5.0-24:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os[0] }}
EMQX_BUILDER: ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os[0] }}
EMQX_RUNNER: ${{ matrix.os[1] }}
run: |
make ${{ matrix.profile }}-docker

View File

@ -16,7 +16,7 @@ jobs:
steps:
- uses: erlef/setup-beam@v1
with:
otp-version: "24.2"
otp-version: 24.3
- name: download jmeter
timeout-minutes: 3
env:
@ -36,7 +36,7 @@ jobs:
PROFILE='emqx'
make "${PROFILE}-docker"
VSN="$(./pkg-vsn.sh $PROFILE)"
echo "::set-output name=version::${VSN}"
echo "version=${VSN}" >> $GITHUB_OUTPUT
docker save -o emqx.tar emqx/emqx:${VSN}
- uses: actions/upload-artifact@v3
with:
@ -59,7 +59,7 @@ jobs:
steps:
- uses: erlef/setup-beam@v1
with:
otp-version: "24.2"
otp-version: 24.3
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
@ -155,7 +155,7 @@ jobs:
steps:
- uses: erlef/setup-beam@v1
with:
otp-version: "24.2"
otp-version: 24.3
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
@ -261,7 +261,7 @@ jobs:
steps:
- uses: erlef/setup-beam@v1
with:
otp-version: "24.2"
otp-version: 24.3
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
@ -363,7 +363,7 @@ jobs:
steps:
- uses: erlef/setup-beam@v1
with:
otp-version: "24.2"
otp-version: 24.3
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:
@ -462,7 +462,7 @@ jobs:
steps:
- uses: erlef/setup-beam@v1
with:
otp-version: "24.2"
otp-version: 24.3
- uses: actions/checkout@v3
- uses: actions/download-artifact@v3
with:

View File

@ -16,7 +16,7 @@ on:
jobs:
relup_test_plan:
runs-on: ubuntu-20.04
container: "ghcr.io/emqx/emqx-builder/5.0-24:1.13.4-24.3.4.2-1-ubuntu20.04"
container: "ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-24.3.4.2-1-ubuntu20.04"
outputs:
CUR_EE_VSN: ${{ steps.find-versions.outputs.CUR_EE_VSN }}
OLD_VERSIONS: ${{ steps.find-versions.outputs.OLD_VERSIONS }}
@ -37,8 +37,8 @@ jobs:
ee_vsn="$(./pkg-vsn.sh enterprise)"
old_ee_vsns="$(./scripts/relup-build/base-vsns.sh enterprise | xargs)"
old_vsns=$(echo -n "${old_ee_vsns}" | sed 's/ $//g' | jq -R -s -c 'split(" ")')
echo "::set-output name=CUR_EE_VSN::$ee_vsn"
echo "::set-output name=OLD_VERSIONS::$old_vsns"
echo "CUR_EE_VSN=$ee_vsn" >> $GITHUB_OUTPUT
echo "OLD_VERSIONS=$old_vsns" >> $GITHUB_OUTPUT
- name: build emqx
run: |
set -x
@ -74,7 +74,7 @@ jobs:
# setup Erlang to run lux
- uses: erlef/setup-beam@v1
with:
otp-version: "24.2"
otp-version: 24.3
- uses: actions/checkout@v3
with:
repository: hawk/lux

View File

@ -14,49 +14,55 @@ on:
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-26",
otp: "25.1.2-2",
elixir: "1.13.4"
}),
(.[] | select(.profile == "emqx-enterprise") | . + {
builder: "5.0-26",
otp: ["24.3.4.2-1", "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
prepare:
runs-on: aws-amd64
# prepare source with any OTP version, no need for a matrix
container: "ghcr.io/emqx/emqx-builder/5.0-24:1.13.4-24.3.4.2-1-ubuntu20.04"
outputs:
fast_ct_apps: ${{ steps.find_ct_apps.outputs.fast_ct_apps }}
docker_ct_apps: ${{ steps.find_ct_apps.outputs.docker_ct_apps }}
steps:
- uses: AutoModality/action-clean@v1
- uses: actions/checkout@v3
with:
path: source
- name: Find CT Apps
working-directory: source
id: find_ct_apps
run: |
fast_ct_apps="$(./scripts/find-apps.sh --ci fast)"
docker_ct_apps="$(./scripts/find-apps.sh --ci docker)"
echo "fast: $fast_ct_apps"
echo "docker: $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
env:
PROFILE: emqx
#DIAGNOSTIC: 1
run: |
make ensure-rebar3
# fetch all deps and compile
make emqx
make test-compile
cd ..
zip -ryq source.zip source/* source/.[^.]*
- uses: actions/upload-artifact@v3
with:
name: source-emqx
path: source.zip
prepare_ee:
runs-on: aws-amd64
# prepare source with any OTP version, no need for a matrix
container: "ghcr.io/emqx/emqx-builder/5.0-18:1.13.4-24.3.4.2-1-ubuntu20.04"
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
@ -65,61 +71,48 @@ jobs:
- name: get_all_deps
working-directory: source
env:
PROFILE: emqx-enterprise
PROFILE: ${{ matrix.profile }}
#DIAGNOSTIC: 1
run: |
make ensure-rebar3
# fetch all deps and compile
make emqx-enterprise
make ${{ matrix.profile }}
make test-compile
cd ..
zip -ryq source.zip source/* source/.[^.]*
- uses: actions/upload-artifact@v3
with:
name: source-emqx-enterprise
name: source-${{ matrix.profile }}-${{ matrix.otp }}
path: source.zip
eunit_and_proper:
needs:
- build-matrix
- prepare
- prepare_ee
runs-on: ${{ matrix.runs-on }}
runs-on: ${{ needs.build-matrix.outputs.runs-on }}
strategy:
fail-fast: false
matrix:
profile:
- emqx
- emqx-enterprise
runs-on:
- aws-amd64
- ubuntu-20.04
use-self-hosted:
- ${{ github.repository_owner == 'emqx' }}
exclude:
- runs-on: ubuntu-20.04
use-self-hosted: true
- runs-on: aws-amd64
use-self-hosted: false
include: ${{ fromJson(needs.build-matrix.outputs.prepare) }}
defaults:
run:
shell: bash
container: "ghcr.io/emqx/emqx-builder/5.0-24:1.13.4-24.3.4.2-1-ubuntu20.04"
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 }}
name: source-${{ matrix.profile }}-${{ matrix.otp }}
path: .
- name: unzip source code
env:
PROFILE: ${{ matrix.profile }}
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
@ -127,6 +120,7 @@ jobs:
- name: proper
env:
PROFILE: ${{ matrix.profile }}
CT_COVER_EXPORT_PREFIX: ${{ matrix.profile }}-${{ matrix.otp }}
working-directory: source
run: make proper
@ -137,23 +131,14 @@ jobs:
ct_docker:
needs:
- build-matrix
- prepare
- prepare_ee
runs-on: ${{ needs.build-matrix.outputs.runs-on }}
strategy:
fail-fast: false
matrix:
app: ${{ fromJson(needs.prepare.outputs.docker_ct_apps) }}
runs-on:
- aws-amd64
- ubuntu-20.04
use-self-hosted:
- ${{ github.repository_owner == 'emqx' }}
exclude:
- runs-on: ubuntu-20.04
use-self-hosted: true
- runs-on: aws-amd64
use-self-hosted: false
runs-on: ${{ matrix.runs-on }}
include: ${{ fromJson(needs.build-matrix.outputs.docker) }}
defaults:
run:
shell: bash
@ -162,24 +147,22 @@ jobs:
- uses: AutoModality/action-clean@v1
- uses: actions/download-artifact@v3
with:
name: source-${{ matrix.app[1] }}
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: 6
INFLUXDB_TAG: 2.5.0
WHICH_APP: ${{ matrix.app[0] }}
PROFILE: ${{ matrix.app[1] }}
run: |
echo $PROFILE
rm _build/default/lib/rocksdb/_build/cmake/CMakeCache.txt
./scripts/ct/run.sh --app $WHICH_APP
PROFILE: ${{ matrix.profile }}
CT_COVER_EXPORT_PREFIX: ${{ matrix.profile }}-${{ matrix.otp }}
run: ./scripts/ct/run.sh --app ${{ matrix.app }}
- uses: actions/upload-artifact@v3
with:
name: coverdata
@ -187,30 +170,20 @@ jobs:
- uses: actions/upload-artifact@v3
if: failure()
with:
name: logs-${{ matrix.app[1] }}-${{ matrix.app[2] }}
name: logs-${{ matrix.profile }}-${{ matrix.prefix }}
path: source/_build/test/logs
ct:
needs:
- build-matrix
- prepare
- prepare_ee
runs-on: ${{ needs.build-matrix.outputs.runs-on }}
strategy:
fail-fast: false
matrix:
app: ${{ fromJson(needs.prepare.outputs.fast_ct_apps) }}
runs-on:
- aws-amd64
- ubuntu-20.04
use-self-hosted:
- ${{ github.repository_owner == 'emqx' }}
exclude:
- runs-on: ubuntu-20.04
use-self-hosted: true
- runs-on: aws-amd64
use-self-hosted: false
include: ${{ fromJson(needs.build-matrix.outputs.host) }}
runs-on: ${{ matrix.runs-on }}
container: "ghcr.io/emqx/emqx-builder/5.0-24:1.13.4-24.3.4.2-1-ubuntu20.04"
container: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir }}-${{ matrix.otp }}-ubuntu20.04"
defaults:
run:
shell: bash
@ -219,7 +192,7 @@ jobs:
- uses: AutoModality/action-clean@v1
- uses: actions/download-artifact@v3
with:
name: source-${{ matrix.app[1] }}
name: source-${{ matrix.profile }}-${{ matrix.otp }}
path: .
- name: unzip source code
run: unzip -q source.zip
@ -228,10 +201,10 @@ jobs:
- name: run common test
working-directory: source
env:
WHICH_APP: ${{ matrix.app[0] }}
PROFILE: ${{ matrix.app[1] }}
PROFILE: ${{ matrix.profile }}
CT_COVER_EXPORT_PREFIX: ${{ matrix.profile }}-${{ matrix.otp }}
run: |
make "${WHICH_APP}-ct"
make "${{ matrix.app }}-ct"
- uses: actions/upload-artifact@v3
with:
name: coverdata
@ -240,7 +213,7 @@ jobs:
- uses: actions/upload-artifact@v3
if: failure()
with:
name: logs-${{ matrix.app[1] }}-${{ matrix.app[2] }}
name: logs-${{ matrix.profile }}-${{ matrix.prefix }}
path: source/_build/test/logs
make_cover:
@ -249,12 +222,12 @@ jobs:
- ct
- ct_docker
runs-on: ubuntu-20.04
container: "ghcr.io/emqx/emqx-builder/5.0-24:1.13.4-24.3.4.2-1-ubuntu20.04"
container: "ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-24.3.4.2-1-ubuntu20.04"
steps:
- uses: AutoModality/action-clean@v1
- uses: actions/download-artifact@v3
with:
name: source-emqx-enterprise
name: source-emqx-enterprise-24.3.4.2-1
path: .
- name: unzip source code
run: unzip -q source.zip

View File

@ -2,7 +2,7 @@ REBAR = $(CURDIR)/rebar3
BUILD = $(CURDIR)/build
SCRIPTS = $(CURDIR)/scripts
export EMQX_RELUP ?= true
export EMQX_DEFAULT_BUILDER = ghcr.io/emqx/emqx-builder/5.0-17:1.13.4-24.2.1-1-debian11
export EMQX_DEFAULT_BUILDER = ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-24.3.4.2-1-debian11
export EMQX_DEFAULT_RUNNER = debian:11-slim
export OTP_VSN ?= $(shell $(CURDIR)/scripts/get-otp-vsn.sh)
export ELIXIR_VSN ?= $(shell $(CURDIR)/scripts/get-elixir-vsn.sh)
@ -24,6 +24,7 @@ PROFILES := $(REL_PROFILES) $(PKG_PROFILES) default
CT_NODE_NAME ?= 'test@127.0.0.1'
CT_READABLE ?= true
CT_COVER_EXPORT_PREFIX ?= $(PROFILE)
export REBAR_GIT_CLONE_OPTIONS += --depth=1
@ -62,7 +63,7 @@ mix-deps-get: $(ELIXIR_COMMON_DEPS)
.PHONY: eunit
eunit: $(REBAR) merge-config
@ENABLE_COVER_COMPILE=1 $(REBAR) eunit -v -c --cover_export_name $(PROFILE)-eunit
@ENABLE_COVER_COMPILE=1 $(REBAR) eunit -v -c --cover_export_name $(CT_COVER_EXPORT_PREFIX)-eunit
.PHONY: proper
proper: $(REBAR)
@ -74,7 +75,7 @@ test-compile: $(REBAR) merge-config
.PHONY: ct
ct: $(REBAR) merge-config
@ENABLE_COVER_COMPILE=1 $(REBAR) ct --name $(CT_NODE_NAME) -c -v --cover_export_name $(PROFILE)-ct
@ENABLE_COVER_COMPILE=1 $(REBAR) ct --name $(CT_NODE_NAME) -c -v --cover_export_name $(CT_COVER_EXPORT_PREFIX)-ct
.PHONY: static_checks
static_checks:
@ -86,7 +87,10 @@ APPS=$(shell $(SCRIPTS)/find-apps.sh)
define gen-app-ct-target
$1-ct: $(REBAR)
@$(SCRIPTS)/pre-compile.sh $(PROFILE)
@ENABLE_COVER_COMPILE=1 $(REBAR) ct --name $(CT_NODE_NAME) -c -v --cover_export_name $(PROFILE)-$(subst /,-,$1) --suite $(shell $(SCRIPTS)/find-suites.sh $1)
@ENABLE_COVER_COMPILE=1 $(REBAR) ct -c -v \
--name $(CT_NODE_NAME) \
--cover_export_name $(CT_COVER_EXPORT_PREFIX)-$(subst /,-,$1) \
--suite $(shell $(SCRIPTS)/find-suites.sh $1)
endef
$(foreach app,$(APPS),$(eval $(call gen-app-ct-target,$(app))))
@ -238,8 +242,8 @@ define gen-elixir-pkg-target
# the Elixir places the tar in a different path than Rebar3
$1-elixir-pkg: $(COMMON_DEPS)
@env TAR_PKG_DIR=_build/$1-pkg \
IS_ELIXIR=yes \
$(BUILD) $1-pkg pkg
IS_ELIXIR=yes \
$(BUILD) $1-pkg pkg
endef
$(foreach pt,$(REL_PROFILES),$(eval $(call gen-elixir-pkg-target,$(pt))))

View File

@ -50,7 +50,7 @@
]}.
{dialyzer, [
{warnings, [unmatched_returns, error_handling, race_conditions]},
{warnings, [unmatched_returns, error_handling]},
{plt_location, "."},
{plt_prefix, "emqx_dialyzer"},
{plt_apps, all_apps},

View File

@ -641,6 +641,7 @@ close_socket_ok(State) ->
ok.
%% tell truth about the original exception
-spec maybe_raise_exception(any()) -> no_return().
maybe_raise_exception(#{
exception := Exception,
context := Context,

View File

@ -55,18 +55,6 @@
%% non-empty list of strings
-define(IS_STRING_LIST(L), (is_list(L) andalso L =/= [] andalso ?IS_STRING(hd(L)))).
%% The ciphers that ssl:cipher_suites(exclusive, 'tlsv1.3', openssl)
%% should return when running on otp 23.
%% But we still have to hard-code them because tlsv1.3 on otp 22 is
%% not trustworthy.
-define(TLSV13_EXCLUSIVE_CIPHERS, [
"TLS_AES_256_GCM_SHA384",
"TLS_AES_128_GCM_SHA256",
"TLS_CHACHA20_POLY1305_SHA256",
"TLS_AES_128_CCM_SHA256",
"TLS_AES_128_CCM_8_SHA256"
]).
-define(SELECTED_CIPHERS, [
"ECDHE-ECDSA-AES256-GCM-SHA384",
"ECDHE-RSA-AES256-GCM-SHA384",
@ -162,7 +150,7 @@ all_ciphers(['tlsv1.3']) ->
%% because 'all' returns legacy cipher suites too,
%% which does not make sense since tlsv1.3 can not use
%% legacy cipher suites.
?TLSV13_EXCLUSIVE_CIPHERS;
ssl:cipher_suites(exclusive, 'tlsv1.3', openssl);
all_ciphers(Versions) ->
%% assert non-empty
List = lists:append([ssl:cipher_suites(all, V, openssl) || V <- Versions]),
@ -197,7 +185,7 @@ selected_ciphers(Vsns) ->
do_selected_ciphers('tlsv1.3') ->
case lists:member('tlsv1.3', proplists:get_value(available, ssl:versions())) of
true -> ?TLSV13_EXCLUSIVE_CIPHERS;
true -> ssl:cipher_suites(exclusive, 'tlsv1.3', openssl);
false -> []
end ++ do_selected_ciphers('tlsv1.2');
do_selected_ciphers(_) ->

View File

@ -16,8 +16,6 @@
-module(emqx_common_test_helpers).
-include_lib("common_test/include/ct.hrl").
-type special_config_handler() :: fun().
-type apps() :: list(atom()).
@ -78,12 +76,6 @@
-define(CERTS_PATH(CertName), filename:join(["etc", "certs", CertName])).
-define(MQTT_SSL_TWOWAY, [
{cacertfile, ?CERTS_PATH("cacert.pem")},
{verify, verify_peer},
{fail_if_no_peer_cert, true}
]).
-define(MQTT_SSL_CLIENT_CERTS, [
{keyfile, ?CERTS_PATH("client-key.pem")},
{cacertfile, ?CERTS_PATH("cacert.pem")},

View File

@ -19,7 +19,6 @@
-compile(export_all).
-compile(nowarn_export_all).
-include("emqx.hrl").
-include_lib("eunit/include/eunit.hrl").
-include_lib("common_test/include/ct.hrl").
-include_lib("snabbkaffe/include/snabbkaffe.hrl").

View File

@ -21,8 +21,6 @@
-include_lib("emqx/include/emqx.hrl").
-include_lib("eunit/include/eunit.hrl").
-include_lib("common_test/include/ct.hrl").
-include_lib("snabbkaffe/include/snabbkaffe.hrl").
-define(SUITE, ?MODULE).

View File

@ -19,10 +19,7 @@
-compile(export_all).
-compile(nowarn_export_all).
-include("emqx_conf.hrl").
-include_lib("eunit/include/eunit.hrl").
-include_lib("common_test/include/ct.hrl").
-include_lib("snabbkaffe/include/snabbkaffe.hrl").
all() ->
emqx_common_test_helpers:all(?MODULE).

View File

@ -154,8 +154,8 @@ handle_info({timeout, TRef, ?refresh_jwt}, State0 = #{refresh_timer := TRef}) ->
handle_info(_Msg, State) ->
{noreply, State}.
format_status(State) ->
censor_secrets(State).
format_status(Status = #{state := State}) ->
Status#{state => censor_secrets(State)}.
format_status(_Opt, [_PDict, State0]) ->
State = censor_secrets(State0),
@ -222,16 +222,13 @@ ensure_timer(State) ->
State.
-spec censor_secrets(state()) -> map().
censor_secrets(State) ->
maps:map(
fun
(Key, _Value) when
Key =:= jwt;
Key =:= jwk
->
"******";
(_Key, Value) ->
Value
end,
State
).
censor_secrets(State = #{jwt := JWT, jwk := JWK}) ->
State#{
jwt := censor_secret(JWT),
jwk := censor_secret(JWK)
}.
censor_secret(undefined) ->
undefined;
censor_secret(_Secret) ->
"******".

View File

@ -209,20 +209,27 @@ t_log_file(_Config) ->
?assertMatch([#{<<"mtime">> := _, <<"size">> := _, <<"node">> := _}], json(Detail)),
{ok, Binary} = request_api(get, api_path("trace/test_client_id/download"), Header),
{ok, [
_Comment,
Comment,
#zip_file{
name = ZipName,
info = #file_info{size = Size, type = regular, access = read_write}
}
]} =
ZipTab =
zip:table(Binary),
]} = zip:table(Binary),
?assert(Size > 0),
ZipNamePrefix = lists:flatten(io_lib:format("~s-trace_~s", [node(), Name])),
?assertNotEqual(nomatch, re:run(ZipName, [ZipNamePrefix])),
Path = api_path("trace/test_client_id/download?node=" ++ atom_to_list(node())),
{ok, Binary2} = request_api(get, Path, Header),
?assertEqual(ZipTab, zip:table(Binary2)),
?assertMatch(
{ok, [
Comment,
#zip_file{
name = ZipName,
info = #file_info{size = Size, type = regular, access = read_write}
}
]},
zip:table(Binary2)
),
{error, {_, 400, _}, _} =
request_api(
get,

View File

@ -22,7 +22,7 @@
-include_lib("emqx/include/emqx.hrl").
-include_lib("eunit/include/eunit.hrl").
-define(EMQX_PLUGIN_TEMPLATE_VSN, "5.0.0-rc.3").
-define(EMQX_PLUGIN_TEMPLATE_VSN, "5.0.0").
-define(EMQX_ELIXIR_PLUGIN_TEMPLATE_VSN, "0.1.0").
-define(PACKAGE_SUFFIX, ".tar.gz").

View File

@ -10,10 +10,6 @@
{extra_src_dirs, ["examples"]}.
%% try to override the dialyzer 'race_conditions' defined in the top-level dir,
%% but it doesn't work
{dialyzer, [{warnings, [unmatched_returns, error_handling]}]}.
{deps, [
{jsx, {git, "https://github.com/talentdeficit/jsx", {tag, "v3.1.0"}}},
{emqx, {path, "../emqx"}}

View File

@ -1,4 +1,4 @@
ARG BUILD_FROM=ghcr.io/emqx/emqx-builder/5.0-17:1.13.4-24.2.1-1-debian11
ARG BUILD_FROM=ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-24.3.4.2-1-debian11
ARG RUN_FROM=debian:11-slim
FROM ${BUILD_FROM} AS builder

View File

@ -1,4 +1,4 @@
ARG BUILD_FROM=ghcr.io/emqx/emqx-builder/5.0-15:1.13.3-24.2.1-1-alpine3.15.1
ARG BUILD_FROM=ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-24.3.4.2-1-alpine3.15.1
ARG RUN_FROM=alpine:3.15.1
FROM ${BUILD_FROM} AS builder

View File

@ -45,13 +45,14 @@ defmodule EMQXUmbrella.MixProject do
# other exact versions, and not ranges.
[
{:lc, github: "emqx/lc", tag: "0.3.2", override: true},
{:redbug, "2.0.7"},
{:redbug, "2.0.8"},
{:typerefl, github: "ieQu1/typerefl", tag: "0.9.1", override: true},
{:ehttpc, github: "emqx/ehttpc", tag: "0.4.2", override: true},
{:gproc, github: "uwiger/gproc", tag: "0.8.0", override: true},
{: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},
{:ekka, github: "emqx/ekka", tag: "0.13.7", 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},

View File

@ -45,7 +45,7 @@
{deps,
[ {lc, {git, "https://github.com/emqx/lc.git", {tag, "0.3.2"}}}
, {redbug, "2.0.7"}
, {redbug, "2.0.8"}
, {gpb, "4.19.5"} %% gpb only used to build, but not for release, pin it here to avoid fetching a wrong version due to rebar plugins scattered in all the deps
, {typerefl, {git, "https://github.com/ieQu1/typerefl", {tag, "0.9.1"}}}
, {gun, {git, "https://github.com/emqx/gun", {tag, "1.3.9"}}}
@ -54,6 +54,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"}}}
, {ekka, {git, "https://github.com/emqx/ekka", {tag, "0.13.7"}}}
, {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"}}}

View File

@ -15,8 +15,8 @@ do(Dir, CONFIG) ->
end.
assert_otp() ->
Oldest = 23,
Latest = 24,
Oldest = 24,
Latest = 25,
OtpRelease = list_to_integer(erlang:system_info(otp_release)),
case OtpRelease < Oldest orelse OtpRelease > Latest of
true ->
@ -119,7 +119,7 @@ is_win32() ->
win32 =:= element(1, os:type()).
project_app_dirs() ->
project_app_dirs(get_edition_from_profille_env()).
project_app_dirs(get_edition_from_profile_env()).
project_app_dirs(Edition) ->
["apps/*"] ++
@ -154,14 +154,14 @@ test_deps() ->
{erl_csv, "0.2.0"}
].
common_compile_opts(Vsn) ->
common_compile_opts(get_edition_from_profille_env(), Vsn).
common_compile_opts() ->
common_compile_opts(get_edition_from_profile_env(), undefined).
common_compile_opts(Edition, Vsn) ->
% always include debug_info
[
debug_info,
{compile_info, [{emqx_vsn, Vsn}]},
{compile_info, [{emqx_vsn, Vsn} || Vsn /= undefined]},
{d, 'EMQX_RELEASE_EDITION', Edition}
] ++
[{d, 'EMQX_BENCHMARK'} || os:getenv("EMQX_BENCHMARK") =:= "1"] ++
@ -180,7 +180,7 @@ warn_profile_env() ->
end.
%% this function is only used for test/check profiles
get_edition_from_profille_env() ->
get_edition_from_profile_env() ->
case os:getenv("PROFILE") of
"emqx-enterprise" ++ _ ->
ee;
@ -243,15 +243,14 @@ profiles_ee() ->
%% EE has more files than CE, always test/check with EE options.
profiles_dev() ->
Vsn = get_vsn('emqx-enterprise'),
[
{check, [
{erl_opts, common_compile_opts(Vsn)},
{erl_opts, common_compile_opts()},
{project_app_dirs, project_app_dirs()}
]},
{test, [
{deps, test_deps()},
{erl_opts, common_compile_opts(Vsn) ++ erl_opts_i()},
{erl_opts, common_compile_opts() ++ erl_opts_i()},
{extra_src_dirs, [{"test", [{recursive, true}]}]},
{project_app_dirs, project_app_dirs()}
]}
@ -270,7 +269,7 @@ relx(Vsn, RelType, PkgType, Edition) ->
{vm_args, false},
{release, {emqx, Vsn}, relx_apps(RelType, Edition)},
{overlay, relx_overlay(RelType, Edition)},
{overlay_vars,
{overlay_vars_values,
build_info() ++
[
{emqx_description, emqx_description(RelType, Edition)}

View File

@ -9,7 +9,7 @@
## example:
## ./scripts/buildx.sh --profile emqx --pkgtype tgz --arch arm64 \
## --builder ghcr.io/emqx/emqx-builder/5.0-17:1.13.4-24.2.1-1-debian10
## --builder ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-24.3.4.2-1-debian11
set -euo pipefail
@ -22,9 +22,9 @@ help() {
echo "--elixir: Specify if the release should be built with Elixir, "
echo " defaults to 'no'."
echo "--arch amd64|arm64: Target arch to build the EMQX package for"
echo "--src_dir <SRC_DIR>: EMQX source ode in this dir, default to PWD"
echo "--src_dir <SRC_DIR>: EMQX source code in this dir, default to PWD"
echo "--builder <BUILDER>: Builder image to pull"
echo " E.g. ghcr.io/emqx/emqx-builder/5.0-17:1.13.4-24.2.1-1-debian10"
echo " E.g. ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-24.3.4.2-1-debian11"
}
while [ "$#" -gt 0 ]; do

View File

@ -66,7 +66,7 @@ if [ "${WHICH_APP}" = 'novalue' ]; then
exit 1
fi
ERLANG_CONTAINER='erlang24'
ERLANG_CONTAINER='erlang'
DOCKER_CT_ENVS_FILE="${WHICH_APP}/docker-ct"
case "${WHICH_APP}" in
@ -89,7 +89,7 @@ FILES=( )
for dep in ${CT_DEPS}; do
case "${dep}" in
erlang24)
erlang)
FILES+=( '.ci/docker-compose-file/docker-compose.yaml' )
;;
toxiproxy)

View File

@ -5,7 +5,7 @@
set -euo pipefail
elvis_version='1.0.0-emqx-2'
elvis_version='1.1.0-emqx-2'
base="${1:-}"
repo="${2:-emqx/emqx}"

View File

@ -2,7 +2,7 @@
set -euo pipefail
## rebar3 tag 3.18.0-emqx-1 is compiled using otp24.1.5.
## rebar3 tag 3.19.0-emqx-1 is compiled using latest official OTP-24 image.
## we have to use an otp24-compiled rebar3 because the defination of record #application{}
## in systools.hrl is changed in otp24.
OTP_VSN="${OTP_VSN:-$(./scripts/get-otp-vsn.sh)}"
@ -13,6 +13,9 @@ case ${OTP_VSN} in
24*)
VERSION="3.18.0-emqx-1"
;;
25*)
VERSION="3.19.0-emqx-1"
;;
*)
echo "Unsupporetd Erlang/OTP version $OTP_VSN"
exit 1

View File

@ -8,10 +8,10 @@ cd -P -- "$(dirname -- "$0")/.."
help() {
echo
echo "-h|--help: To display this usage info"
echo "--ci fast|docker: Print apps in json format for github ci mtrix"
echo "--ci: Print apps in json format for github ci matrix"
}
CI='novalue'
MODE='list'
while [ "$#" -gt 0 ]; do
case $1 in
-h|--help)
@ -19,8 +19,8 @@ while [ "$#" -gt 0 ]; do
exit 0
;;
--ci)
CI="$2"
shift 2
MODE='ci'
shift 1
;;
*)
echo "unknown option $1"
@ -45,7 +45,7 @@ CE="$(find_app 'apps')"
EE="$(find_app 'lib-ee')"
APPS_ALL="$(echo -e "${CE}\n${EE}")"
if [ "$CI" = 'novalue' ]; then
if [ "$MODE" = 'list' ]; then
echo "${APPS_ALL}"
exit 0
fi
@ -54,16 +54,22 @@ fi
###### now deal with the github action's matrix.
##################################################
dimensions() {
format_app_description() {
## prefix is for github actions (they don't like slash in variables)
local prefix=${1//\//_}
echo -n -e "$(
cat <<END
{"app": "${1}", "profile": "${2}", "runner": "${3}", "prefix": "${prefix}"}
END
)"
}
describe_app() {
app="$1"
local runner="host"
local profile
if [ -f "${app}/docker-ct" ]; then
if [[ "$CI" != 'docker' ]]; then
return
fi
else
if [[ "$CI" != 'fast' ]]; then
return
fi
runner="docker"
fi
case "${app}" in
apps/*)
@ -77,28 +83,20 @@ dimensions() {
exit 1
;;
esac
## poor-man's json formatter
## apps/<app name>, <profile>, apps_<app name>
## third one is for github actions (they don't like slash in variables)
echo -n -e "[\"$app\", \"$profile\", \"${app//\//_}\"]"
format_app_description "$app" "$profile" "$runner"
}
matrix() {
first_row='yes'
local sep='['
for app in ${APPS_ALL}; do
row="$(dimensions "$app")"
row="$(describe_app "$app")"
if [ -z "$row" ]; then
continue
fi
if [ "$first_row" = 'yes' ]; then
first_row='no'
echo -n "$row"
else
echo -n ",${row}"
fi
echo -n "${sep}${row}"
sep=', '
done
echo ']'
}
echo -n '['
matrix
echo ']'

View File

@ -45,8 +45,8 @@ fi
# From now on, no need for the v|e prefix
OLD_VSN="${old_vsn#[e|v]}"
OLD_PKG="$(pwd)/_upgrade_base/${profile}-${OLD_VSN}-otp24.2.1-1-ubuntu20.04-amd64.tar.gz"
CUR_PKG="$(pwd)/_packages/${profile}/${profile}-${cur_vsn}-otp24.2.1-1-ubuntu20.04-amd64.tar.gz"
OLD_PKG="$(pwd)/_upgrade_base/${profile}-${OLD_VSN}-otp24.3.4.2-1-ubuntu20.04-amd64.tar.gz"
CUR_PKG="$(pwd)/_packages/${profile}/${profile}-${cur_vsn}-otp24.3.4.2-1-ubuntu20.04-amd64.tar.gz"
if [ ! -f "$OLD_PKG" ]; then
echo "$OLD_PKG not found"

View File

@ -22,7 +22,7 @@ WEBHOOK="webhook.$NET"
BENCH="bench.$NET"
COOKIE='this-is-a-secret'
## Erlang image is needed to run webhook server and emqtt-bench
ERLANG_IMAGE="ghcr.io/emqx/emqx-builder/5.0-17:1.13.4-24.2.1-1-ubuntu20.04"
ERLANG_IMAGE="ghcr.io/emqx/emqx-builder/5.0-26:1.13.4-24.3.4.2-1-ubuntu20.04"
# builder has emqtt-bench installed
BENCH_IMAGE="$ERLANG_IMAGE"