271 lines
6.9 KiB
YAML
271 lines
6.9 KiB
YAML
name: Runtime
|
|
|
|
on:
|
|
push:
|
|
paths:
|
|
- '*'
|
|
- '!*.md'
|
|
- '.github/workflows/runtime.yml'
|
|
- 'checkouts/**'
|
|
- 'config/**'
|
|
- 'lib/**'
|
|
- 'm4/**'
|
|
- 'plugins/**'
|
|
- 'rel/**'
|
|
pull_request:
|
|
paths:
|
|
- '*'
|
|
- '!*.md'
|
|
- '.github/workflows/runtime.yml'
|
|
- 'checkouts/**'
|
|
- 'config/**'
|
|
- 'lib/**'
|
|
- 'm4/**'
|
|
- 'plugins/**'
|
|
- 'rel/**'
|
|
|
|
jobs:
|
|
|
|
################################################################ Rebars #####
|
|
|
|
rebars:
|
|
runs-on: ubuntu-24.04-arm
|
|
strategy:
|
|
matrix:
|
|
otp: ['25', '26', '27', '28', '29']
|
|
rebar: ['rebar', 'rebar3']
|
|
exclude:
|
|
- otp: '27'
|
|
rebar: 'rebar'
|
|
- otp: '28'
|
|
rebar: 'rebar'
|
|
- otp: '29'
|
|
rebar: 'rebar'
|
|
container:
|
|
image: public.ecr.aws/docker/library/erlang:${{ matrix.otp }}
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Prepare libraries
|
|
run: |
|
|
apt-get -qq update
|
|
apt-get -q -y install libexpat1-dev libgd-dev libpam0g-dev \
|
|
libsqlite3-dev libwebp-dev libyaml-dev
|
|
|
|
- name: Cache rebar3
|
|
if: matrix.rebar == 'rebar3'
|
|
uses: actions/cache@v5
|
|
with:
|
|
path: |
|
|
~/.cache/rebar3/
|
|
_build/default/lib/
|
|
key: runtime-${{ matrix.otp }}-${{matrix.rebar}}-${{hashFiles('rebar.*')}}
|
|
|
|
- name: Compile
|
|
uses: ./.github/actions/manage-ejabberd
|
|
with:
|
|
for: prod
|
|
do: compile
|
|
tool: ${{ matrix.rebar }}
|
|
configure: --disable-elixir
|
|
|
|
- run: make hooks
|
|
- run: make options
|
|
- run: make xref
|
|
- run: make dialyzer
|
|
- run: make elvis
|
|
if: matrix.otp > '25' && matrix.rebar == 'rebar3'
|
|
|
|
- name: Production
|
|
uses: ./.github/actions/manage-ejabberd
|
|
with:
|
|
for: prod
|
|
do: deploy, start, register, stop, check, logs
|
|
tool: ${{ matrix.rebar }}
|
|
username: user1
|
|
|
|
- name: Development
|
|
uses: ./.github/actions/manage-ejabberd
|
|
with:
|
|
for: dev
|
|
do: deploy, start, register, stop, check, logs
|
|
tool: ${{ matrix.rebar }}
|
|
username: user2
|
|
|
|
- name: Installed
|
|
uses: ./.github/actions/manage-ejabberd
|
|
with:
|
|
for: install
|
|
do: deploy, start, register, stop, check, logs
|
|
tool: ${{ matrix.rebar }}
|
|
username: user3
|
|
|
|
####################################################### Rebar3 + Elixir #####
|
|
|
|
rebar3-elixir:
|
|
runs-on: ubuntu-24.04-arm
|
|
strategy:
|
|
matrix:
|
|
elixir: ['1.14', '1.18', '1.19']
|
|
container:
|
|
image: public.ecr.aws/docker/library/elixir:${{ matrix.elixir }}
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Prepare libraries
|
|
run: |
|
|
apt-get -qq update
|
|
apt-get -q -y install libexpat1-dev libgd-dev libpam0g-dev \
|
|
libsqlite3-dev libwebp-dev libyaml-dev
|
|
|
|
- name: Enable Module.Example and an Elixir dependency
|
|
run: |
|
|
sed -i "s|^modules:|modules:\n 'Ejabberd.Module.Example': {}|g" \
|
|
ejabberd.yml.example
|
|
cat ejabberd.yml.example
|
|
sed -i 's|^{deps, \[\(.*\)|{deps, [{decimal, ".*", {git, "https://github.com/ericmj/decimal", {branch, "main"}}},\n \1|g' rebar.config
|
|
cat rebar.config
|
|
|
|
- name: Cache hex.pm
|
|
uses: actions/cache@v5
|
|
with:
|
|
path: |
|
|
~/.cache/rebar3/
|
|
key: runtime-${{matrix.elixir}}-${{hashFiles('rebar.*')}}
|
|
|
|
- name: Install Hex and Rebar3 manually on older Elixir
|
|
if: matrix.elixir < '1.15'
|
|
run: |
|
|
mix local.hex --force
|
|
mix local.rebar --force
|
|
|
|
- name: Compile
|
|
uses: ./.github/actions/manage-ejabberd
|
|
with:
|
|
for: prod
|
|
do: compile
|
|
tool: ./rebar3
|
|
|
|
- name: Test scripts, deps, eunit
|
|
run: |
|
|
make scripts deps
|
|
./rebar3 eunit --verbose
|
|
|
|
- run: make hooks
|
|
- run: make options
|
|
- run: make xref
|
|
#- run: make dialyzer
|
|
- run: make elvis
|
|
if: matrix.otp > '25'
|
|
|
|
- name: Production
|
|
uses: ./.github/actions/manage-ejabberd
|
|
with:
|
|
for: prod
|
|
do: deploy, start, register, stop, check, logs
|
|
username: user1
|
|
|
|
- name: Release
|
|
uses: ./.github/actions/manage-ejabberd
|
|
with:
|
|
for: dev
|
|
do: deploy, start, register, stop, check, logs
|
|
username: user2
|
|
|
|
- name: Installed
|
|
uses: ./.github/actions/manage-ejabberd
|
|
with:
|
|
for: install
|
|
do: deploy, start, register, stop, check, logs
|
|
username: user3
|
|
|
|
################################################################### Mix #####
|
|
|
|
mix:
|
|
runs-on: ubuntu-24.04-arm
|
|
strategy:
|
|
matrix:
|
|
elixir: ['1.14', '1.18', '1.19']
|
|
container:
|
|
image: public.ecr.aws/docker/library/elixir:${{ matrix.elixir }}
|
|
|
|
steps:
|
|
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Prepare libraries
|
|
run: |
|
|
apt-get -qq update
|
|
apt-get -q -y install libexpat1-dev libgd-dev libpam0g-dev \
|
|
libsqlite3-dev libwebp-dev libyaml-dev
|
|
|
|
- name: Remove Elixir matchers
|
|
run: |
|
|
echo "::remove-matcher owner=elixir-mixCompileWarning::"
|
|
echo "::remove-matcher owner=elixir-credoOutputDefault::"
|
|
echo "::remove-matcher owner=elixir-mixCompileError::"
|
|
echo "::remove-matcher owner=elixir-mixTestFailure::"
|
|
echo "::remove-matcher owner=elixir-dialyzerOutputDefault::"
|
|
|
|
- name: Enable Module.Example and an Elixir dependency
|
|
run: |
|
|
sed -i "s|^modules:|modules:\n 'Ejabberd.Module.Example': {}|g" \
|
|
ejabberd.yml.example
|
|
cat ejabberd.yml.example
|
|
sed -i 's|^{deps, \(.*\)|{deps, \1\n {decimal, ".*", {git, "https://github.com/ericmj/decimal", {branch, "main"}}}, |g' rebar.config
|
|
cat rebar.config
|
|
|
|
- name: Cache hex.pm
|
|
uses: actions/cache@v5
|
|
with:
|
|
path: |
|
|
~/.hex/
|
|
key: runtime-${{matrix.elixir}}-${{hashFiles('mix.*')}}
|
|
|
|
- name: Install Hex and Rebar3 manually on older Elixir
|
|
if: matrix.elixir < '1.15'
|
|
run: |
|
|
mix local.hex --force
|
|
mix local.rebar --force
|
|
|
|
- name: Compile
|
|
uses: ./.github/actions/manage-ejabberd
|
|
with:
|
|
for: prod
|
|
do: compile
|
|
tool: mix
|
|
|
|
- run: make hooks
|
|
- run: make options
|
|
- run: make xref
|
|
- run: make dialyzer
|
|
- run: make elvis
|
|
if: matrix.otp > '25'
|
|
|
|
- run: make edoc
|
|
|
|
- name: Production
|
|
uses: ./.github/actions/manage-ejabberd
|
|
with:
|
|
for: prod
|
|
do: deploy, start, register, stop, check, logs
|
|
username: user1
|
|
|
|
- name: Development
|
|
uses: ./.github/actions/manage-ejabberd
|
|
with:
|
|
for: dev
|
|
do: deploy, start, register, stop, check, logs
|
|
username: user2
|
|
|
|
- name: Installed
|
|
uses: ./.github/actions/manage-ejabberd
|
|
with:
|
|
for: install
|
|
do: deploy, start, register, stop, check, logs
|
|
username: user3
|