Datenbankverwaltung für das Archiv für populäre Musik im Ruhrgebiet e.V.
Links:
Das Installations-Skript richtet die Docker Container und das Management Programm mizdb ein. Außerdem fragt es bei der
Installation, ob die Datenbank aus einem Backup wiederhergestellt werden soll.
Note
Docker und Docker Compose müssen installiert sein.
bash -c "$(curl -sSL https://raw.githubusercontent.com/Actionb/MIZDB/master/scripts/install-mizdb.sh)"Nach dem Ausführen des Skripts sollte MIZDB unter http://localhost/miz/ verfügbar sein.
Siehe auch:
Für die Verwaltung der Anwendung steht das Programm mizdb.sh im MIZDB Verzeichnis zur Verfügung:
cd MIZDB_VERZEICHNIS && bash mizdb.sh helpWurde MIZDB mithilfe des Installations-Skripts erstellt, so steht für den Benutzer der Befehl mizdb zu Verfügung:
mizdb helpDieser kann anstelle von bash mizdb.sh verwendet werden (also z.B. mizdb reload anstelle
von bash mizdb.sh reload).
Weitere Informationen mit einer Auflistung der verfügbaren Befehle gibt es in der Dokumentation:
- PostgreSQL
- für Debian/Ubuntu
- für Fedora
- Apache2 mit Dev Headern (benötigt von mod_wsgi)
- libpq-dev (benötigt von psycopg2)
- Git
- npm
Zum Beispiel für Debian:
sudo apt update && sudo apt install python3-pip python3-venv postgresql apache2-dev libpq-dev git nodejs npm# Datenbankbenutzer erstellen:
sudo -u postgres createuser mizdb_user -P --createdb
# Datenbank erzeugen:
sudo -u postgres createdb mizdb --owner=mizdb_userNote
Es wird empfohlen, für den Datenbankbenutzer das Passwort "mizdb" zu benutzen. Dies ist das Passwort, welches standardmäßig von den Docker Containern und den Django Settings für MIZDB benutzt wird.
# Repository klonen:
git clone https://github.com/Actionb/MIZDB MIZDB
cd MIZDB
# Virtuelle Umgebung erstellen:
python3 -m venv .venv
echo 'export "DJANGO_DEVELOPMENT=1"' >> .venv/bin/activate
. .venv/bin/activate
# Projekt Abhängigkeiten und Git Hooks installieren:
pip install -r requirements/dev.txt
npm install
pre-commit installAnschließend entweder die Migrationen ausführen:
python3 manage.py migrateoder ein Backup einlesen:
pg_restore --user=mizdb_user --host=localhost --dbname mizdb < backup_dateiMit Poe The Poet können nützliche, vordefinierte Scripts ausgeführt werden.
Installieren mit pipx (oder siehe andere Methoden):
pipx install poethepoetAnschließend können einzelne Scripts so ausgeführt werden:
poe testDie folgenden Scripts sind in pyproject.toml
definiert (siehe Poe Docs - Defining tasks):
| Script Name | Beschreibung |
|---|---|
| server | Development Server starten |
| shell | Django Shell starten |
| test | Pytest Tests ausführen (mit Coverage) |
| test-q | Pytest Tests ausführen (ohne Coverage, schneller) |
| test-pw | Playwright Tests ausführen |
| drop-testdb | Alle Test-Datenbanken löschen |
| tox | Python tox ausführen |
| ruff | ruff Linter und Formatter ausführen und Probleme beheben |
| ruff-check | ruff check . ausführen |
| serve-docs | Den mkdocs Entwicklungsserver starten |
| build-docs | Dokumentation bauen und bei Github hochladen |
| docker-restart | MIZDB Docker Container neustarten |
| build | Docker Image bauen |
| publish | Docker Image bauen und hochladen |
| restore-db | Lokale Development Datenbank wiederherstellen |
Wenn man Docker im Project Root ausführen möchte, muss man die Pfade für docker-compose.yaml und docker-compose.env
angeben, da sich diese Dateien in dem Unterordner docker befinden, wo Docker sie nicht sucht.
Dazu sei es empfohlen, in der activate Datei der virtuellen Umgebung die Umgebungsvariablen COMPOSE_FILE und
COMPOSE_ENV_FILES zu setzen:
export COMPOSE_FILE=./docker/docker-compose.yaml
export COMPOSE_ENV_FILES=./docker/docker-compose.envAlternativ können bei jedem Docker Befehl die Pfade als Argumente übergeben werden:
docker compose -f ./docker/docker-compose.yaml --env-file=./docker/docker-compose.env upUm den Test-/Development Server zu starten:
docker compose -f docker-compose.test-server.yaml up --build -dDer Server ist dann unter http://host_name:8090 (lokal: http://127.0.0.1:8090) erreichbar.
Mit coverage und ohne Playwright Tests:
pytest -n auto -m "not e2e" --cov=. --cov-report html --cov-branch testsDie Playwright Browser müssen installiert sein:
playwright installDann Playwright Tests auszuführen:
pytest -n auto --browser firefox tests/test_site/test_playwrightTeste MIZDB mit verschiedenen Python-Versionen und den Produktions-Settings:
toxBenutze
npm run sass-buildoder
npm run sass-watchUm die CSS Dateien zu erstellen.
Links:
Um die Hilfe Seiten der MIZDB "site" app zu erzeugen, benutze:
mkdocs build -f mkdocs-offline.ymlEin post build hook
erzeugt aus den mkdocs html Dateien Django Templates und legt sie unter dbentry/site/templates/help ab.
Hilfe Seiten mit dem Materials Theme erzeugen und bei Github Pages hochladen:
mkdocs gh-deploy -f mkdocs-online.yml-
Git-Flow
releasebranch erzeugen:git flow release start '1.0.1'(siehe hier für mehr Informationen)
-
Versionsdatei aktualisieren.
Dazu können Git-Flow Hooks verwendet werden: https://github.com/jaspernbrouwer/git-flow-hooks. Der folgende Befehl installiert die notwendigen Hooks im lokalen git Verzeichnis:./scripts/git-flow-hooks.sh
Siehe auch: Git-Flow Hooks with smartgit
Alternativ steht ein Skript zur Verfügung, um die Versionsdatei zu aktualisieren:
./scripts/bump_version.py {major,minor,patch} -
releasebranch beenden:git flow release finish '1.0.1'
Note
Wird git-flow-hooks benutzt, um die Versionsdatei zu aktualisieren, muss bei dem Befehl git flow release start keine
Version angegeben werden; git-flow-hooks ermittelt die neue Version aus der Versionsdatei.