website/.gitlab-ci.yml

127 lines
2.2 KiB
YAML
Raw Normal View History

2022-06-10 16:45:04 +01:00
stages:
- build
- test
static:
image: node:alpine
stage: build
cache:
2022-06-10 16:56:07 +01:00
key: npm-$CI_COMMIT_REF_SLUG
2022-06-10 16:45:04 +01:00
paths:
2022-06-10 16:56:07 +01:00
- "$CI_PROJECT_DIR/.npm-cache"
2022-06-12 19:42:15 +01:00
before_script:
- apk add --no-cache bash
2022-06-10 16:45:04 +01:00
script:
2022-06-10 16:56:07 +01:00
- npm ci --cache .npm-cache --prefer-offline
2022-06-10 16:45:04 +01:00
- npm run build
artifacts:
name: '$CI_JOB_ID-node_modules'
paths:
- ./node_modules
- ./static/build
expire_in: 30 mins
pip:
image: python:3.10
2022-06-10 16:45:04 +01:00
stage: build
2022-06-10 16:56:07 +01:00
variables:
PIP_CACHE_DIR: $CI_PROJECT_DIR/.pip-cache
cache:
key: pip-$CI_COMMIT_REF_SLUG
paths:
- "$CI_PROJECT_DIR/.pip-cache"
2022-06-10 16:45:04 +01:00
script:
- python -m venv env
- source env/bin/activate
- pip install -r requirements/dev.txt
2022-06-10 16:45:04 +01:00
artifacts:
name: 'pip-$CI_JOB_ID'
paths:
- ./env/
expire_in: 30 mins
container:
image: docker:stable
services:
- docker:dind
variables:
DOCKER_BUILDKIT: 1
stage: test
script:
- docker build -t website .
.python_test_template: &python_test_template
image: python:3.10
2022-06-10 16:45:04 +01:00
stage: test
dependencies:
- pip
- static
2022-06-10 16:45:04 +01:00
before_script:
- source env/bin/activate
2022-06-10 16:56:25 +01:00
variables:
SECRET_KEY: super-secret
2022-06-12 19:35:06 +01:00
.node_test_template: &node_test_template
image: node:alpine
stage: test
dependencies:
- static
test_python:
2022-07-28 20:41:30 +01:00
services:
- postgres:13-alpine
variables:
DATABASE_URL: postgres://postgres@postgres/postgres
script:
- ./manage.py collectstatic --noinput --clear
2022-06-10 16:45:04 +01:00
- ./manage.py test
2022-07-28 20:41:30 +01:00
<<: *python_test_template
django_checks:
<<: *python_test_template
script:
- ./manage.py check
- ./manage.py makemigrations --check --noinput
2022-06-12 15:17:28 +01:00
black:
<<: *python_test_template
script:
- black --check .
isort:
<<: *python_test_template
script:
- isort --check .
flake8:
<<: *python_test_template
script:
- flake8
mypy:
2022-06-12 15:17:28 +01:00
<<: *python_test_template
script:
- mypy .
2022-06-12 19:35:06 +01:00
2022-08-03 20:22:02 +01:00
curlylint:
<<: *python_test_template
script:
- curlylint .
2022-08-03 20:37:34 +01:00
djhtml:
<<: *python_test_template
script:
- git ls-files '*.html' | xargs djhtml --check --tabwidth 2
2022-08-03 20:55:09 +01:00
npm_lint:
2022-06-12 19:35:06 +01:00
<<: *node_test_template
script:
- npm run lint
pip_tools:
<<: *python_test_template
script:
- ./scripts/compile-requirements.sh
- git diff
- git diff-index --quiet HEAD --