name: CI on: pull_request: push: branches: - master jobs: test: runs-on: ubuntu-18.04 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} strategy: fail-fast: false matrix: include: - pair: elixir: 1.10.4 otp: 21.3 - pair: elixir: 1.11.3 otp: 22.2 - pair: elixir: 1.12.3 otp: 24.3 - pair: elixir: 1.13.3 otp: 23.3 - pair: elixir: 1.13.3 otp: 24.3 lint: lint steps: - uses: actions/checkout@v2 - uses: erlef/setup-elixir@v1 with: otp-version: ${{matrix.pair.otp}} elixir-version: ${{matrix.pair.elixir}} - name: Install Dependencies run: mix deps.get - run: mix format --check-formatted if: ${{ matrix.lint }} - run: mix deps.get && mix deps.unlock --check-unused if: ${{ matrix.lint }} - run: mix deps.compile - run: mix compile --warnings-as-errors if: ${{ matrix.lint }} - run: MIX_ENV=test mix coveralls.github - name: Retrieve PLT Cache uses: actions/cache@v1 id: plt-cache with: path: priv/plts key: ${{ runner.os }}-${{ matrix.pair.otp }}-${{ matrix.pair.elixir }}-plts-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }} - name: Create PLTs if: steps.plt-cache.outputs.cache-hit != 'true' run: | mkdir -p priv/plts mix dialyzer --plt - name: Run dialyzer run: mix dialyzer --no-check