cse2000-software-project/.gitlab-ci.yml
2024-06-21 23:14:32 +02:00

147 lines
2.6 KiB
YAML

# include:
# - remote: 'https://gitlab.com/yesolutions/gitlab-ci-templates/raw/main/templates/pre-commit-autofix.yaml'
stages:
- build
- typecheck
- lint
- test
# App
.pre_pnpm: &pre_pnpm
- cd app
- corepack enable
- corepack prepare pnpm@latest-9 --activate
- pnpm config set store-dir .pnpm-store
- pnpm set verify-store-integrity false
build:app:
stage: build
image: 'node:22.1.0-slim'
variables:
PUBLIC_KERNEL_ORIGIN: "http://kernel:8000"
rules:
- changes:
- app/**/*
script:
- *pre_pnpm
- pnpm install
cache:
key:
files:
- app/pnpm-lock.yaml
paths:
- app/.pnpm-store
typecheck:app:
stage: typecheck
image: 'node:22.1.0-slim'
variables:
PUBLIC_KERNEL_ORIGIN: "http://kernel:8000"
rules:
- changes:
- app/**/*
script:
- *pre_pnpm
- pnpm install --prefer-offline
- pnpm check
cache:
key:
files:
- app/pnpm-lock.yaml
paths:
- app/.pnpm-store
lint:app:
stage: lint
image: 'node:22.1.0-slim'
variables:
PUBLIC_KERNEL_ORIGIN: "http://kernel:8000"
rules:
- changes:
- app/**/*
script:
- *pre_pnpm
- pnpm install --prefer-offline
- pnpm lint
cache:
key:
files:
- app/pnpm-lock.yaml
paths:
- app/.pnpm-store
test:app:
stage: test
image: 'node:22.1.0-slim'
variables:
PUBLIC_KERNEL_ORIGIN: "http://kernel:8000"
rules:
- changes:
- app/**/*
script:
- *pre_pnpm
- pnpm install --prefer-offline
- pnpm test:unit --coverage
cache:
key:
files:
- app/pnpm-lock.yaml
paths:
- app/.pnpm-store
# Kernel
.pre_poetry: &pre_poetry
- cd kernel
- pip install poetry
- poetry config virtualenvs.in-project true
build:kernel:
stage: build
image: python:3.12
rules:
- changes:
- kernel/**/*
script:
- *pre_poetry
- poetry install
cache:
paths:
- /kernel/.venv
lint:kernel:
stage: lint
image: python:3.12
rules:
- changes:
- kernel/**/*
script:
- *pre_poetry
- poetry install
- pip install ruff
- ruff check
cache:
paths:
- /kernel/.venv
test:kernel:
stage: test
image: python:3.12
rules:
- changes:
- kernel/**/*
script:
- *pre_poetry
- apt update
- apt install ffmpeg -y
- poetry install --with=dev
- poetry run coverage run -m pytest
- poetry run coverage report -m
- poetry run coverage xml
coverage: '/TOTAL.*\s+(\d+%)$/'
allow_failure: false
cache:
paths:
- /kernel/.venv