Skip to content

Nebulex v3

Nebulex v3 #489

Workflow file for this run

name: CI
on:
push:
branches:
- master
pull_request:
branches:
- master
jobs:
nebulex_test:
name: >-
Nebulex Test (Elixir ${{ matrix.elixir }} / OTP ${{ matrix.otp }} /
OS ${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- elixir: 1.17.x
otp: 27.x
os: 'ubuntu-latest'
style: true
coverage: true
sobelow: true
dialyzer: true
doctor: true
- elixir: 1.17.x
otp: 26.x
os: 'ubuntu-latest'
- elixir: 1.16.x
otp: 26.x
os: 'ubuntu-latest'
- elixir: 1.15.x
otp: 25.x
os: 'ubuntu-latest'
- elixir: 1.14.x
otp: 23.x
os: 'ubuntu-20.04'
env:
GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'
MIX_ENV: test
steps:
- uses: actions/checkout@v3
- name: Install OTP and Elixir
uses: erlef/setup-beam@v1
with:
otp-version: '${{ matrix.otp }}'
elixir-version: '${{ matrix.elixir }}'
- name: Cache deps
uses: actions/cache@v3
id: mix-cache
with:
path: deps
key: >-
${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-mix-${{
hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
restore-keys: |
${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-mix-
- name: Cache _build
uses: actions/cache@v3
with:
path: _build
key: >-
${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-build-${{
hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
restore-keys: |
${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-build-
- name: Install Dependencies
run: |
mix local.hex --force
mix local.rebar --force
mix deps.get
if: ${{ steps.mix-cache.outputs.cache-hit != 'true' }}
- name: Compile code
run: mix compile --warnings-as-errors
- name: Run style and code consistency checks
run: |
mix format --check-formatted
mix credo --strict
if: ${{ matrix.style }}
- name: Run tests
run: mix test
if: ${{ !matrix.coverage }}
- name: Run tests with coverage
run: mix coveralls.github
if: ${{ matrix.coverage }}
- name: Run sobelow
run: mix sobelow --skip --exit Low
if: ${{ matrix.sobelow }}
- name: Restore PLT Cache
uses: actions/cache@v3
id: plt-cache
with:
path: priv/plts
key: ${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-plt-v3-1
if: ${{ matrix.dialyzer }}
- name: Create PLTs
run: |
mkdir -p priv/plts
mix dialyzer --plt
if: ${{ matrix.dialyzer && steps.plt-cache.outputs.cache-hit != 'true' }}
- name: Run dialyzer
run: mix dialyzer --format github
if: ${{ matrix.dialyzer && steps.plt-cache.outputs.cache-hit != 'true' }}
- name: Run documentation health check
run: mix doctor
if: ${{ matrix.doctor }}