diff --git a/admin/docs/leapps_version_numbers.md b/admin/docs/leapps_version_numbers.md new file mode 100644 index 00000000..1a2321f0 --- /dev/null +++ b/admin/docs/leapps_version_numbers.md @@ -0,0 +1,51 @@ +# iLEAPP Versioning and Release Guide + +This document outlines the versioning scheme used for iLEAPP and the steps required to update version numbers across the codebase for a new release. + +## Versioning Scheme + +iLEAPP follows a semantic-style versioning system (`Major.Minor.Patch`): + +- **Major (X.0.0)**: Reserved for significant architectural changes or potentially breaking changes to the core framework. +- **Minor (0.X.0)**: The standard release for core updates or new/updated modules. Non-critical or non-breaking bug fixes are typically rolled into the next minor release. +- **Patch (0.0.X)**: Specific releases targeting critical bugs that need to be pushed out immediately between minor releases. + +### Versioning Rules +- **Non-Decimal Sequence**: Version components are not decimals. After version `2.9.0`, the next minor version is `2.10.0`, then `2.11.0`, etc. +- **Development Tags**: Immediately after a build release, the version number is bumped to the next planned release (Minor or Major) with a `-dev.0` suffix (e.g., `2.6.0-dev.0`). This indicates pre-release source code and assists in troubleshooting by distinguishing between official builds and source-run instances. + +--- + +## Files to Update + +When changing the version number, it must be updated in the following four locations to ensure consistency across CLI, GUI, and compiled executables. + +### 1. `scripts/version_info.py` +The primary source of truth for the version string within the application. +- Update the `leapp_version` variable. +- **Example**: `leapp_version = '2.6.0-dev.0'` + +### 2. `scripts/pyinstaller/ileapp-file_version_info.txt` +Metadata for the Windows CLI executable. +- Update `filevers` and `prodvers` tuples. These must be four comma-separated integers. + - **Example**: `filevers=(2, 6, 0, 0), prodvers=(2, 6, 0, 0),` +- Update `StringStruct('FileVersion', '...')` and `StringStruct('ProductVersion', '...')`. + - **Example**: `StringStruct('FileVersion', '2.6.0-dev.0'),` + +### 3. `scripts/pyinstaller/ileappGUI-file_version_info.txt` +Metadata for the Windows GUI executable. +- Follow the same steps as the CLI text file above. + +### 4. `scripts/pyinstaller/ileappGUI_macOS.spec` +Configuration for the macOS application bundle. +- Update the `version` parameter in the `BUNDLE` section at the end of the file. +- **Example**: `version='2.6.0-dev.0'` + +## Summary Checklist +- [ ] Update `scripts/version_info.py` +- [ ] Update `scripts/pyinstaller/ileapp-file_version_info.txt` +- [ ] Update `scripts/pyinstaller/ileappGUI-file_version_info.txt` +- [ ] Update `scripts/pyinstaller/ileappGUI_macOS.spec` + +## Reference Examples +- [PR #1494: Update version number](https://github.com/abrignoni/iLEAPP/pull/1494/changes) diff --git a/scripts/pyinstaller/ileapp-file_version_info.txt b/scripts/pyinstaller/ileapp-file_version_info.txt index c4c1d852..07f3ebb5 100644 --- a/scripts/pyinstaller/ileapp-file_version_info.txt +++ b/scripts/pyinstaller/ileapp-file_version_info.txt @@ -1,7 +1,7 @@ VSVersionInfo( ffi=FixedFileInfo( - filevers=(2, 5, 0, 0), - prodvers=(2, 5, 0, 0), + filevers=(2, 6, 0, 0), + prodvers=(2, 6, 0, 0), mask=0x3f, flags=0x0, OS=0x40004, @@ -16,12 +16,12 @@ VSVersionInfo( '040904b0', [StringStruct('CompanyName', 'Alexis Brignoni'), StringStruct('FileDescription', 'iLEAPP CLI'), - StringStruct('FileVersion', '2.5.0'), + StringStruct('FileVersion', '2.6.0-dev.0'), StringStruct('InternalName', 'iLEAPP'), StringStruct('LegalCopyright', 'Result of a collaborative effort in the DFIR community.'), StringStruct('OriginalFilename', 'ileapp.exe'), StringStruct('ProductName', 'iLEAPP'), - StringStruct('ProductVersion', '2.5.0')]) + StringStruct('ProductVersion', '2.6.0-dev.0')]) ]), VarFileInfo([VarStruct('Translation', [1033, 1200])]) ] diff --git a/scripts/pyinstaller/ileappGUI-file_version_info.txt b/scripts/pyinstaller/ileappGUI-file_version_info.txt index ed43f798..03739a38 100644 --- a/scripts/pyinstaller/ileappGUI-file_version_info.txt +++ b/scripts/pyinstaller/ileappGUI-file_version_info.txt @@ -1,7 +1,7 @@ VSVersionInfo( ffi=FixedFileInfo( - prodvers=(2, 5, 0, 0), - filevers=(2, 5, 0, 0), + prodvers=(2, 6, 0, 0), + filevers=(2, 6, 0, 0), mask=0x3f, flags=0x0, OS=0x40004, @@ -16,12 +16,12 @@ VSVersionInfo( '040904b0', [StringStruct('CompanyName', 'Alexis Brignoni'), StringStruct('FileDescription', 'iLEAPP GUI'), - StringStruct('FileVersion', '2.5.0'), + StringStruct('FileVersion', '2.6.0-dev.0'), StringStruct('InternalName', 'iLEAPP'), StringStruct('LegalCopyright', 'Result of a collaborative effort in the DFIR community.'), StringStruct('OriginalFilename', 'ileappGUI.exe'), StringStruct('ProductName', 'iLEAPP'), - StringStruct('ProductVersion', '2.5.0')]) + StringStruct('ProductVersion', '2.6.0-dev.0')]) ]), VarFileInfo([VarStruct('Translation', [1033, 1200])]) ] diff --git a/scripts/pyinstaller/ileappGUI_macOS.spec b/scripts/pyinstaller/ileappGUI_macOS.spec index 5113cd02..e4d14820 100755 --- a/scripts/pyinstaller/ileappGUI_macOS.spec +++ b/scripts/pyinstaller/ileappGUI_macOS.spec @@ -61,5 +61,5 @@ app = BUNDLE( name='ileappGUI.app', icon='../../assets/icon.icns', bundle_identifier='4n6.brigs.iLEAPP', - version='2.5.0' + version='2.6.0-dev.0' ) diff --git a/scripts/version_info.py b/scripts/version_info.py index c74a7b83..d19a0158 100644 --- a/scripts/version_info.py +++ b/scripts/version_info.py @@ -5,7 +5,7 @@ """ leapp_name = 'iLEAPP' -leapp_version = '2.5.0' +leapp_version = '2.6.0-dev.0' ileapp_contributors = [ ['Alexis Brignoni', 'https://abrignoni.com', '@AlexisBrignoni', 'https://github.com/abrignoni'],