Skip to content

Add automatic versioned releases - #111

Merged
tdecroyere merged 11 commits into
mainfrom
feature/release-pipeline
Sep 2, 2026
Merged

Add automatic versioned releases#111
tdecroyere merged 11 commits into
mainfrom
feature/release-pipeline

Conversation

@tdecroyere

@tdecroyere tdecroyere commented Aug 29, 2026

Copy link
Copy Markdown
Member

Add the first Elemental automatic release pipeline while reusing the existing build/test/package mechanics.

Versioning

  • add version.cmake as the semantic version/stage source (1.0.0, dev)
  • resolve prerelease build numbers from the highest existing numeric release tag, so the normalized historical dev.1dev.5 sequence naturally continues at dev.6
  • keep the build counter monotonic across dev, alpha, beta, and rc
  • fail if the resolved tag already exists instead of moving/reusing release identity
  • require .github/release-notes/<version>.md before a stable release can proceed

Build / CI topology

  • keep Build CI as the required pull-request build/test workflow
  • stop running that same matrix separately on pushes to main
  • add an optional build_number input to the existing reusable build.yml
  • inject the resolved version into the existing public header inside each ephemeral build checkout before configure/build/install
  • preserve the current cmake --install staging and archive layout
  • validate release-version resolution and prerelease-note generation on pull requests without publishing

Releases

  • add a serialized Release workflow for pushes to main
  • run the existing build/test matrix once and reuse its artifacts for release publication
  • publish Elemental, ElementalTools, and sample binary archives as durable GitHub Release assets; test archives remain CI-only
  • create v<version> on the exact main SHA
  • mark dev / alpha / beta / rc releases as prereleases

Release notes

  • adapt the WoW Stream Overlay PR-body/direct-commit release-note generator to Elemental and beta
  • same-stage prereleases describe changes since the previous release
  • stage transitions summarize the broader release cycle since the latest stable tag
  • stable releases use the versioned editorial file from .github/release-notes/<version>.md

Validation

  • Build CI #480: Windows x64, macOS arm64, Linux x64 build/install/package/tests all passed after the cross-platform version-injection fix
  • Build CI #482 on current head: all build/test jobs passed
  • validate-release resolves the next version as 1.0.0-dev.6 and generates the prerelease notes preview successfully
  • CI caught and fixed a Windows CRLF issue in the header rewrite and a PowerShell-native-command issue in the release-tag existence probe

Sample asset versioning remains intentionally out of scope. This PR only makes the already-built binary/sample packages durable release assets.

Do not merge without Thomas's explicit approval.

@tdecroyere
tdecroyere merged commit fdf1a35 into main Sep 2, 2026
8 checks passed
@tdecroyere
tdecroyere deleted the feature/release-pipeline branch September 2, 2026 20:01
@github-project-automation github-project-automation Bot moved this from Todo to Done in Elemental Sep 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant