82 lines
2.3 KiB
YAML
82 lines
2.3 KiB
YAML
name: Check emqx app standalone
|
|
|
|
## apps/emqx can be used as a rebar/mix dependency
|
|
## in other project, so we need to make sure apps/emqx
|
|
## as an Erlang/Elixir app works standalone
|
|
|
|
on:
|
|
pull_request:
|
|
|
|
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.
|
|
elixir:
|
|
- 1.13.4
|
|
os:
|
|
- ubuntu20.04
|
|
arch:
|
|
- amd64
|
|
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 }}
|
|
container: "ghcr.io/emqx/emqx-builder/${{ matrix.builder }}:${{ matrix.elixir}}-${{ matrix.otp }}-${{ matrix.os }}"
|
|
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
fetch-depth: 0
|
|
- name: run
|
|
run: |
|
|
git config --global --add safe.directory "$GITHUB_WORKSPACE"
|
|
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
|
|
repo="${GITHUB_REPOSITORY}"
|
|
git remote -v
|
|
remote="$(git remote -v | grep -E "github\.com(:|/)$repo((\.git)|(\s))" | grep fetch | awk '{print $1}')"
|
|
git fetch "$remote" "$GITHUB_BASE_REF"
|
|
compare_base="$remote/$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
|
|
./rebar3 xref
|
|
./rebar3 dialyzer
|
|
./rebar3 eunit -v
|
|
./rebar3 ct -v
|
|
./rebar3 proper -d test/props
|
|
- uses: actions/upload-artifact@v3
|
|
if: failure()
|
|
with:
|
|
name: logs
|
|
path: apps/emqx/_build/test/logs
|