From 53b567c9893ffb3216f858470404fffd5abb6429 Mon Sep 17 00:00:00 2001 From: Joel Koch Date: Tue, 19 Nov 2024 22:30:57 +0100 Subject: [PATCH] Add ci --- .github/workflows/ci.yml | 75 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 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..b4156b4 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,75 @@ +name: CI + +on: + pull_request: + push: + branches: + - "main" + +jobs: + lint: + runs-on: ${{ matrix.os }} + env: + MIX_ENV: dev + name: Lint + strategy: + matrix: + os: ["ubuntu-latest"] + elixir: ["1.17"] + otp: ["27"] + steps: + - uses: actions/checkout@v4 + - name: Install Erlang & Elixir + uses: erlef/setup-beam@v1 + with: + otp-version: ${{ matrix.otp }} + elixir-version: ${{ matrix.elixir }} + - uses: actions/cache@v3 + with: + path: deps + key: ${{ matrix.os }}-otp_${{ matrix.otp }}-elixir_${{ matrix.elixir }}-mix_${{ hashFiles('**/mix.lock') }} + restore-keys: ${{ matrix.os }}-otp_${{ matrix.otp }}-elixir_${{ matrix.elixir }}-mix_ + - name: Install mix dependencies + run: mix deps.get + - name: Compile mix dependencies + run: mix deps.compile + - name: Check formatting + run: mix format --check-formatted + - name: Check unused deps + run: mix deps.unlock --check-unused + - name: Credo check + run: mix credo --all + + test: + runs-on: ${{ matrix.os }} + env: + MIX_ENV: test + + name: Test Elixir ${{ matrix.elixir }}, OTP ${{ matrix.otp }}, OS ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: ["ubuntu-latest"] + elixir: ["1.17"] + otp: ["27"] + + steps: + - uses: actions/checkout@v4 + - uses: erlef/setup-beam@v1 + with: + otp-version: ${{ matrix.otp }} + elixir-version: ${{ matrix.elixir }} + + - uses: actions/cache@v3 + with: + path: deps + key: ${{ matrix.os }}-otp_${{ matrix.otp }}-elixir_${{ matrix.elixir }}-mix_${{ hashFiles('**/mix.lock') }} + restore-keys: ${{ matrix.os }}-otp_${{ matrix.otp }}-elixir_${{ matrix.elixir }}-mix_ + - name: Install mix dependencies + run: mix deps.get --only test + - name: Compile mix dependencies + run: mix deps.compile + - name: Compile project + run: mix compile + - name: Test project + run: mix test