.github/workflows/elixir.yml #145
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |