name: CI on: [pull_request, push] jobs: mix_test: strategy: fail-fast: false matrix: include: - pair: elixir: "1.12" otp: "24" report_coverage: true lint: true runs-on: ubuntu-20.04 services: db: image: postgres:13 ports: ["5432:5432"] env: POSTGRES_PASSWORD: postgres options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 env: MIX_ENV: test ELIXIR_ASSERT_TIMEOUT: 1000 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} steps: - uses: actions/checkout@v2.3.5 - uses: erlef/setup-beam@v1.9 with: otp-version: ${{ matrix.pair.otp }} elixir-version: ${{ matrix.pair.elixir }} - uses: actions/cache@v2.1.6 with: path: | deps _build priv/cldr/locales key: ${{ runner.os }}-${{ matrix.pair.elixir }}-${{ matrix.pair.otp }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }} restore-keys: | ${{ runner.os }}-${{ matrix.pair.elixir }}-${{ matrix.pair.otp }}-mix- - name: Install Dependencies run: mix deps.get - name: Check Formatting run: mix format --check-formatted if: ${{ matrix.lint }} - name: Check unused dependencies run: mix deps.unlock --check-unused if: ${{ matrix.lint }} - name: Compile dependencies run: mix deps.compile - name: Check for compilation warnings run: mix compile --warnings-as-errors if: ${{ matrix.lint }} - name: Run Tests run: mix test - name: Check Coverage if: github.ref == 'refs/heads/master' && matrix.report_coverage run: mix coveralls.github continue-on-error: true