Skip to content

Improvements

Improvements #82

Workflow file for this run

# Copyright 2022 Giuseppe De Palma, Matteo Trentin
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
name: Core
on:
push:
branches: [main]
pull_request:
branches: [main]
env:
MIX_ENV: test
defaults:
run:
working-directory: core
jobs:
lint:
name: Lint check
runs-on: ubuntu-latest
strategy:
matrix:
elixir: [1.14]
otp: [25]
steps:
- uses: actions/checkout@v3
- name: Setup Elixir/OTP
uses: erlef/setup-beam@v1
with:
otp-version: "=${{ matrix.otp }}"
elixir-version: ${{ matrix.elixir }}
install-hex: true
install-rebar: true
- name: Retrieve Mix Dependencies Cache
uses: actions/cache@v1
id: mix-cache # id to use in retrieve action
with:
path: deps
key: ${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
- name: Install Mix Dependencies (if deps cache miss)
if: steps.mix-cache.outputs.cache-hit != 'true'
run: |
mix local.rebar --force
mix local.hex --force
mix deps.get
- name: Check Formatting
run: mix format --check-formatted
- name: Run Credo
run: mix credo --strict
unit-test:
name: Unit Tests
strategy:
matrix:
os: [ubuntu-20.04]
elixir: [1.14]
otp: [25]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v3
- name: Setup Elixir/OTP
if: ${{ startswith(matrix.os, 'ubuntu') || startswith(matrix.os, 'windows') }}
uses: erlef/setup-beam@v1
with:
otp-version: "=${{ matrix.otp }}"
elixir-version: ${{ matrix.elixir }}
install-hex: true
install-rebar: true
- name: Setup Elixir/OTP
if: ${{ startswith(matrix.os, 'macos') }}
run: |
brew install erlang
brew install elixir
- name: Retrieve Mix Dependencies Cache
uses: actions/cache@v1
id: mix-cache # id to use in retrieve action
with:
path: deps
key: ${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
- name: Install Rebar and Hex
run: |
mix local.rebar --force
mix local.hex --force
- name: Install Mix Dependencies (if deps cache miss)
if: steps.mix-cache.outputs.cache-hit != 'true'
run: |
mix do deps.get, deps.compile
- name: Run Core Unit Tests
run: mix test
integration-test:
name: Integration Tests
strategy:
matrix:
os: [ubuntu-20.04]
elixir: [1.14]
otp: [25]
runs-on: ${{ matrix.os }}
services:
postgres:
image: postgres:latest
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: core_test
ports:
- 5432:5432
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
env:
MIX_ENV: test
steps:
- uses: actions/checkout@v3
- name: Setup Elixir/OTP
if: ${{ startswith(matrix.os, 'ubuntu') || startswith(matrix.os, 'windows') }}
uses: erlef/setup-beam@v1
with:
otp-version: "=${{ matrix.otp }}"
elixir-version: ${{ matrix.elixir }}
install-hex: true
install-rebar: true
- name: Setup Elixir/OTP
if: ${{ startswith(matrix.os, 'macos') }}
run: |
brew install erlang
brew install elixir
- name: Retrieve Mix Dependencies Cache
uses: actions/cache@v1
id: mix-cache # id to use in retrieve action
with:
path: deps
key: ${{ runner.os }}-${{ matrix.otp }}-${{ matrix.elixir }}-mix-${{ hashFiles(format('{0}{1}', github.workspace, '/mix.lock')) }}
- name: Install Mix Dependencies (if deps cache miss)
if: steps.mix-cache.outputs.cache-hit != 'true'
run: |
mix local.rebar --force
mix local.hex --force
mix deps.get
- name: Run Core Integration Tests
run: mix itest