From 49cf3d71b8b3453c390f85834b4310efc6533ae5 Mon Sep 17 00:00:00 2001
From: Hans Krutzer <git@pixelspaceships.com>
Date: Sun, 22 Sep 2024 12:10:45 +0200
Subject: [PATCH] Create ci.yml

---
 .github/workflows/ci.yml | 54 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 54 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..04791ba
--- /dev/null
+++ b/.github/workflows/ci.yml
@@ -0,0 +1,54 @@
+name: CI
+
+on:
+  push:
+    branches: [ "master" ]
+  pull_request:
+
+permissions:
+  contents: read
+
+jobs:
+  test:
+
+    name: Build and test
+    runs-on: ubuntu-latest
+    env:
+      MIX_ENV: test
+    strategy:
+      fail-fast: false
+      matrix:
+        include:
+          - pair:
+              elixir: "1.16.3"
+              otp: "26.2.5.3"
+          - pair:
+              elixir: "1.17.3"
+              otp: "27.1"
+              lint: lint
+    steps:
+    - uses: actions/checkout@v4
+    - name: Set up Elixir
+      uses: erlef/setup-beam@main
+      with:
+        otp-version: ${{ matrix.pair.otp }}
+        elixir-version: ${{ matrix.pair.elixir }}
+        version-type: strict
+    - name: Restore dependencies cache
+      uses: actions/cache@v4
+      with:
+        path: deps
+        key: ${{ runner.os }}-mix-${{ hashFiles('**/mix.lock') }}
+        restore-keys: ${{ runner.os }}-mix-
+    - run: mix deps.get --check-locked
+    - run: mix format --check-formatted
+      if: ${{ matrix.lint }}
+    - run: mix deps.unlock --check-unused
+      if: ${{ matrix.lint }}
+    - run: mix deps.compile
+    - run: mix compile --no-optional-deps --warnings-as-errors
+      if: ${{ matrix.lint }}
+    - run: mix test --slowest 5
+      if: ${{ ! matrix.lint }}
+    - run: mix test --slowest 5 --warnings-as-errors
+      if: ${{ matrix.lint }}