Skip to content

Versioning ​

Azure Local Ranger uses Semantic Versioning — MAJOR.MINOR.PATCH.


What Each Part Means ​

SegmentMeaningExample trigger
MAJORBreaking changes — public command removed or renamed, manifest schema key renamed or removed, required config file changes, PowerShell version requirement raised1.0.0 → 2.0.0
MINORNew backward-compatible features — new collector, new output format, new public command, new optional config key1.0.0 → 1.1.0
PATCHBackward-compatible bug fixes — collector crash fix, report rendering correction, schema validation fix1.0.0 → 1.0.1

Ranger-Specific Rules ​

  • Adding a new discovery domain or collector is always a MINOR bump.
  • Adding a new key to audit-manifest.json that is optional and defaults to null is MINOR.
  • Removing or renaming a key in audit-manifest.json in a way that breaks existing manifests is MAJOR.
  • Changing a ranger-config.yml key in a way that requires user action is MAJOR.
  • Adding a new optional config key is MINOR.
  • A docs-only or test-only change that ships no module code change gets a PATCH if it triggers a release at all; most land as changelog entries with no version bump.

Pre-Release Versions ​

Versions below 1.0.0 (e.g., 0.5.0) are pre-release and not published to the PowerShell Gallery. Strict SemVer rules apply after 1.0.0 ships. Before that, MINOR bumps may include breaking changes.


Release Automation ​

Version bumps are automated by release-please, which reads Conventional Commits on main and opens a PR that:

  • bumps ModuleVersion in AzureLocalRanger.psd1
  • updates CHANGELOG.md with categorized entries

Merging that PR creates a GitHub Release and tags the commit.

Commit Prefix → Version Bump Table ​

PrefixWhat it signalsVersion effect
feat:New featureMINOR bump
fix:Bug fixPATCH bump
feat!: or BREAKING CHANGE: footerBreaking changeMAJOR bump
docs:Documentation onlyNo bump (CHANGELOG entry)
refactor:Code restructure, no behavior changeNo bump
test:Test additions or fixesNo bump
chore:Build, config, depsNo bump
ci:Workflow or pipelineNo bump

Example Commit Messages ​

text
feat: add cost analysis collector with AHB tracking
fix: null check in Get-RangerSafeName prevents SVG crash
docs: add drift detection guide to operator docs
feat!: rename domains.network to domains.networking in manifest schema

Milestones and Version Alignment ​

Each GitHub milestone maps to one planned release. An issue assigned to a milestone is committed for that release — it must be closed (or explicitly deferred) before the milestone closes and the version ships.

MilestoneTarget versionSprint focus
v1.1.0 — Post-Release Sprint1.1.0Closed: auth hardening, BMC fallback, and milestone-close live validation
v1.2.0 — UX & Transport1.2.0Closed: Arc Run Command transport, disconnected discovery, Spectre TUI, interactive wizard
v1.4.0 — Report Quality1.4.0HTML report rebuild, diagram engine quality, PDF output
v2.0.0 — Extended Platform Coverage2.0.0Switches, firewalls, OEM hardware, multi-rack, cost analysis, PowerPoint

When to Create a New Milestone ​

Create a new milestone when:

  • The existing next milestone is already well-scoped and you do not want to inflate it.
  • A new feature cluster is clear enough that it needs its own ship target.
  • The next intermediate version (e.g., 1.2.0) has enough issues to warrant tracking.

Use the naming pattern vX.Y.Z — Short Title with a one-line sprint description.


How to Check the Current Version ​

powershell
# From source — read psd1 directly
(Select-String -Path .\AzureLocalRanger.psd1 -Pattern "ModuleVersion").Line

# After import
(Get-Module AzureLocalRanger).Version

Keeping Issues and Versions in Sync ​

  • Every enhancement or bug fix should be tracked as an issue before implementation begins.
  • Issues are assigned to the milestone for the version they target.
  • Do not merge implementation PRs without a milestone-assigned issue. Commit messages reference #issue-number to keep history traceable.

Released under the MIT License.