Files
training-software/.github/workflows/ci.yml
Paperclip CTO bf96b7b018
Some checks failed
CI / lint (push) Successful in 6s
CI / test (push) Failing after 9s
CI / build-container (push) Has been skipped
ci: inline django/db env in test and schema commands
2026-05-18 15:00:17 +02:00

103 lines
3.3 KiB
YAML

name: CI
on:
push:
branches: [main, develop]
pull_request:
branches: [main, develop]
env:
DJANGO_SECRET_KEY: ci-secret-key-not-for-production
DJANGO_SETTINGS_MODULE: config.settings.test
DJANGO_ALLOWED_HOSTS: testserver,localhost
DATABASE_URL: sqlite:////tmp/training_test.sqlite3
REDIS_URL: redis://localhost:6379/0
jobs:
test:
name: Tests (Python ${{ matrix.python-version }})
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.12"]
steps:
- uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: requirements/test.txt
- name: Install dependencies
run: pip install -r requirements/test.txt
- name: Check migrations up to date
run: DJANGO_SETTINGS_MODULE=config.settings.test DATABASE_URL=sqlite:////tmp/training_test.sqlite3 REDIS_URL=redis://localhost:6379/0 python manage.py migrate --check
- name: Run migrations
run: DJANGO_SETTINGS_MODULE=config.settings.test DATABASE_URL=sqlite:////tmp/training_test.sqlite3 REDIS_URL=redis://localhost:6379/0 python manage.py migrate
- name: Run smoke + settings tests
run: DJANGO_SETTINGS_MODULE=config.settings.test DATABASE_URL=sqlite:////tmp/training_test.sqlite3 REDIS_URL=redis://localhost:6379/0 pytest --ds=config.settings.test -m "smoke or settings" -v --tb=short
- name: Run full test suite
run: DJANGO_SETTINGS_MODULE=config.settings.test DATABASE_URL=sqlite:////tmp/training_test.sqlite3 REDIS_URL=redis://localhost:6379/0 pytest --ds=config.settings.test --cov=. --cov-report=xml --cov-report=term-missing -v
- name: Upload coverage
uses: codecov/codecov-action@v4
with:
file: coverage.xml
fail_ci_if_error: false
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip
- name: Install lint tools
run: pip install ruff
- name: Ruff lint check
run: ruff check .
schema:
name: OpenAPI Schema
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.12"
cache: pip
cache-dependency-path: requirements/test.txt
- name: Install dependencies
run: pip install -r requirements/test.txt
- name: Run migrations
run: DJANGO_SETTINGS_MODULE=config.settings.test DATABASE_URL=sqlite:////tmp/training_test.sqlite3 REDIS_URL=redis://localhost:6379/0 python manage.py migrate
- name: Generate OpenAPI schema
run: DJANGO_SETTINGS_MODULE=config.settings.test DATABASE_URL=sqlite:////tmp/training_test.sqlite3 REDIS_URL=redis://localhost:6379/0 python manage.py spectacular --settings=config.settings.test --file openapi.yaml --validate
- name: Upload schema artifact
uses: actions/upload-artifact@v4
with:
name: openapi-schema
path: openapi.yaml