stages: - elixir dependencies - lint - javascript dependencies - test - release variables: MIX_HOME: $CI_PROJECT_DIR/.mix MIX_ENV: test elixir dependencies: image: elixir:latest stage: elixir dependencies cache: key: "$CI_JOB_NAME" paths: - augie/deps - augie/_build - .mix - /root/.cache artifacts: paths: - augie/deps/ - augie/_build/ - augie/.rebar3/ - .mix expire_in: 60 mins before_script: - mix local.hex --force - mix local.rebar --force - cd augie script: - mix deps.get - mix compile javascript dependencies: image: node:latest stage: javascript dependencies dependencies: - elixir dependencies cache: key: "$CI_JOB_NAME" paths: - augie/assets/node_modules - /root/.yarn-cache artifacts: paths: - augie/assets/node_modules expire_in: 60 mins before_script: - cd augie script: - yarn --cwd ./assets install --non-interactive mix hex.audit: image: elixir:latest dependencies: - elixir dependencies stage: lint before_script: - cd augie script: - mix hex.audit mix credo: image: elixir:latest dependencies: - elixir dependencies stage: lint before_script: - cd augie script: - mix credo --strict mix format --check-formatted: image: elixir:latest dependencies: - elixir dependencies stage: lint before_script: - cd augie script: - mix format --check-formatted mix test: image: elixir:latest stage: test dependencies: - elixir dependencies - javascript dependencies before_script: - cd augie script: - mix test release: image: registry.gitlab.com/jimsy/balena-cli-docker stage: release only: - master before_script: - balena login --token $BALENA_API_KEY script: - balena push $BALENA_APP