Bluesky app fork with some witchin' additions 💫 witchsky.app
bluesky fork client
witchsky.app docs release-model.md
1.9 kB · 71 lines
Markdown
at main

Release model #

RELEASE-x.y.z.md holds the release version, build metadata, and cumulative public changelog.

Names #

All names come from one strict x.y.z version:

  • Branch: release-x.y.z
  • Native tag: x.y.z
  • Document: RELEASE-x.y.z.md
  • GitHub Release: Release x.y.z
  • OTA tag: ota-x.y.z-N

Prepared document #

Only releaseVersion is required before builds:

---
releaseVersion: 1.131.1
---

# Release 1.131.1

<!-- public-changelog:start -->

## Initial release

- Added something

<!-- public-changelog:end -->

Finalized document #

Finalization adds the source commit and build numbers read from the native artifacts. All fields are required:

releaseVersion: 1.131.1
sourceTag: 1.131.1
sourceSha: 0123456789abcdef0123456789abcdef01234567
iosBuildNumber: 1662
androidVersionCode: 1110

sourceTag must match releaseVersion. sourceSha must be a full Git object ID. Build numbers must be positive integers. Collecting build results and finalizing the document are not implemented in the preparation workflow yet.

Changelog #

GitHub Release notes come from between the public changelog markers. Each OTA adds a numbered section (OTA 1, OTA 2, etc.) with no gaps in the sequence.

Build inputs #

The iOS, Android, and web workflows accept sourceRef, defaulting to the event's SHA, and expose the checked-out commit as source-sha. Native submission jobs check out that same commit. Web image tags and revision labels use it too.

Native workflows accept submit, defaulting to true. The preparation plan sets it to false. Build and submission recovery is separate work.

Implementation #

  • Preparation workflow and checks
  • scripts/release/model.mjs: document creation, validation, and changelog parsing.
  • scripts/release/cli.mjs: command-line access to the document helpers.