Επώνυμο | Όνομα | Αριθμός Μητρώου |
---|---|---|
Μαρμάνης | Ιάσων | 03114088 |
Μουζάκης | Ανάργυρος-Γεώργιος | 03114103 |
Μουζάκης | Νικόλαος | 03114008 |
Ξενάκης | Φώτιος | 03114104 |
Ξεφτέρης | Μιχάλης | 03114006 |
cd backend/
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
source venv/bin/activate
Μετά από αλλαγή στο σχήμα της βάσης:
flask db migrate -m "Added foobar table" : δημιουργεί το script που θα αλλάξει τη βάση
flask db upgrade : upgrade τη βάση στο πιο πρόσφατο σχήμα
Για geospatial db με υποστήριξη ORM (geoalchemy) χρειαζόμαστε PostgreSQL με το PostGIS extension.
docker volume create pg_data
docker run --name postgis -e POSTGRES_PASSWORD=root -e POSTGRES_USER=root -e POSTGRES_DB=restapi -v pg_data:/var/lib/postgresql/data -p 5432:5432 -d mdillon/postgis
Σε κάθε επόμενη έναρξη :
docker start postgis
Tα βασικά στο config.py.
Στο instance/config.py (μένει εκτός git) βάζει ο καθένας τα δικά του, θα κάνουν override το config.py.
Πχ το instance/config.py για postgreSQL:
import os
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or 'postgresql+psycopg2://root:root@localhost:5432/restapi'
SQLALCHEMY_ECHO = True
.flaskenv : FLASK_APP, PORT etc
.env : μένει εκτός git, κάνει override το .flaskenv
Πχ αν δεν θέλω debug mode : FLASK_DEBUG=False στο .env
flask run
Για δοκιμή των HTTP methods υπάρχει το Postman
Στο secret/ πρέπει να υπάρχουν τα αρχεία {cert, key}.pem για το self-signed certificate και το private key. Δημιουργία πχ με:
openssl req -x509 -newkey rsa:4096 -nodes -out cert.pem -keyout key.pem -days 365
POST {baseURL}/register
Δημιουργία νέου χρήστη με ρόλο Εθελοντή. Το username πρέπει να μην ανήκει σε κανέναν υπάρχοντα χρήστη. Δεν γίνεται αυτόματα σύνδεση του νέου χρήστη. Υποστηριζόμενες παράμετροι ακριβώς όπως και για το login (στο request body):
Όνομα | Περιγραφή |
---|---|
username | String. Υποχρεωτικό. Το username του νέου χρήστη. |
password | String. Υποχρεωτικό. Το password του νέου χρήστη. |
Χρησιμοποιούμε το Jenkins τοπικά.
Απαραίτητα τα:
[Jenkins Dashboard] -> [New Item] -> Pipeline
-> [Pipeline] -> [Definition] -> Pipeline script from SCM
-> [SCM] -> Git
-> [Repositories] -> [Repository URL] -> file:///absolute/path/to/local/repo
-> [Branches to build] -> / για να παρακολουθεί όλα τα branches
Το Jenkinsfile
φροντίζει για τα υπόλοιπα. Παρακολουθεί το (τοπικό) repo και κάνει integration εντός 1' από κάθε νέο commit.