Skip to content

Upgrade credo so it works with 1.17 and run 1.17 for fancy things on CI #558

Upgrade credo so it works with 1.17 and run 1.17 for fancy things on CI

Upgrade credo so it works with 1.17 and run 1.17 for fancy things on CI #558

Workflow file for this run

name: CI
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
on: [pull_request, push]
jobs:
linux:
name: Test on Ubuntu (Elixir ${{ matrix.elixir_version }}, OTP ${{ matrix.otp_version }})
runs-on: ubuntu-20.04
strategy:
matrix:
# Thoroughly check the most recent versions
elixir_version: ['1.13.4', '1.14.5', '1.15.7', '1.16.3', '1.17.0-rc.1']
otp_version: ['23.3', '24.3', '25.3', '26.2']
# Spot check older versions
#
# Goal is to have old versions (elixir and erlang) have basically one test each.
# That should be enough to affirm that they are working ok.
include:
- elixir_version: '1.7.4'
otp_version: '20.3'
- elixir_version: '1.8.2'
otp_version: '20.3'
- elixir_version: '1.9.4'
otp_version: '21.3'
- elixir_version: '1.10.4'
otp_version: '21.3'
- elixir_version: '1.11.4'
otp_version: '22.3'
- elixir_version: '1.12.3'
otp_version: '23.3'
- elixir_version: '1.13.4'
otp_version: '22.3'
- elixir_version: '1.17.0-rc.1'
otp_version: '27.0'
exclude:
- elixir_version: '1.15.7'
otp_version: '23.3'
- elixir_version: '1.16.3'
otp_version: '23.3'
- elixir_version: '1.13.4'
otp_version: '26.2'
- elixir_version: '1.14.5'
otp_version: '26.2'
- elixir_version: '1.17.0-rc.1'
otp_version: '23.3'
- elixir_version: '1.17.0-rc.1'
otp_version: '24.3'
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Setup Elixir
uses: erlef/setup-beam@v1
with:
elixir-version: ${{ matrix.elixir_version }}
otp-version: ${{ matrix.otp_version }}
- name: Restore deps and _build
uses: actions/cache@v3
with:
path: |
deps
_build
key: erlef-${{ runner.os }}-mix-${{ matrix.elixir_version }}-${{ matrix.otp_version }}-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
- name: Restore plts
uses: actions/cache@v3
with:
path: tools/plts
key: erlef-${{ runner.os }}-dialyzer-${{ matrix.elixir_version }}-${{ matrix.otp_version }}-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
if: contains(matrix.elixir_version, '1.17')
- run: mix deps.get
- run: MIX_ENV=test mix compile --warnings-as-errors
- run: mix credo
if: contains(matrix.elixir_version, '1.17')
- name: Check if formatted
if: contains(matrix.elixir_version, '1.17')
run: mix format --check-formatted
- name: Actual Tests
# this will let warnings slip through but I don't wanna replicate all that magic
# right now
run: MIX_ENV=test mix coveralls.github || mix test --failed
# Apparently the one with `!` can't go without the fancy expression syntax
if: ${{ !contains(matrix.elixir_version, '1.17') }}
- name: Actual Tests WITH warnings as errors
run: MIX_ENV=test mix coveralls.github --warnings-as-errors || mix test --failed
if: contains(matrix.elixir_version, '1.17')
- name: Dialyzer
run: mix dialyzer --halt-exit-status
if: contains(matrix.elixir_version, '1.17')
macos:
name: Test on MacOS
runs-on: macos-latest
steps:
- name: Checkout
uses: actions/checkout@v3
# no versioning on brew but getting asdf or something was a bigger headache
- name: Install Elixir
run: brew install elixir
- name: Restore deps and _build
uses: actions/cache@v3
with:
path: |
deps
_build
key: ${{ runner.os }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
- run: mix local.hex --force
- run: mix deps.get
- run: mix local.rebar --force
- run: MIX_ENV=test mix compile --warnings-as-errors
- run: mix test || mix test --failed
windows:
name: Test on Windows
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Restore chocolatey
uses: actions/cache@v3
with:
path: C:\Users\runneradmin\AppData\Local\Temp\chocolatey
key: ${{ runner.os }}-chocolatey-${{ github.sha }}
restore-keys: |
${{ runner.os }}-chocolatey-
- name: Install Elixir
run: |
choco install elixir --version=1.14.2 --no-progress
set MIX_ENV=test
echo "C:\ProgramData\chocolatey\lib\Elixir\bin;C:\ProgramData\chocolatey\bin;C:\ProgramData\chocolatey\lib\Elixir\tools\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
- name: Build
run: |
echo "$PATH"
mix local.hex --force
mix deps.get
mix local.rebar --force
mix compile --warnings-as-errors
- name: Test
run: mix test || mix test --failed