3.6 KiB
System deployment
Prerequisites
Client
Database
Backend / Flask app
In order to not have complicated and error-prone copying manoevers a direct deployment from the repo is used using git.
File structure
Steps
- Created a ssh-key for the user that does the installation on the server following the Github instructions.
- Deploy generated key to the Github user account.
- In the shell, activate ssh-agent and add the key. For example:
eval ($ssh-agent)
ssh-add ~/.ssh/od_ed25519
- Change to deployment folder
cd /var/www/brecal_test
- Perform sparse checkout on the Flask server subtree
git clone -n git@github.com:puls200/brecal.git <target_folder>
cd <target_folder>
git sparse-checkout set --no-cone src/server
git checkout
- Database credentials are stored outside the web root, we are using /var/www/secure. Here the file
connection_data.jsonis placed, a different named copy for each instance.
Installing Requirements
Python 3.11 & Pip3.11 installation (linux), virtualenv package
Optional, Step 0: Python source installation Windows (untested): Python 3.11: https://www.geeksforgeeks.org/download-and-install-python-3-latest-version/ PIP package manager (in command window): py -m ensurepip --upgrade Virtual Environment 'virtualenv': https://mothergeo-py.readthedocs.io/en/latest/development/how-to/venv-win.html
Linux: Python 3.11 & the PIP package manager: https://tecadmin.net/how-to-install-python-3-11-on-ubuntu-22-04/
Virtual Environment 'virtualenv'
Building the Virtual Environment
Create a virtualenv called '.venv' with a specified python version, such as python3.11 All python packages will be installed in the virtual environment. Upon running the application, make sure to activate the virtual environment before starting it.
Windows: # on windows, provide the full path, as obtained by "where python" 1.) Relocate to the 'brecal' directory cd brecal
2.) create a virtual environment with the name '.venv' where python virtualenv --python {python_path} .venv
3.) activate the virtual environment and install .venv\Scripts\activate cd ./src/server pip install -r requirements.txt
Linux: 1.) Relocate to the 'brecal' directory cd brecal 2.) create a virtual environment with the name '.venv' virtualenv --python python311 .venv 3.) activate the virtual environment and install source .venv/bin/activate cd ./src/server pip install -r requirements.txt
Testing (using 'pytest')
All tests in the directory brecal/src/server/tests can be run automatically with the 'pytest' module It recognizes any function within these scripts, as these use 'test_'-prefixes. The module can be used to run the tests or even to create coverage reports, which show, what portions of the directory are still untested. When the pytest module is installed, one can use a single line of code to run all tests.
1.) Relocate to the application's directory cd brecal/src/server 2.) activate the virtual environment Windows: source .venv\Scripts\activate Linux: source .venv\bin\activate 3.) run the tests option1: run pytest as a standalone pytest tests/
option2: run pytest & coverage report (inspects coverage for the folder 'BreCal' by running each test in 'tests/'
this creates a folder with the name 'coverage_reports', where .html files are created and can be observed by a developer.
the coverage files are typically ignored by .gitignore
pytest --cov BreCal tests/