Files
q-blog/docs/RELEASE_FLOW.md
greenflame089 0b100af686 Release v0.2.2
2025-08-22 07:28:42 -04:00

66 lines
1.9 KiB
Markdown

# Release Flow (Gitea + local scripts)
This repo uses local scripts to cut releases and create uploads in Gitea. CI stays marketplace-free and works with your self-hosted runner.
## One-time
- Ensure env vars are exported in your shell (or place them in `.gitea.env` and `source` it):
```bash
export GITEA_BASE_URL=https://gitea.qortal.link
export GITEA_TOKEN=... # personal access token with repo scope
export OWNER=greenflame089
export REPO=q-blog
```
## Phase wrap example (Phase 0 → v0.0.1)
1. Bump & tag:
```bash
bash scripts/release/bump-and-tag.sh 0.0.1 "Phase 0 — Orientation & Quality Bar"
```
2. Create archives (source only by default; pass `--with-build` later in Phase 1+):
```bash
bash scripts/release/build-archive.sh
# or with a production build attempt:
# bash scripts/release/build-archive.sh --with-build
```
3. Before pushing: format and checks
```bash
npm run format:fix
npm run typecheck
npm run lint:full
npm run test:run
```
4. Create/Update Gitea release and upload zips for the current version only:
```bash
bash scripts/release/create-gitea-release.sh 0.0.1 \
--title "Phase 0 — v0.0.1" \
--notes docs/RELEASE_NOTES_v0.0.1.md \
--branch update
```
The script will:
- create the release if missing (or patch it if it exists),
- upload only `release/*-v0.0.1-*.zip` artifacts by default (current version),
- print the Release URL on success.
### Notes
- We intentionally **skip a TypeScript build by default** in Phase 0 to avoid coupling to app code. Use `--with-build` after the Phase 1 correctness sweeps.
- Artifacts are placed in `release/`:
- `*-src.zip` is always created.
- `*-dist.zip` is created if `dist/` exists (when `--with-build` is used).
### Tips
- To override which files are uploaded (e.g., re-upload a specific dist), pass `--assets 'release/*-v0.2.0-dist.zip'`.
- If you have older zips in `release/`, the default upload pattern avoids attaching them.