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: otp: - 24.3.4.2-1 # 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 container: "ghcr.io/emqx/emqx-builder/5.0-18:${{ 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 allgood_emqx_app_tests: runs-on: ubuntu-latest 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) }}