Semver Notes

1 min read

Parse and compare semantic version strings. Uses Masterminds/semver v3 — supports v-prefix, pre-release tags, and build metadata.

Reference

NoteSignatureReturns
semverMajorstringstring — major component, "" on invalid
semverMinorstringstring — minor component, "" on invalid
semverPatchstringstring — patch component, "" on invalid
semverValidstringbool
semverComparea, b stringint (-1 when a < b, 0 equal, 1 when a > b)
semverBumpversion, component stringstring — bumped version
semverConstraintversion, constraint stringbool

Examples

# Gate upgrade on version constraint
- path: upgradeReady
  value: "{{ semverConstraint .spec.version \">=1.0.0,<2.0.0\" }}"

# Expose version components in status
- path: majorVersion
  value: "{{ semverMajor .spec.version }}"

- path: minorVersion
  value: "{{ semverMinor .spec.version }}"

# Validate image tag is a semver
- field: spec.version
  value: "{{ semverValid .spec.version }}"
  message: "spec.version must be a valid semver string (e.g. 1.2.3)"
  action: deny

# Auto-bump patch version
version: "{{ semverBump .spec.currentVersion \"patch\" }}"

Constraint syntax

The semverConstraint note accepts Masterminds semver constraint expressions:

ExpressionMeaning
>=1.0.01.0.0 or later
<2.0.0before 2.0.0
>=1.0.0,<2.0.0range (AND)
^1.2.0compatible with 1.2.0 (>=1.2.0, <2.0.0)
~1.2.0patch-level compatible (>=1.2.0, <1.3.0)
1.xany 1.x version