name: Build slim packages concurrency: group: slim-${{ github.event_name }}-${{ github.ref }} cancel-in-progress: true on: pull_request: workflow_dispatch: jobs: build: runs-on: ${{ matrix.runs-on }} strategy: fail-fast: false matrix: otp: - 24.3.4.2-1 os: - ubuntu20.04 - el7 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 container: ghcr.io/emqx/emqx-builder/4.4-23:${{ matrix.otp }}-${{ matrix.os }} steps: - uses: AutoModality/action-clean@v1 - uses: actions/checkout@v3 with: fetch-depth: 0 # clone full git history - name: fix-git-unsafe-repository run: git config --global --add safe.directory /__w/emqx/emqx - uses: ./.github/actions/detect-profiles - name: ensure access to github if: endsWith(github.repository, 'enterprise') run: | echo "https://ci%40emqx.io:${{ secrets.CI_GIT_TOKEN }}@github.com" > $HOME/.git-credentials git config --global credential.helper store - uses: actions/cache@v3 with: # dialyzer PLTs path: ~/.cache/rebar3/ key: dialyzer-${{ matrix.otp }} - name: make xref run: make xref - name: make dialyzer run: make dialyzer - name: build zip packages run: make ${EMQX_NAME}-zip - name: build deb/rpm packages run: make ${EMQX_NAME}-pkg - uses: actions/upload-artifact@v3 if: failure() with: name: rebar3.crashdump path: ./rebar3.crashdump - name: packages test run: | export CODE_PATH="$GITHUB_WORKSPACE" .ci/build_packages/tests.sh "${EMQX_NAME}" zip .ci/build_packages/tests.sh "${EMQX_NAME}" pkg - uses: actions/upload-artifact@v3 with: name: ${{ matrix.os }} path: _packages/**/*.zip windows: runs-on: windows-2019 if: endsWith(github.repository, 'emqx') strategy: fail-fast: false matrix: profile: - emqx otp: - 24.3.4.6 steps: - uses: actions/checkout@v2 - uses: ilammy/msvc-dev-cmd@v1 - uses: emqx/setup-beam@v1.16.1-emqx with: otp-version: ${{ matrix.otp }} - name: build env: PYTHON: python DIAGNOSTIC: 1 SYSTEM: windows run: | erl -eval "erlang:display(crypto:info_lib())" -s init stop make ${{ matrix.profile }}-zip - name: run emqx timeout-minutes: 1 run: | ./_build/${{ matrix.profile }}/rel/emqx/bin/emqx start Start-Sleep -s 5 echo "EMQX started" ./_build/${{ matrix.profile }}/rel/emqx/bin/emqx stop echo "EMQX stopped" ./_build/${{ matrix.profile }}/rel/emqx/bin/emqx install echo "EQMX installed" ./_build/${{ matrix.profile }}/rel/emqx/bin/emqx uninstall echo "EQMX uninstaled" mac: strategy: fail-fast: false matrix: otp: - 24.3.4.2-1 os: - macos-11 - macos-12-arm64 runs-on: ${{ matrix.os }} steps: - uses: emqx/self-hosted-cleanup-action@v1.0.3 if: matrix.os == 'macos-12-arm64' - uses: actions/checkout@v3 with: fetch-depth: 0 # clone full git history - name: ensure access to github if: endsWith(github.repository, 'enterprise') run: | echo "https://ci%40emqx.io:${{ secrets.CI_GIT_TOKEN }}@github.com" > $HOME/.git-credentials git config --global credential.helper store - uses: ./.github/actions/detect-profiles - uses: ./.github/actions/package-macos with: otp: ${{ matrix.otp }} os: ${{ matrix.os }} apple_id_password: ${{ secrets.APPLE_ID_PASSWORD }} apple_developer_identity: ${{ secrets.APPLE_DEVELOPER_IDENTITY }} apple_developer_id_bundle: ${{ secrets.APPLE_DEVELOPER_ID_BUNDLE }} apple_developer_id_bundle_password: ${{ secrets.APPLE_DEVELOPER_ID_BUNDLE_PASSWORD }} - uses: actions/upload-artifact@v3 if: failure() with: name: rebar3.crashdump path: ./rebar3.crashdump - uses: actions/upload-artifact@v3 with: name: ${{ matrix.os }} path: _packages/**/*.zip