Skip to content

Add ci workflow

Add ci workflow #1

Workflow file for this run

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 cargo erlang-dialyzer
- name: Retrieve Cached Dependencies
uses: actions/cache@v4
id: mix-cache
with:
path: |
deps
_build
priv/plts
key: ${{ runner.os }}-opsmaru-site-${{ hashFiles('mix.lock') }}
- name: Install Dependencies
if: steps.mix-cache.outputs.cache-hit != 'true'
run: |
export ERL_FLAGS="+S 4:4"
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 cargo 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 }}-opsmaru-site-${{ 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
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 cargo 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 }}-opsmaru-site-${{ hashFiles('mix.lock') }}
- name: Run Tests
run: mix test --trace --slowest 10