|
| 1 | +# OpenEBS Mayastor Release Process |
| 2 | + |
| 3 | +This document describes the comprehensive steps for releasing a new version of OpenEBS Mayastor. It is intended for contributors and maintainers to ensure consistency, reproducibility, and transparency in the release process. |
| 4 | + |
| 5 | +## Overview |
| 6 | + |
| 7 | +The release process encompasses the following stages for both major, minor or patch releases: |
| 8 | +- Pre-release preparations |
| 9 | +- Tag creation |
| 10 | +- Build and testing |
| 11 | +- Release creation and publication |
| 12 | + |
| 13 | +## 1. Pre-Release Preparations |
| 14 | + |
| 15 | +Before beginning the release, ensure the following prerequisites are met: |
| 16 | +- **Release Branch:** A dedicated release branch is created from the `develop` or already exists (e.g., `release/2.7`). |
| 17 | +- **Regression Testing:** All nightly regression tests and test suites have been executed successfully on the release branch. |
| 18 | + |
| 19 | +## 2. Tag Creation |
| 20 | + |
| 21 | +Creating git tags is the first formal step to marking the code for release. |
| 22 | + |
| 23 | +### Steps: |
| 24 | + |
| 25 | +- **Tag Relevant Repositories:** |
| 26 | + - Create git tags on all relevant repositories (e.g., mayastor, control-plane, and mayastor-extensions). |
| 27 | + - This action triggers various GitHub Actions (GAs) automatically, such as generating release artifacts on the mayastor-extensions repository. |
| 28 | + |
| 29 | +## 3. Build and Testing |
| 30 | + |
| 31 | +After tagging, the next step is to build the release artifacts and validate the new release through testing. |
| 32 | + |
| 33 | +### Build Process: |
| 34 | +1. **Trigger Build Jobs:** |
| 35 | + - Execute the build jobs for the mayastor, control-plane, and mayastor-extensions repositories. |
| 36 | + |
| 37 | +2. **Artifact Generation:** |
| 38 | + - Verify that container images and other artifacts are correctly generated by the build pipelines. |
| 39 | + |
| 40 | +### Testing: |
| 41 | +1. **Basic Installation:** |
| 42 | + - Perform a basic installation using the newly built images to confirm they are functional. |
| 43 | + |
| 44 | +2. **Upgrade Testing:** |
| 45 | + - Validate the upgrade process from the previous release version to ensure backward compatibility. |
| 46 | + |
| 47 | +3. **Smoke Tests:** |
| 48 | + - Run smoke tests to verify that core functionalities operate as expected. |
| 49 | + |
| 50 | +4. **Regression:** |
| 51 | + - Comprehensive testing is done on the tag, if issues or bugs are identified, they are fixed by further releases, ex. patch. |
| 52 | + |
| 53 | +## 4. Release Creation and Publication |
| 54 | + |
| 55 | +Once the builds and tests have passed, create the final release. |
| 56 | + |
| 57 | +### Steps: |
| 58 | +1. **Create Release from Tag:** |
| 59 | + - Use the generated git tags to create a new release entry for each repository (mayastor, control-plane, and mayastor-extensions). |
| 60 | + |
| 61 | +2. **Update Release Notes:** |
| 62 | + - Prepare comprehensive release notes that detail new features, bug fixes, and any known issues. |
| 63 | + - Ensure that documentation references are current and accurate. |
| 64 | + |
| 65 | +3. **Attach Artifacts:** |
| 66 | + - Confirm that the mayastor kubectl binaries (generated via GitHub Actions on the mayastor-extensions repository) are automatically attached to the release. |
| 67 | + - Verify that all other release artifacts are present. |
| 68 | + |
| 69 | +4. **Final Review:** |
| 70 | + - Double-check all links, documentation, and artifact references. |
| 71 | + - Validate that the release notes complete and accurate. |
| 72 | + |
| 73 | +5. **Publish the Release:** |
| 74 | + - Once all verifications are complete, publish the release. |
0 commit comments