An automated, out-of-the-box solution to predict delivery dates in agile businesses. Useful for Project and Product Managers to forecast and report when a certain feature/project/milestone will be completed - and for Scrum Masters to understand when a team's backlog (or any set of issues determined from a JQL Query) will be done and how the team is progressing.
The forecasts are made via Monte Carlo Simulations to provide a more accurate accounting for risk. Accuracy and determinism of results is ensured by aggregating 1.000.000 simulations per forecast.
Developed at FundingCircle. Inspired by FocusedObjective.
- Python 3.6
- pip
- virtualenv
- virtualenvwrapper
- awsebcli
mkvirtualenv django-dev-env
workon django-dev-env
pip install -r requirements.txt
5.1 Set up OAuth authentication for Jira REST API - recommended for both Jira Cloud and Jira Server
(skip to 5.2 for Basic authentication - works only for Jira Cloud, but configuration is much easier)
5.1.1 Follow Step 1: Configure Jira, but put the created files in same directory as 'jira_oauth_script.py' (overwrite the existing files).
5.1.2 Run the script and follow instructions in the terminal. Remember the contents of 'oauth_token' and 'oauth_token_secret' printed in the terminal.
python forecast/helperMethods/oauth/jira_oauth_script.py
open ~/.virtualenvs/django-dev-env/bin/activate
5.2.2 Edit the environment file with the needed variables (paste them at the end of the file, one per line). If you don't want to fetch data from Jira, just export the Jira Variables as given below. If you've opted for OAuth, edit the jira_oauth_token and jira_oauth_token_secret variables (5.1.2). If you've opted for Basic authentication, edit the jira_email and jira_api_token variables. In both cases, edit the jira_url variable and DON'T edit the variables for the other case. Note that you need the SECRET_KEY variable set up properly (it is used internally by Django):
export SECRET_KEY='<your secret Django key>'
export JIRA_URL='https://<your_jira_domain>.atlassian.net'
export JIRA_EMAIL='<jira_user_email>'
export JIRA_API_TOKEN='<jira_api_token>'
export JIRA_OAUTH_TOKEN='<oauth_token>'
export JIRA_OAUTH_TOKEN_SECRET='<oauth_token_secret>'
deactivate
workon django-dev-env
echo $SECRET_KEY
python manage.py runserver
python manage.py test forecast
coverage run --source='./forecast' --omit='./forecast/helperMethods/oauth/jira_oauth_script.py' manage.py test forecast
coverage report -m
6.1 Follow steps 1-3. The EB CLI init steps you'll have to perform just at the time when you clone the repo:
eb setenv SECRET_KEY=$SECRET_KEY JIRA_API_TOKEN=$JIRA_API_TOKEN JIRA_URL=$JIRA_URL JIRA_EMAIL=$JIRA_EMAIL JIRA_OAUTH_TOKEN=$JIRA_OAUTH_TOKEN JIRA_OAUTH_TOKEN_SECRET=$JIRA_OAUTH_TOKEN_SECRET
You can verify they were set in Elastic Beanstalk by running:
eb printenv
eb deploy
6.4 Access the website manually / from eb cli step 7:
eb open
6.5 Cleanup.
pip freeze > requirements.txt