|
| 1 | +# LabWired Core Release Process |
| 2 | + |
| 3 | +This document outlines the standardized process for releasing new versions of LabWired Core. Follow this checklist to ensure high-quality, consistent releases. |
| 4 | + |
| 5 | +## 1. Preparation Phase |
| 6 | + |
| 7 | +### git & Codebase |
| 8 | +- [ ] **Checkout `develop`** and ensure it is up-to-date: |
| 9 | + ```bash |
| 10 | + git checkout develop && git pull |
| 11 | + ``` |
| 12 | +- [ ] **Run Regression Tests**: |
| 13 | + ```bash |
| 14 | + cargo test --workspace |
| 15 | + cargo fmt --all -- --check |
| 16 | + cargo clippy --workspace -- -D warnings |
| 17 | + ``` |
| 18 | +- [ ] **Verify Documentation**: |
| 19 | + - Run `mkdocs build` to ensure no broken links or config errors. |
| 20 | + - Check that `cli_reference.md` matches the current CLI help output. |
| 21 | + |
| 22 | +### Versioning |
| 23 | +- [ ] **Determine Version**: Follow [Semantic Versioning](https://semver.org/). |
| 24 | + - `Update`: Backwards-compatible bug fixes. |
| 25 | + - `Minor`: New features (backwards-compatible). |
| 26 | + - `Major`: Breaking changes. |
| 27 | +- [ ] **Bump Version**: |
| 28 | + - Update `version` in `Cargo.toml` (workspace members if necessary). |
| 29 | + - Update `Cargo.lock` by running `cargo check`. |
| 30 | + |
| 31 | +### Changelog |
| 32 | +- [ ] **Update `CHANGELOG.md`**: |
| 33 | + - Rename the `[Unreleased]` section header to the new version and date (e.g., `## [0.12.0] - 2026-02-15`). |
| 34 | + - Create a new empty `## [Unreleased]` section at the top. |
| 35 | + - Ensure all significant changes from `git log` are captured. |
| 36 | + - Group changes by `Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`, `Security`. |
| 37 | + |
| 38 | +## 2. Release Candidate (RC) verification |
| 39 | +- [ ] **Create Release Branch**: |
| 40 | + ```bash |
| 41 | + git checkout -b release/v0.12.0 |
| 42 | + ``` |
| 43 | +- [ ] **Commit Version & Changelog**: |
| 44 | + ```bash |
| 45 | + git add Cargo.toml Cargo.lock CHANGELOG.md |
| 46 | + git commit -m "chore: bump version to 0.12.0" |
| 47 | + ``` |
| 48 | +- [ ] **Push & Open PR**: |
| 49 | + - Push the branch and open a PR to `main`. |
| 50 | + - Ensure CI checks pass (Tests, Lint, Build). |
| 51 | + |
| 52 | +## 3. Publication Phase |
| 53 | + |
| 54 | +### GitHub Release |
| 55 | +- [ ] **Tag the Release**: |
| 56 | + - After the PR is merged to `main`, tag the commit: |
| 57 | + ```bash |
| 58 | + git checkout main && git pull |
| 59 | + git tag -a v0.12.0 -m "Release v0.12.0" |
| 60 | + git push origin v0.12.0 |
| 61 | + ``` |
| 62 | +- [ ] **Draft Release on GitHub**: |
| 63 | + - Go to [Releases > Draft a new release](https://github.com/w1ne/labwired-core/releases/new). |
| 64 | + - **Tag**: Select `v0.12.0`. |
| 65 | + - **Title**: `v0.12.0: <Key Highlight/Theme>` |
| 66 | + - **Description**: Copy contents from `.github/RELEASE_TEMPLATE.md` and fill it in with details from `CHANGELOG.md`. |
| 67 | + |
| 68 | +### Artifacts (Manual Step until CI is fully automated) |
| 69 | +- [ ] **Build Binaries**: |
| 70 | + ```bash |
| 71 | + cargo build --release --bin labwired |
| 72 | + ``` |
| 73 | +- [ ] **Upload Assets**: Attach the binary (and signature if available) to the GitHub Release. |
| 74 | + |
| 75 | +## 4. Post-Release |
| 76 | +- [ ] **Merge Back to Develop**: |
| 77 | + ```bash |
| 78 | + git checkout develop |
| 79 | + git merge main |
| 80 | + git push origin develop |
| 81 | + ``` |
| 82 | +- [ ] **Announce**: Share the release notes on relevant channels (Discord, Twitter, Internal). |
0 commit comments