Skip to content

Make EvaP pip-installable and publish to PyPI #3914

Make EvaP pip-installable and publish to PyPI

Make EvaP pip-installable and publish to PyPI #3914

Workflow file for this run

name: EvaP Test Suite
on:
push:
branches:
- main
pull_request:
workflow_dispatch:
jobs:
test:
name: Test + Coverage
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: ./.github/setup_evap
with:
start-db: true
- name: Run tests
run: coverage run manage.py test
- name: Upload coverage
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
test_shuffled:
name: Test (shuffled order)
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: ./.github/setup_evap
with:
start-db: true
- name: Run tests
run: python manage.py test --shuffle
test_testdata:
name: Test if testdata is up to date
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: ./.github/setup_evap
with:
start-db: true
- name: Create new test_data.json
run: |
python manage.py reload_testdata --noinput
python manage.py dump_testdata
- name: Check if test_data.json changed
run: git diff --exit-code
build_wheel:
name: Build wheel
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: DeterminateSystems/nix-installer-action@main
- run: nix run .#build-dist
- run: tar tvf dist/*.tar.gz
- run: unzip -l dist/*.whl
- uses: actions/upload-artifact@v4
with:
name: wheel
path: dist/
install_wheel:
name: Install wheel with system Python
needs: build_wheel
runs-on: ubuntu-22.04
steps:
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- uses: actions/download-artifact@v4
with:
name: wheel
- run: pip install *.whl
- name: Check that "evaluation" section appears in help string
run: python -m evap --help | grep --fixed-strings "[evaluation]"
test_frontend:
name: Test Frontend
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/setup_evap
with:
shell: .#evap-frontend-dev
start-db: true
- name: Compile assets
run: |
python manage.py ts compile
python manage.py scss
- name: Run tests (shuffled)
run: coverage run manage.py test --shuffle --tag selenium
- name: Upload coverage
uses: codecov/codecov-action@v5
with:
flags: frontend-tests
token: ${{ secrets.CODECOV_TOKEN }}
mypy:
runs-on: ubuntu-22.04
name: MyPy
steps:
- uses: actions/checkout@v4
- uses: ./.github/setup_evap
- name: Run MyPy
run: mypy
typescript:
runs-on: ubuntu-22.04
name: Test Typescript
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/setup_evap
with:
npm-ci: true
- name: Run tests
run: python manage.py ts test
linter:
runs-on: ubuntu-22.04
name: Linter
steps:
- uses: actions/checkout@v4
- uses: ./.github/setup_evap
with:
npm-ci: 'true'
- name: Run ruff
run: ruff check .
- name: Run pylint
run: pylint evap tools
- name: Run ESLint
run: |
cd evap/static/ts
npx eslint
formatter:
runs-on: ubuntu-22.04
name: Formatting
steps:
- uses: actions/checkout@v4
- uses: ./.github/setup_evap
with:
npm-ci: true
- name: Check code formatting
run: black --check .
- name: Check imports formatting
run: isort . --check --diff
- run: ls -laR evap/static/ts
- name: Check TypeScript formatting
run: npx prettier --list-different --log-level debug 'evap/static/ts/**/*.ts'
backup-process:
runs-on: ubuntu-22.04
name: Backup process
needs: build_wheel
steps:
- uses: actions/checkout@v4
with:
path: main
- uses: actions/checkout@v4
with:
repository: e-valuation/evap-deployment
ref: work # todo: remove
path: deployment
- uses: DeterminateSystems/nix-installer-action@main
- name: Start database
working-directory: deployment
run: nix run ../main#services -- --detached
- uses: actions/setup-python@v5
with:
python-version: '3.10'
- uses: actions/download-artifact@v4
with:
name: wheel
- name: Install wheel
run: |
WHEEL=$(echo *.whl)
pip install $WHEEL[psycopg-binary]
- name: Load test data
working-directory: deployment
run: |
cat <(echo 'from evap.settings import *') ../main/evap/settings_test.py | tee deployment_settings.py
python -m evap migrate
python -m evap loaddata test_data
env:
DJANGO_SETTINGS_MODULE: deployment_settings
- name: Backup database
working-directory: deployment
run: ./update_production.sh backup.json
env:
EVAP_OVERRIDE_BACKUP_FILENAME: true
EVAP_SKIP_UPDATE: true
EVAP_SKIP_APACHE_STEPS: true
DJANGO_SETTINGS_MODULE: deployment_settings
- name: Reload backup
working-directory: deployment
run: echo "yy" | ./load_production_backup.sh backup.json
env:
EVAP_SKIP_APACHE_STEPS: true
DJANGO_SETTINGS_MODULE: deployment_settings
macos-nix-build:
runs-on: macos-14
name: Build nix environment on MacOS
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: ./.github/setup_evap
with:
start-db: true