Skip to content

Versioning

Azure Local Ranger uses Semantic VersioningMAJOR.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.