# 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.