PureYAML/docs/RELEASE.md
2026-11-04 21:14:08 +01:00

86 lines
2.4 KiB
Markdown

# Release Process
PureYAML versioning is driven by Git tags. The current release is 0.2.0.
## 0.2.0 Release
- Swift tools version: 6.1
- Products: `PureYAML`, `PureYAMLJSON`
- SwiftPM dependencies: none
- Source targets: Swift only, no C targets and no generated parser targets
- Hosted CI matrix: macOS build and test, Linux build and test, Windows build
and test, WASM build
- Release notes file: `docs/releases/pureyaml-0-2-0.md`
## Local Verification
Run the full gate from a clean checkout before tagging:
```sh
git status --short --branch
bash scripts/check-all.sh
```
`scripts/check-all.sh` expands to:
```sh
bash scripts/check-style.sh
bash scripts/check-namespacing.sh
bash scripts/check-forbidden-patterns.sh
bash scripts/check-changelog-touched.sh
swiftformat . --config .swiftformat --lint
swiftlint --config .swiftlint.yml --strict
swift build
swift test
bash scripts/check-linux.sh
bash scripts/check-wasm.sh
```
The Linux and Windows checks must exercise build and tests. The WASM check must
build the library target with the configured Swift Wasm SDK.
## Hosted Verification
Push `main` and wait for the CI workflow to pass:
```sh
git push origin main
```
Watch the run at <https://git.aleahim.com/NodetteHQ/PureYAML/actions>. Until the
full platform matrix runs on Codeberg runners, the authoritative platform
gates are the local ones (`scripts/check-all.sh` covers macOS, the Linux
relay, and WASM); Windows verification is deferred and must be disclosed in
the release notes.
## Tag and Publish
Only run these commands after the local gates pass and hosted CI passes.
```sh
git status --short --branch
git tag -a 0.2.0 -m "PureYAML 0.2.0"
git push origin main 0.2.0
tea releases create --login codeberg --repo NodetteHQ/PureYAML \
--tag 0.2.0 --title "PureYAML 0.2.0" \
--note "$(cat docs/releases/pureyaml-0-2-0.md)"
```
After publishing, verify the release exists:
```sh
git ls-remote --tags origin 0.2.0
tea releases list --login codeberg --repo NodetteHQ/PureYAML | head
```
## Do Not Tag If
- `Package.swift` has any external dependency.
- `Sources/` contains C, JavaScript, WebAssembly blobs, or generated parser
runtime files.
- Any Swift source imports Foundation in the library target.
- The changelog does not have a dated section for the version being tagged.
- The release notes omit known deferred issues.
- Any locally runnable platform gate (macOS, Linux relay, WASM) is red, or a
skipped platform is not disclosed in the release notes.