NGS 360 Front-End Web Application
We needed an easy way for everyone to access NGS data and pipelines. This app provides that interface.
This app is deployed via Amazon Elastic BeanStalk as a Python Flask application in Docker.
This application was originally modeled after https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world
Default configuration settings are loaded from config.py, then can be overridden by setting the environment variable, NGS360_SETTINGS, to the full path of a config file. Config files are python files and only values in uppercase are actually stored. This provides a way to maintain multiple app configurations external to the application.
Makefile targets are used to make this easy:
build - Build the Docker image for this app
test - Run unit tests (currently this is done on outside of Docker. This may be a problem due to local host machine settings)
make - Run the app in Docker
NGS360 uses 'A successful Git branching model' for development:
-
master branch is the current production version
-
develop branch is the active development version targetted for production
-
Feature branches are forked from the develop branch
-
Branch names should be Jira ticket ids
We also aim to achieve https://12factor.net
Jenkins handles the CI/CD pipeline.
Deployment to elastic beanstalk is done using the deploy-eb branch, which sets up the elastic beanstalk environment.
When a merge/commit is performed on the develop or master branch, Jenkins runs unit tests, the merges the branch with deploy-eb and deploys to ngsdev or ngsstaging.