|
| 1 | +# Docker release process and release automation description |
| 2 | + |
| 3 | +This readme covers relase process for versions 8 and above. |
| 4 | + |
| 5 | +In version 8 the docker-library structure has changed. Static Dockerfiles are used instead of templating. Versions live in a different mainline branches and are marked with tags. |
| 6 | + |
| 7 | +The docker release process goal is to create a PR in official-docker library for library/redis file. |
| 8 | + |
| 9 | +library/redis stackbrew file should reflect the tags in redis/docker-library-redis repository. |
| 10 | + |
| 11 | +## Branches and tags |
| 12 | + |
| 13 | +Mainline branches are named `release/Major.Minor` (e.g. `release/8.2`) |
| 14 | + |
| 15 | +Each version release is tagged with `vMajor.Minor.Patch` (e.g. `v8.2.1`) |
| 16 | + |
| 17 | +Milestone releases are tagged with `vMajor.Minor.Patch-Milestone` (e.g. `v8.2.1-m01`). Any suffix after patch version is considered a milestone. |
| 18 | + |
| 19 | +Suffixes starting with `rc` are considered release candidates and are preferred over suffixes starting with `m` which in turn are preferred over any other suffix. |
| 20 | + |
| 21 | +Tags without suffix are considered GA (General Availability) releases (e.g. `v8.2.1`). |
| 22 | + |
| 23 | +Internal releases are milestone releases containing `-int` in their name (e.g. `v8.2.1-m01-int1` or `8.4.0-int3`). They are not released to the public. |
| 24 | + |
| 25 | +Milestone releases never get latest or any other default tags, like `8`, `8.2`, `8.2.1`, `latest`, `bookworm`, etc. |
| 26 | + |
| 27 | +For each mainline only one GA release and optionally any number of milestone releases with higher versions than this GA may be published in official-library. |
| 28 | + |
| 29 | +Each patch version may have only one GA or milestone release, GA release is preferred over milestone release. |
| 30 | + |
| 31 | +For example for this list of tags the following rules will be applied |
| 32 | + |
| 33 | +* `v8.2.3-m01` - included because there is neither GA nor any higher milestone versions for 8.2.3 |
| 34 | +* `v8.2.2-rc2` - included because it higher version among 8.2.2 |
| 35 | +* `v8.2.2-rc1` - excluded because 8.2.2-rc2 is higher version |
| 36 | +* `v8.2.2-m01` - excluded because 8.2.2-rc2 is higher version |
| 37 | +* `v8.2.1-rc2` - excluded because there is 8.2.1 GA version |
| 38 | +* `v8.2.1` - included because it is highest GA for 8.2 |
| 39 | +* `v8.2.0` - exluded because 8.2.1 is higher version |
| 40 | + |
| 41 | +End of life versions are marked with `-eol` suffix (e.g. `v8.0.3-eol`). When there is a at least one minor version tagged with eol all versions in this minor series are considered EOL and are not included in the release file. |
| 42 | + |
| 43 | +## Creating a release manually |
| 44 | + |
| 45 | +This process is automated using github workflows. However, it's useful to understand the manual process. |
| 46 | + |
| 47 | +Determine a mainline branch, e.g `release/8.2` for version `8.2.2`. |
| 48 | + |
| 49 | +Optionally create a release branch from the mainline branch, e.g. `8.2.2`. |
| 50 | + |
| 51 | +Modify dockerfiles. |
| 52 | + |
| 53 | +Test dockerfiles. |
| 54 | + |
| 55 | +If release branch was created, merge it back to mainline branch. |
| 56 | + |
| 57 | +Tag commit with `vMajor.Minor.Patch` (e.g. `v8.2.1`) in the mainline branch. |
| 58 | + |
| 59 | +Push your changes to redis/docker-library-redis repository. |
| 60 | + |
| 61 | +Create a PR to official-library refering the tag and commit you created. |
| 62 | + |
| 63 | + |
| 64 | +# Release automation tool |
| 65 | + |
| 66 | +Release automation tool is used to generate library/redis file for official-library. It uses origin repository as a source of truth and follows the process described above. |
| 67 | + |
| 68 | +## Installation |
| 69 | + |
| 70 | +### From Source |
| 71 | + |
| 72 | +```bash |
| 73 | +cd release-automation |
| 74 | +pip install -e . |
| 75 | +``` |
| 76 | + |
| 77 | +### Development Installation |
| 78 | + |
| 79 | +```bash |
| 80 | +cd release-automation |
| 81 | +pip install -e ".[dev]" |
| 82 | +``` |
| 83 | + |
| 84 | +## Usage |
| 85 | + |
| 86 | +```bash |
| 87 | +release-automation --help |
| 88 | +``` |
0 commit comments