Skip to content

Commit

Permalink
Configure CI
Browse files Browse the repository at this point in the history
  • Loading branch information
zacksiri committed Feb 19, 2024
1 parent 0ae62c3 commit 165f4c1
Show file tree
Hide file tree
Showing 2 changed files with 155 additions and 3 deletions.
152 changes: 152 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
name: 'CI'

on:
push:
branches:
- master
- develop
- 'feature/**'
- 'hotfix/**'

jobs:
deps:
name: Dependencies
runs-on: warp-ubuntu-latest-x64-2x
container:
image: alpine:3.19

steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}

- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Install OS Deps
run: |
apk update && apk add --update tar build-base libsodium-dev \
elixir nodejs npm git erlang-dialyzer
- name: Retrieve Cached Dependencies
uses: actions/cache@v4
id: mix-cache
with:
path: |
deps
_build
priv/plts
key: ${{ runner.os }}-polar-${{ hashFiles('mix.lock') }}

- name: Install Dependencies
if: steps.mix-cache.outputs.cache-hit != 'true'
run: |
mkdir -p priv/plts
mix local.rebar --force
mix local.hex --force
mix deps.get
mix deps.compile
MIX_ENV=test mix deps.compile
mix dialyzer --plt
static_code_analysis:
name: Static Code Analysis
needs: deps
runs-on: warp-ubuntu-latest-x64-2x
container:
image: alpine:3.19

steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}

- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Install Dependencies
run: |
apk update && apk add --update tar build-base libsodium-dev \
elixir nodejs npm git erlang-dialyzer
mix local.rebar --force
mix local.hex --force
- name: Retrieve Cached Dependencies
uses: actions/cache@v4
id: mix-cache
with:
path: |
deps
_build
priv/plts
key: ${{ runner.os }}-polar-${{ hashFiles('mix.lock') }}

- name: Check Code Format
run: mix format --check-formatted

- name: Run Dialyzer
run: mix dialyzer --no-check --halt-exit-status

test:
name: Unit Tests
needs: deps
runs-on: warp-ubuntu-latest-x64-2x
container:
image: alpine:3.19

services:
postgres:
image: postgres
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: postgres
ports:
- 5432:5432
# needed because the postgres container does not provide a healthcheck
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5

steps:
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}

- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Install Dependencies
run: |
apk update && apk add --update tar build-base libsodium-dev \
elixir nodejs npm git erlang-dialyzer
mix local.rebar --force
mix local.hex --force
- name: Retrieve Cached Dependencies
uses: actions/cache@v4
id: mix-cache
with:
path: |
deps
_build
priv/plts
key: ${{ runner.os }}-polar-${{ hashFiles('mix.lock') }}

- name: Run Tests
run: mix test --trace --slowest 10
env:
POSTGRES_HOST: postgres
POSTGRES_USERNAME: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_PORT: ${{ job.services.postgres.ports[5432] }}
6 changes: 3 additions & 3 deletions config/test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ config :bcrypt_elixir, :log_rounds, 1
# to provide built-in test partitioning in CI environment.
# Run `mix help test` for more information.
config :polar, Polar.Repo,
username: "postgres",
password: "postgres",
hostname: "localhost",
username: System.get_env("POSTGRES_USER") || "postgres",
password: System.get_env("POSTGRES_PASSWORD") || "postgres",
hostname: System.get_env("POSTGRES_HOST") || "localhost",
database: "polar_test#{System.get_env("MIX_TEST_PARTITION")}",
pool: Ecto.Adapters.SQL.Sandbox,
pool_size: System.schedulers_online() * 2
Expand Down

0 comments on commit 165f4c1

Please sign in to comment.