Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions admin/docs/leapps_version_numbers.md
Original file line number Diff line number Diff line change
@@ -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)
8 changes: 4 additions & 4 deletions scripts/pyinstaller/ileapp-file_version_info.txt
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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])])
]
Expand Down
8 changes: 4 additions & 4 deletions scripts/pyinstaller/ileappGUI-file_version_info.txt
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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])])
]
Expand Down
2 changes: 1 addition & 1 deletion scripts/pyinstaller/ileappGUI_macOS.spec
Original file line number Diff line number Diff line change
Expand Up @@ -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'
)
2 changes: 1 addition & 1 deletion scripts/version_info.py
Original file line number Diff line number Diff line change
Expand Up @@ -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'],
Expand Down
Loading