Skip to content

GLRD Release Schema

The Garden Linux Release Database (GLRD) uses structured JSON schemas to represent different types of releases. The five release types are: major, minor, nightly, dev, and next. Each type has specific required fields that capture version, lifecycle, and build information.

Versioning scheme

Garden Linux introduced semantic versioning starting at major version 2017. GLRD supports both versioning schemes based on the major version number:

  • v1 — versions < 2017.0.0: Use the major.minor format (for example, 27.0, 1592.6).
  • v2 — versions ≥ 2017.0.0: Use the major.minor.patch format (for example, 2017.0.0, 2222.1.5).

The schema variant is selected automatically based on the version.major field value.

Major releases

Major releases are long-term supported releases.

Schema fields

FieldTypeRequiredDescription
namestringyesRelease name, for example major-1312.
type"major"yesRelease type discriminator.
version.majorintegeryesMajor version number, for example 1312.
lifecycle.released.isodatestring (date)yesRelease date in YYYY-MM-DD format.
lifecycle.released.timestampintegeryesUnix timestamp of the release date.
lifecycle.extended.isodatestring (date)yesExtended maintenance start date.
lifecycle.extended.timestampintegeryesUnix timestamp of the extended maintenance date.
lifecycle.eol.isodatestring (date)yesEnd-of-life date.
lifecycle.eol.timestampintegeryesUnix timestamp of the end-of-life date.

Minor releases

Minor releases are patch updates delivered during the standard and extended maintenance periods of a major release.

Schema fields

FieldTypeRequiredDescription
namestringyesRelease name, for example minor-1312.1 (v1) or minor-2017.0.0 (v2).
type"minor"yesRelease type discriminator.
version.majorintegeryesMajor version number.
version.minorintegeryesMinor version number.
version.patchintegerv2 onlyPatch version number. Only present for versions ≥ 2017.0.0.
lifecycle.released.isodatestring (date)yesRelease date.
lifecycle.released.timestampintegeryesUnix timestamp of the release date.
lifecycle.eol.isodatestring (date)yesEnd-of-life date.
lifecycle.eol.timestampintegeryesUnix timestamp of the end-of-life date.
git.commitstringyesFull 40-character SHA-1 git commit hash.
git.commit_shortstringyesShort git commit hash (7–8 characters).
github.releaseURI stringyesURL to the GitHub release page.
flavorsarray of stringsyesList of build flavor identifiers included in the release.
attributes.source_repobooleanyesWhether the release has Debian source repositories available (default: true).

Nightly releases

Nightly releases are automated builds generated every night from the latest state of the codebase.

Schema fields

FieldTypeRequiredDescription
namestringyesRelease name, for example nightly-1312.0 (v1) or nightly-2017.0.0 (v2).
type"nightly"yesRelease type discriminator.
version.majorintegeryesMajor version number.
version.minorintegeryesMinor version number.
version.patchintegerv2 onlyPatch version number. Only present for versions ≥ 2017.0.0.
lifecycle.released.isodatestring (date)yesBuild date.
lifecycle.released.timestampintegeryesUnix timestamp of the build date.
git.commitstringyesFull 40-character SHA-1 git commit hash.
git.commit_shortstringyesShort git commit hash.
flavorsarray of stringsyesList of build flavor identifiers.
attributes.source_repobooleanyesWhether Debian source repositories are available (default: true).

Development releases

Development releases are used for testing and development purposes. They represent the latest changes that may not yet be included in a major or minor release, and can be created manually by developers.

Schema fields

FieldTypeRequiredDescription
namestringyesRelease name, for example dev-1312.0 (v1) or dev-2017.0.0 (v2).
type"dev"yesRelease type discriminator.
version.majorintegeryesMajor version number.
version.minorintegeryesMinor version number.
version.patchintegerv2 onlyPatch version number. Only present for versions ≥ 2017.0.0.
lifecycle.released.isodatestring (date)yesBuild date.
lifecycle.released.timestampintegeryesUnix timestamp of the build date.
git.commitstringyesFull 40-character SHA-1 git commit hash.
git.commit_shortstringyesShort git commit hash.
flavorsarray of stringsyesList of build flavor identifiers.
attributes.source_repobooleanyesWhether Debian source repositories are available (default: true).

Next release

The next release represents the projected upcoming major release. Only one next entry exists at any time.

Schema fields

FieldTypeRequiredDescription
name"next"yesAlways the literal string next.
type"next"yesRelease type discriminator.
version.major"next"yesAlways the literal string next.
lifecycle.released.isodatestring (date)yesProjected release date.
lifecycle.released.timestampintegeryesUnix timestamp of the projected release date.
lifecycle.extended.isodatestring (date)yesProjected extended maintenance start date.
lifecycle.extended.timestampintegeryesUnix timestamp of the projected extended maintenance date.
lifecycle.eol.isodatestring (date)yesProjected end-of-life date.
lifecycle.eol.timestampintegeryesUnix timestamp of the projected end-of-life date.