Improve CI
- Add credo (dev dependencies in Mix config + new job
- Add dyalizer job
- Add cache (for dependencies, build artefacts)
-
Sequentialize jobs to use cache (maybe use
depends:
, should we usestage:
when usingdepends:
?)- dev sequence: dyalizer -> pages
- test sequence: test -> format -> credo
As an example, here's a .gitlab-ci.yml
from another Elixir project:
credo:
image: $CONTAINER_BUILD_IMAGE
stage: static_analysis
cache:
key: "$CI_JOB_NAME"
paths:
- deps
- _build
- .rebar3
variables:
MIX_ENV: test
before_script:
- mix local.hex --force
- mix local.rebar --force
script:
- mix deps.get --only test
- mix credo --strict
test:
image: $CONTAINER_BUILD_IMAGE
services:
- postgres
stage: test
cache:
key: "$CI_JOB_NAME"
paths:
- deps
- _build
- .rebar3
- assets/node_modules
variables:
MIX_ENV: test
before_script:
- mix local.hex --force
- mix local.rebar --force
script:
- mix deps.get --only test
- mix compile
- npm install --prefix ./assets
- mix ecto.setup
- mix test