2020-10-22 15:19:55 +00:00
|
|
|
# Release Estimator
|
|
|
|
This tool monitors the HAProxy stable branches and calculates a proposed
|
|
|
|
release date for the next minor release based on the bug fixes that are in
|
|
|
|
the queue.
|
|
|
|
|
|
|
|
|
|
|
|
## Requirements
|
|
|
|
- Python 3.x
|
|
|
|
- [lxml](https://lxml.de/installation.html)
|
2024-08-13 15:21:47 +00:00
|
|
|
- requests
|
|
|
|
- urllib3
|
|
|
|
|
|
|
|
|
|
|
|
## Installation
|
2024-08-26 21:40:15 +00:00
|
|
|
It can be easily installed with venv from python3
|
2024-08-13 15:21:47 +00:00
|
|
|
|
|
|
|
|
|
|
|
$ python3 -m venv ~/.local/venvs/stable-bot/
|
|
|
|
$ source ~/.local/venvs/stable-bot/bin/activate
|
|
|
|
$ pip install -r requirements.txt
|
|
|
|
|
|
|
|
And can be executed with:
|
|
|
|
|
|
|
|
$ ~/.local/venvs/stable-bot/bin/python release-estimator.py
|
2020-10-22 15:19:55 +00:00
|
|
|
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
release-estimator.py [-h] [--print] [--to-email TO_EMAIL]
|
|
|
|
[--from-email FROM_EMAIL] [--send-mail]
|
|
|
|
|
|
|
|
optional arguments:
|
|
|
|
-h, --help show this help message and exit
|
|
|
|
--print Print email only
|
|
|
|
--to-email TO_EMAIL Send email to <email>
|
|
|
|
--from-email FROM_EMAIL
|
|
|
|
Send email from <email>
|
|
|
|
--send-mail Send email
|
|
|
|
|
|
|
|
|
|
|
|
## Examples
|
|
|
|
|
|
|
|
|
|
|
|
### Print only:
|
|
|
|
./release-estimator.py --print
|
|
|
|
|
|
|
|
|
|
|
|
### Send email:
|
|
|
|
./release-estimator.py --send-mail --from-email from@domain.local --to-email to@domain.local
|
|
|
|
|
|
|
|
|
|
|
|
## How it works
|
|
|
|
For each version we check the age and apply the following logic:
|
|
|
|
- Skip the release if it's:
|
|
|
|
- older than MAX_VERSION_AGE
|
|
|
|
- older than MAX_VERSION_AGE_NONLTS days and an odd numbered release
|
|
|
|
(1.9,2.1,2.3)
|
|
|
|
|
|
|
|
- For all other valid releases we will then collect the number of bug fixes
|
|
|
|
in queue for each of the defined severity levels:
|
|
|
|
- BUG
|
|
|
|
- BUILD
|
|
|
|
- MINOR
|
|
|
|
- MEDIUM
|
|
|
|
- MAJOR
|
|
|
|
- CRITICAL
|
|
|
|
|
|
|
|
We'll then begin calculating the proposed release date based on the last
|
|
|
|
release date plus the first commit date of the first bug fix for the defined
|
|
|
|
severity level.
|
|
|
|
|
|
|
|
By default the proposed release dates use the following padding:
|
|
|
|
(Can be modified in THRESHOLDS)
|
|
|
|
- BUG/BUILD/MINOR - 28 days
|
|
|
|
- MEDIUM - 30 days
|
|
|
|
- MAJOR - 14 days
|
|
|
|
- CRITICAL - 2 days
|
|
|
|
|
|
|
|
After we have a proposed release date we will assign a release urgency
|
|
|
|
to it. As we get closer to the proposed release date the urgency level changes.
|
|
|
|
By default the urgency levels and their times are:
|
|
|
|
- WARNING - proposed date is 7 days or less
|
|
|
|
- NOTICE - proposed date is 21 days or less
|
|
|
|
- INFO - proposed date is longer than the above
|