147 lines
2.6 KiB
YAML
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
|