Skip to content

.github/workflows/elixir.yml #145

.github/workflows/elixir.yml

.github/workflows/elixir.yml #145

Workflow file for this run

on:
pull_request:
branches:
- "*"
push:
branches:
- "main"
tags:
- "v*"
# Secrets:
# * CACHE_VERSION - Set to `date +%s`, set new when the cache should be busted
env:
BUILD_EMBEDDED: true
DIALYZER_PLT_PRIV: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
DEFAULT_ELIXIR_VERSION: 1.13
DEFAULT_OTP_VERSION: 24.2
jobs:
format:
name: Check Formatting
runs-on: ubuntu-latest
env:
MIX_ENV: dev
steps:
- uses: actions/checkout@v3
- uses: erlef/setup-elixir@v1
id: setup-elixir
with:
otp-version: "${{ env.DEFAULT_OTP_VERSION }}"
elixir-version: "${{ env.DEFAULT_ELIXIR_VERSION }}"
- uses: actions/[email protected]
with:
path: deps
key: deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-${{ hashFiles('mix.lock') }}
restore-keys: |
deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-
deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-
- run: mix deps.get
- run: mix format --check-formatted
test:
name: Run Tests & Submit Coverage
runs-on: ubuntu-latest
env:
MIX_ENV: test
strategy:
fail-fast: false
matrix:
otp: ["21.3", "22.3", "23.3", "24.1", "25.1"]
elixir: ["1.10", "1.11", "1.12", "1.13", "1.14"]
exclude:
- otp: "24.1"
elixir: "1.10"
- otp: "25.1"
elixir: "1.10"
- otp: "25.1"
elixir: "1.11"
- otp: "21.3"
elixir: "1.12"
- otp: "25.1"
elixir: "1.12"
- otp: "21.3"
elixir: "1.13"
- otp: "21.3"
elixir: "1.14"
- otp: "22.3"
elixir: "1.14"
steps:
- uses: actions/checkout@v3
- uses: erlef/setup-elixir@v1
id: setup-elixir
with:
otp-version: ${{ matrix.otp }}
elixir-version: ${{ matrix.elixir }}
- uses: actions/[email protected]
with:
path: deps
key: deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-${{ hashFiles('mix.lock') }}
restore-keys: |
deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-
deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-
- run: mix deps.get
- uses: actions/[email protected]
with:
path: _build/test
key: compile_test-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-${{ hashFiles('mix.lock') }}
restore-keys: |
compile_test-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-
compile_test-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-
- run: mix deps.compile --skip-umbrella-children
- run: mix compile --warning-as-errors
- run: mix coveralls.github --umbrella || mix test
credo:
name: Check Credo
runs-on: ubuntu-latest
env:
MIX_ENV: dev
steps:
- uses: actions/checkout@v3
- uses: erlef/setup-elixir@v1
id: setup-elixir
with:
otp-version: "${{ env.DEFAULT_OTP_VERSION }}"
elixir-version: "${{ env.DEFAULT_ELIXIR_VERSION }}"
- uses: actions/[email protected]
with:
path: deps
key: deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-${{ hashFiles('mix.lock') }}
restore-keys: |
deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-
deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-
- run: mix deps.get
- uses: actions/[email protected]
with:
path: _build/dev
key: compile_dev-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-${{ hashFiles('mix.lock') }}
restore-keys: |
compile_dev-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-
compile_dev-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-
- run: mix deps.compile --skip-umbrella-children
- run: mix compile --warning-as-errors
- run: mix credo --strict
dialyzer_plt:
name: Generate Dialyzer PLT
runs-on: ubuntu-latest
env:
MIX_ENV: dev
steps:
- uses: actions/checkout@v3
- uses: erlef/setup-elixir@v1
id: setup-elixir
with:
otp-version: "${{ env.DEFAULT_OTP_VERSION }}"
elixir-version: "${{ env.DEFAULT_ELIXIR_VERSION }}"
- uses: actions/[email protected]
with:
path: deps
key: deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-${{ hashFiles('mix.lock') }}
restore-keys: |
deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-
deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-
- run: mix deps.get
- uses: actions/[email protected]
with:
path: _build/dev
key: compile_dev-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-${{ hashFiles('mix.lock') }}
restore-keys: |
compile_dev-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-
compile_dev-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-
- run: mix deps.compile --skip-umbrella-children
- run: mix compile --warning-as-errors
- uses: actions/[email protected]
with:
path: priv/plts/
key: dialyzer_plt_dev-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-${{ hashFiles('mix.lock') }}
restore-keys: |
dialyzer_plt_dev-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-
dialyzer_plt_dev-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-
- run: mix dialyzer --plt
- uses: actions/upload-artifact@v3
with:
name: dialyzer_plt_dev-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}
path: priv/plts/
dialyzer_test:
name: "Check Dialyzer"
runs-on: ubuntu-latest
needs: ["dialyzer_plt"]
env:
MIX_ENV: dev
steps:
- uses: actions/checkout@v3
- uses: erlef/setup-elixir@v1
id: setup-elixir
with:
otp-version: "${{ env.DEFAULT_OTP_VERSION }}"
elixir-version: "${{ env.DEFAULT_ELIXIR_VERSION }}"
- uses: actions/[email protected]
with:
path: deps
key: deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-${{ hashFiles('mix.lock') }}
restore-keys: |
deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-
deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-
- run: mix deps.get
- uses: actions/[email protected]
with:
path: _build/dev
key: compile_dev-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-${{ hashFiles('mix.lock') }}
restore-keys: |
compile_dev-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-
compile_dev-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-
- run: mix deps.compile --skip-umbrella-children
- run: mix compile --warning-as-errors
- uses: actions/download-artifact@v3
with:
name: dialyzer_plt_dev-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}
path: priv/plts/
- run: mix dialyzer
docs:
name: "Generate Docs"
runs-on: ubuntu-latest
env:
MIX_ENV: dev
steps:
- uses: actions/checkout@v3
- uses: erlef/setup-elixir@v1
id: setup-elixir
with:
otp-version: "${{ env.DEFAULT_OTP_VERSION }}"
elixir-version: "${{ env.DEFAULT_ELIXIR_VERSION }}"
- uses: actions/[email protected]
with:
path: deps
key: deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-${{ hashFiles('mix.lock') }}
restore-keys: |
deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-
deps-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-
- run: mix deps.get
- uses: actions/[email protected]
with:
path: _build/dev
key: compile_dev-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-${{ hashFiles('mix.lock') }}
restore-keys: |
compile_dev-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-${{ runner.os }}-
compile_dev-${{ secrets.CACHE_VERSION }}-${{ steps.setup-elixir.outputs.otp-version }}-${{ steps.setup-elixir.outputs.elixir-version }}-
- run: mix deps.compile --skip-umbrella-children
- run: mix compile --warning-as-errors
- run: mix docs
- uses: actions/upload-artifact@v3
with:
name: docs
path: doc