From f2102e4ba0722737883167b7b8d24810aa2cb617 Mon Sep 17 00:00:00 2001 From: Terence Ponce Date: Sat, 13 Apr 2024 04:42:10 +0100 Subject: [PATCH] Integrate GitHub Actions (#2) --- .github/workflows/ci.yml | 84 ++++++++++++++++++++++++++++++++++++++++ README.md | 2 + mix.exs | 2 + 3 files changed, 88 insertions(+) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..366d0aa --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,84 @@ +name: CI + +on: + push: + branches: + - main + pull_request: + branches: + - main + +env: + MIX_ENV: test + +permissions: + contents: read + +jobs: + test: + name: Lint and Test + runs-on: ubuntu-latest + strategy: + matrix: + otp: + - '26.2.4' + elixir: + - '1.16.2' + + services: + db: + image: postgres + env: + POSTGRES_PASSWORD: postgres + ports: + - '5432:5432' + options: >- + --health-cmd pg_isready + --health-interval 10s + --health-timeout 5s + --health-retries 5 + + steps: + - name: Checkout Repository + uses: actions/checkout@v2 + + - name: Install Erlang/Elixir + uses: erlef/setup-beam@v1 + with: + otp-version: ${{matrix.otp}} + elixir-version: ${{matrix.elixir}} + + - name: Cache deps + uses: actions/cache@v3 + id: cache-deps + env: + cache-name: cache-elixir-deps + with: + path: deps + key: ${{ runner.os }}-mix-${{ env.cache-name }}-${{ hashFiles('**/mix.lock') }} + restore-keys: | + ${{ runner.os }}-mix-${{ env.cache-name }}- + + - name: Cache compiled build + id: cache-build + uses: actions/cache@v3 + env: + cache-name: cache-compiled-build + with: + path: _build + key: ${{ runner.os }}-mix-${{ env.cache-name }}-${{ hashFiles('**/mix.lock') }} + restore-keys: | + ${{ runner.os }}-mix-${{ env.cache-name }}- + ${{ runner.os }}-mix- + + - name: Install Dependencies + run: mix deps.get + + - name: Compile + run: mix compile --warnings-as-errors + + - name: Run Linter + run: mix lint.ci + + - name: Run Tests + run: mix test diff --git a/README.md b/README.md index 423953f..fb4c6e6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # DashFloat +[![gh-actions](https://github.com/DashFloat/DashFloat/workflows/CI/badge.svg)](https://github.com/DashFloat/DashFloat/actions?workflow=CI) + To start your Phoenix server: * Run `mix setup` to install and setup dependencies diff --git a/mix.exs b/mix.exs index 7bf8d2e..1d1254a 100644 --- a/mix.exs +++ b/mix.exs @@ -78,6 +78,8 @@ defmodule DashFloat.MixProject do "assets.setup": ["tailwind.install --if-missing", "esbuild.install --if-missing"], "ecto.reset": ["ecto.drop", "ecto.setup"], "ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"], + lint: ["format"], + "lint.ci": ["format --check-formatted"], setup: ["deps.get", "ecto.setup", "assets.setup", "assets.build"], test: ["ecto.create --quiet", "ecto.migrate --quiet", "test"] ]