name: Build slim packages concurrency: group: slim-${{ github.event_name }}-${{ github.sha }} cancel-in-progress: true on: workflow_call: inputs: runner: required: true type: string builder: required: true type: string builder_vsn: required: true type: string otp_vsn: required: true type: string elixir_vsn: required: true type: string # on: # push: # branches: # - master # - release-51 # pull_request: # # GitHub pull_request action is by default triggered when # # opened reopened or synchronize, # # we add labeled and unlabeled to the list because # # the mac job dpends on the PR having a 'Mac' label # types: # - labeled # - unlabeled # - opened # - reopened # - synchronize # workflow_dispatch: jobs: linux: runs-on: ${{ inputs.runner }} env: EMQX_NAME: ${{ matrix.profile[0] }} strategy: fail-fast: false matrix: profile: - ["emqx", "25.3.2-1", "el7", "erlang"] - ["emqx", "25.3.2-1", "ubuntu22.04", "elixir"] - ["emqx-enterprise", "25.3.2-1", "amzn2023", "erlang"] - ["emqx-enterprise", "25.3.2-1", "ubuntu20.04", "erlang"] container: "ghcr.io/emqx/emqx-builder/${{ inputs.builder_vsn }}:${{ inputs.elixir_vsn }}-${{ matrix.profile[1] }}-${{ matrix.profile[2] }}" steps: - uses: AutoModality/action-clean@v1 - uses: actions/checkout@v3 with: fetch-depth: 0 - name: Work around https://github.com/actions/checkout/issues/766 run: | git config --global --add safe.directory "$GITHUB_WORKSPACE" echo "CODE_PATH=$GITHUB_WORKSPACE" >> $GITHUB_ENV - name: build and test tgz package if: matrix.profile[3] == 'erlang' run: | make ${EMQX_NAME}-tgz ./scripts/pkg-tests.sh ${EMQX_NAME}-tgz - name: build and test deb/rpm packages if: matrix.profile[3] == 'erlang' run: | make ${EMQX_NAME}-pkg ./scripts/pkg-tests.sh ${EMQX_NAME}-pkg - name: build and test tgz package (Elixir) if: matrix.profile[3] == 'elixir' run: | make ${EMQX_NAME}-elixir-tgz ./scripts/pkg-tests.sh ${EMQX_NAME}-elixir-tgz - name: build and test deb/rpm packages (Elixir) if: matrix.profile[3] == 'elixir' run: | make ${EMQX_NAME}-elixir-pkg ./scripts/pkg-tests.sh ${EMQX_NAME}-elixir-pkg - uses: actions/upload-artifact@v3 with: name: "${{ matrix.profile[0] }}-${{ matrix.profile[1] }}-${{ matrix.profile[2] }}" path: _packages/${{ matrix.profile[0] }}/* retention-days: 7 - uses: actions/upload-artifact@v3 with: name: "${{ matrix.profile[0] }}_schema_dump" path: | scripts/spellcheck _build/docgen/${{ matrix.profile[0] }}/schema-en.json retention-days: 7 windows: runs-on: windows-2019 strategy: fail-fast: false matrix: profile: - emqx otp: - 25.3.2 steps: - uses: actions/checkout@v3 - uses: ilammy/msvc-dev-cmd@v1.12.0 - uses: erlef/setup-beam@v1.16.0 with: otp-version: ${{ matrix.otp }} - name: build env: PYTHON: python DIAGNOSTIC: 1 run: | # ensure crypto app (openssl) erl -eval "erlang:display(crypto:info_lib())" -s init stop make ${{ matrix.profile }}-tgz - name: run emqx timeout-minutes: 5 run: | ./_build/${{ matrix.profile }}/rel/emqx/bin/emqx start Start-Sleep -s 10 $pingOutput = ./_build/${{ matrix.profile }}/rel/emqx/bin/emqx ping if ($pingOutput = 'pong') { echo "EMQX started OK" } else { echo "Failed to ping EMQX $pingOutput" Exit 1 } ./_build/${{ matrix.profile }}/rel/emqx/bin/emqx stop echo "EMQX stopped" ./_build/${{ matrix.profile }}/rel/emqx/bin/emqx install echo "EMQX installed" ./_build/${{ matrix.profile }}/rel/emqx/bin/emqx uninstall echo "EMQX uninstalled" - uses: actions/upload-artifact@v3 with: name: windows path: _packages/${{ matrix.profile }}/* retention-days: 7 mac: strategy: fail-fast: false matrix: profile: - emqx - emqx-enterprise otp: - ${{ inputs.otp_vsn }} os: - macos-12-arm64 - macos-13 runs-on: ${{ matrix.os }} env: EMQX_NAME: ${{ matrix.profile }} steps: - uses: actions/checkout@v3 - uses: ./.github/actions/package-macos with: profile: ${{ matrix.profile }} 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 with: name: ${{ matrix.os }} path: _packages/**/* retention-days: 7