This project provides a REST API for the generation of optimal release plans based on the EVOLVE model of release plan. To try out the API, a comprehensive documentation is available at http://docs.planrweb.apiary.io/#
The project has been developed with and tested against python:2.7 on a UNIX-Like operating system. In order to run the project locally, you'd need to ensure that you have installed this version of python on a suitable *nix OS distribution.
Upon cloning this repository, the project can be set up by following the setup instructions below.
All commands should be executed from the terminal after you have navigated to the root directory of the project
-
If you do not already have
pipinstalled, install the latest stable version by following the instructions athttps://pip.pypa.io/en/stable/installing/for your OS distribution. -
Using
pip, install thevirtualenvpackage by running the following command$ pip install virtualenv
-
Next, make a new virtual environment within the project's root directory by running the following command
$ virtualenv env
-
Activate the virtual environment
$ source env/bin/activate -
Install the
pythondependencies for the project$ pip install -r requirements.txt
-
Now, serve the application by running the following command
$ python run.py
At this point your terminal output should look similar to the following
$ python run.py
* Running on http://0.0.0.0:8080/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger pin code: 139-725-617Now, the application should be accessible at http://0.0.0.0:8080/ and if you visit http://0.0.0.0:8080/release_plans from your web browser or HTTP client of choice, then you should get the following response:
{
application: "release_planner_service"
}
The app directory contains the Flask application module with a release_planner Blueprint as one of it's submodules.
JSON schema specifications for requests and responses can be found in the spec/ directory, while unit and functional tests reside in the tests/ directory.
The project file structure is shown below.
├── app
│ ├── __init__.py
│ └── release_planner
│ ├── algorithms
│ │ ├── evolve.py
│ │ ├── __init__.py
│ ├── controllers.py
│ ├── __init__.py
│ ├── planner.py
│ └── validator.py
├── build.sh
├── config.py
├── Dockerfile
├── env
├── main.py
├── nginx.conf.sample
├── README.md
├── requirements.txt
├── run.py
├── run_tests.sh
├── spec
│ ├── release_planning_request_specification.json
│ ├── release_planning_response_specification.json
│ └── samples
│ ├── release_planning_request.json
│ └── release_planning_response.json
└── tests