Backend Python Flask Quickstarter (be-python-flask)
The project supports generation of Python Flask project boilerplate and quick installation and integration of it with OpenShift CD pipelines.
The quickstarter is simmple WEB-server written on Python using Flask framework. The package allows easily build a Python project, using different Python modules and frameworks. It contains the basic setup for Docker, Jenkins, SonarQube and OpenShift.
├── Jenkinsfile - This file contains Jenkins build configuration settings ├── README.md ├── docker - This folder contains Docker configuration settings │ ├── Dockerfile │ └── run.sh - This bash script solves issue with permissions for a container user ├── src │ ├── main.py - This file is the main entry point in the project. │ └── requirements.txt - This file contains a list of required Python modules to run application ├── tests │ ├── __init__.py │ ├── main_test.py - Unit testing src/main.py │ ├── pytest.ini - pytest configuration file │ └── requirements.txt - required Python modules for the Test Suite and IDE integration ├── .coveragerc - Coverage configuration file ├── metadata.yml - Component metadata ├── mypy.ini - mypy configuration file ├── release-manager.yml - Configuration file for the Release Manager └── sonar-project.properties - This file contains SonarQube configuration settings
The project is production ready when deployed in OpenShift thanks to gunicorn.
It is recommended when you are developing a Python project to use separated environments. For this purpose usually one can use virtualenv package.
# Command install virtualenv package (run only once) pip install virtualenv # Creates virtual environment 'mylocaldevelopment' (will be located in the folder mylocaldevelopment) (run only once) virtualenv mylocaldevelopment # Initiate virtual environment for the project (every time) source mylocaldevelopment/bin/activate # Runs installation of required modules in the virtual environment (run only once) pip install -r src/requirements.txt # Start your application python src/main.py
The Jenkinsfile is provisioned with this quick starter to ease CI/CD process. In Jenkinsfile, there are various stages:
Prepare Test Suite - Prepares the virtual environment for testing and linting:
pip install -r tests/requirements.txt
Lint - Runs mypy and flake8 for increasing code quality:
mypy src flake8 --max-line-length=120 src
Test - Runs pytest and generates xUnit and code coverage reports:
cd src/ python -m pytest --junitxml=tests.xml --cov-report term-missing --cov-report xml --cov=. ../tests/
Build - Builds the application: copies src folder into docker/dist folder.
This quickstarter uses Python builder agent Jenkins builder agent.