Make EvaP pip-installable and publish to PyPI #3696
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: EvaP Test Suite | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
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 | |
mypy: | |
runs-on: ubuntu-22.04 | |
name: MyPy | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/setup_evap | |
- name: Run MyPy | |
run: mypy | |
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 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
path: main | |
- uses: ./main/.github/setup_evap | |
with: | |
shell: "" | |
start-db: true | |
working-directory: main | |
- name: Build wheel | |
run: nix run .#build-dist | |
working-directory: main | |
- uses: actions/checkout@v4 | |
with: | |
repository: e-valuation/evap-deployment | |
ref: work # todo: remove | |
path: deployment | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Install wheel | |
run: pip install main/dist/*.whl | |
- name: GitHub actions has wrong file ownership here, the checkout actions has a problem here (see their 1049) | |
run: | | |
git config --global --add safe.directory '*' | |
sudo -H -u root git config --global --add safe.directory '*' | |
- name: Load test data | |
run: | | |
ln -s ../main/data/ | |
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 | |
working-directory: deployment | |
env: | |
DJANGO_SETTINGS_MODULE: deployment_settings | |
- name: Backup database | |
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 | |
working-directory: deployment | |
- name: Reload backup | |
run: echo "yy" | ./load_production_backup.sh backup.json | |
env: | |
EVAP_SKIP_APACHE_STEPS: true | |
DJANGO_SETTINGS_MODULE: deployment_settings | |
working-directory: deployment | |
compile_scss: | |
runs-on: ubuntu-22.04 | |
name: Compile Scss | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: ./.github/setup_evap | |
with: | |
npm-ci: true | |
- name: Compile Scss | |
run: npx sass evap/static/scss/evap.scss evap/static/css/evap.css | |
- name: Store Css | |
uses: actions/upload-artifact@v4 | |
with: | |
name: css | |
path: evap/static/css/evap.css | |
render_pages: | |
runs-on: ubuntu-22.04 | |
name: Render Html pages | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: ./.github/setup_evap | |
with: | |
start-db: true | |
- name: Render pages | |
run: coverage run manage.py ts render_pages | |
- name: Upload coverage | |
uses: codecov/codecov-action@v5 | |
with: | |
flags: render-pages | |
token: ${{ secrets.CODECOV_TOKEN }} | |
- name: Store rendered pages | |
uses: actions/upload-artifact@v4 | |
with: | |
name: rendered-pages | |
path: evap/static/ts/rendered | |
typescript: | |
runs-on: ubuntu-22.04 | |
needs: [ compile_scss, render_pages ] | |
name: Test Typescript | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: true | |
- uses: ./.github/setup_evap | |
with: | |
npm-ci: true | |
- run: npx puppeteer browsers install chrome | |
- name: Compile Typescript | |
run: npx tsc --project evap/static/ts/tsconfig.compile.json | |
- name: Load rendered pages | |
uses: actions/download-artifact@v4 | |
with: | |
name: rendered-pages | |
path: evap/static/ts/rendered | |
- name: Load Css | |
uses: actions/download-artifact@v4 | |
with: | |
name: css | |
path: evap/static/css | |
- name: Run tests | |
run: xvfb-run --auto-servernum npx jest | |
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 |