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

1.9 KiB

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):
    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 scripts/release/bump-and-tag.sh 0.0.1 "Phase 0 — Orientation & Quality Bar"
  1. Create archives (source only by default; pass --with-build later in Phase 1+):
bash scripts/release/build-archive.sh
# or with a production build attempt:
# bash scripts/release/build-archive.sh --with-build
  1. Before pushing: format and checks
npm run format:fix
npm run typecheck
npm run lint:full
npm run test:run
  1. Create/Update Gitea release and upload zips for the current version only:
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.