233 lines
6.5 KiB
YAML
233 lines
6.5 KiB
YAML
name: Build slim packages
|
|
|
|
concurrency:
|
|
group: slim-${{ github.event_name }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
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: ubuntu-20.04
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
profile:
|
|
- emqx-edge
|
|
- emqx
|
|
- emqx-enterprise
|
|
otp:
|
|
- 24.2.1-1
|
|
elixir:
|
|
- 1.13.3
|
|
os:
|
|
- ubuntu20.04
|
|
- rockylinux8
|
|
|
|
container: "ghcr.io/emqx/emqx-builder/5.0-10:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os }}"
|
|
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: prepare
|
|
run: |
|
|
echo "EMQX_NAME=${{ matrix.profile }}" >> $GITHUB_ENV
|
|
echo "CODE_PATH=$GITHUB_WORKSPACE" >> $GITHUB_ENV
|
|
- name: Get deps git refs for cache
|
|
id: deps-refs
|
|
run: |
|
|
scripts/get-dep-refs.sh
|
|
make clean-all
|
|
- name: load quicer cache
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
_build/default/lib/quicer/
|
|
deps/quicer/
|
|
key: ${{ matrix.os }}-${{ matrix.elixir }}-${{ matrix.otp }}-amd64-${{ steps.deps-refs.outputs.DEP_QUICER_REF }}
|
|
- name: build and test tgz package
|
|
run: |
|
|
make ${EMQX_NAME}-tgz
|
|
./scripts/pkg-tests.sh ${EMQX_NAME}-tgz
|
|
- name: run static checks
|
|
if: contains(matrix.os, 'ubuntu')
|
|
run: |
|
|
make static_checks
|
|
- name: build and test deb/rpm packages
|
|
run: |
|
|
make ${EMQX_NAME}-pkg
|
|
./scripts/pkg-tests.sh ${EMQX_NAME}-pkg
|
|
- name: build and test tgz package (Elixir)
|
|
run: |
|
|
make ${EMQX_NAME}-elixir-tgz
|
|
./scripts/pkg-tests.sh ${EMQX_NAME}-elixir-tgz
|
|
- name: build and test deb/rpm packages (Elixir)
|
|
run: |
|
|
make ${EMQX_NAME}-elixir-pkg
|
|
./scripts/pkg-tests.sh ${EMQX_NAME}-elixir-pkg
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: ${{ matrix.profile}}-${{ matrix.otp }}-${{ matrix.os }}
|
|
path: _packages/${{ matrix.profile}}/*.tar.gz
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: "${{ matrix.profile }}_schema_dump"
|
|
path: _build/*/lib/emqx_dashboard/priv/www/static/schema.json
|
|
|
|
windows:
|
|
runs-on: windows-2019
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
profile:
|
|
- emqx
|
|
otp:
|
|
- 24.2.1
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- uses: ilammy/msvc-dev-cmd@v1
|
|
- uses: erlef/setup-beam@v1
|
|
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 5
|
|
echo "EMQX started"
|
|
./_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"
|
|
|
|
mac:
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
profile:
|
|
- emqx
|
|
- emqx-enterprise
|
|
otp:
|
|
- 24.2.1-1
|
|
macos:
|
|
- macos-11
|
|
- macos-10.15
|
|
|
|
runs-on: ${{ matrix.macos }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v2
|
|
- name: prepare
|
|
run: |
|
|
brew update
|
|
brew install curl zip unzip gnu-sed kerl unixodbc freetds
|
|
echo "/usr/local/bin" >> $GITHUB_PATH
|
|
echo "EMQX_NAME=${{ matrix.profile }}" >> $GITHUB_ENV
|
|
- uses: actions/cache@v2
|
|
id: cache
|
|
with:
|
|
path: ~/.kerl/${{ matrix.otp }}
|
|
key: otp-install-${{ matrix.otp }}-${{ matrix.macos }}
|
|
- name: build erlang
|
|
if: steps.cache.outputs.cache-hit != 'true'
|
|
timeout-minutes: 60
|
|
env:
|
|
KERL_BUILD_BACKEND: git
|
|
OTP_GITHUB_URL: https://github.com/emqx/otp
|
|
run: |
|
|
kerl update releases
|
|
kerl build ${{ matrix.otp }}
|
|
kerl install ${{ matrix.otp }} $HOME/.kerl/${{ matrix.otp }}
|
|
- name: Get deps git refs for cache
|
|
id: deps-refs
|
|
run: |
|
|
. $HOME/.kerl/${{ matrix.otp }}/activate
|
|
make ensure-rebar3
|
|
sudo cp rebar3 /usr/local/bin/rebar3
|
|
scripts/get-dep-refs.sh
|
|
make clean-all
|
|
- name: load quicer cache
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: _build/default/lib/quicer/
|
|
key: ${{ matrix.macos }}-${{ matrix.otp }}-macos-${{ steps.deps-refs.outputs.DEP_QUICER_REF }}
|
|
- name: build ${{ matrix.profile }}
|
|
run: |
|
|
. $HOME/.kerl/${{ matrix.otp }}/activate
|
|
make ensure-rebar3
|
|
sudo cp rebar3 /usr/local/bin/rebar3
|
|
make ${{ matrix.profile }}-tgz
|
|
- name: test
|
|
run: |
|
|
pkg_name=$(find _packages/${{ matrix.profile }} -mindepth 1 -maxdepth 1 -iname \*.tar.gz)
|
|
tar -zxf $pkg_name
|
|
# gsed -i '/emqx_telemetry/d' ./emqx/data/loaded_plugins
|
|
./emqx/bin/emqx start || cat emqx/log/erlang.log.1
|
|
ready='no'
|
|
for i in {1..10}; do
|
|
if curl -fs 127.0.0.1:18083/api/v5/status > /dev/null; then
|
|
ready='yes'
|
|
break
|
|
fi
|
|
sleep 1
|
|
done
|
|
if [ "$ready" != "yes" ]; then
|
|
echo "Timed out waiting for emqx to be ready"
|
|
cat emqx/log/erlang.log.1
|
|
exit 1
|
|
fi
|
|
./emqx/bin/emqx_ctl status
|
|
./emqx/bin/emqx stop
|
|
rm -rf emqx
|
|
- uses: actions/upload-artifact@v2
|
|
with:
|
|
name: macos
|
|
path: _packages/**/*.tar.gz
|
|
|
|
spellcheck:
|
|
needs: linux
|
|
strategy:
|
|
matrix:
|
|
profile:
|
|
- emqx-edge
|
|
- emqx
|
|
- emqx-enterprise
|
|
runs-on: ubuntu-20.04
|
|
container: "ghcr.io/iequ1/emqx-schema-validate:0.3.0"
|
|
steps:
|
|
- uses: actions/download-artifact@v2
|
|
name: Download schema dump
|
|
with:
|
|
name: "${{ matrix.profile }}_schema_dump"
|
|
path: /tmp/
|
|
- name: Run spellcheck
|
|
run: |
|
|
cd /LanguageTool
|
|
bash start.sh > /dev/null &
|
|
./emqx_schema_validate /tmp/${{ matrix.profile }}/lib/emqx_dashboard/priv/www/static/schema.json
|