Add Forgejo CI: ruff lint + pytest unit + gated image publish #1

Merged
bvandeusen merged 1 commits from dev into main 2026-06-26 10:56:43 -04:00
Owner

Stands up family-consistent CI on bvandeusen/StashHandler, mirroring the NhenArchiver Python sibling (minus the integration lane — StashHandler is SQLite-only with no service containers).

What's in here

  • .forgejo/workflows/ci.yml — three lanes on push to dev/main and on v* tags:
    • lintruff check . (no dep install, fast-fail).
    • unitpytest tests/ (uv→pip install of requirements.txt + pytest + blake3).
    • publishneeds: [lint, unit]. Builds + pushes git.fabledsword.com/bvandeusen/stashhandler with the family rule-46 tag scheme: dev:dev+:c-<sha>, main:latest+:c-<sha>, v*:<version>+:latest. Auth via REGISTRY_TOKEN (rule 7).
  • tests/ — starter unit suite: hashing (sha256/blake3), SQLite dedup, media-extension filter, transfer modes (copy/hardlink/move).
  • pyproject.toml — ruff target + pytest pythonpath/testpaths.
  • ci-requirements.md (rule 39), .dockerignore.

Verification

CI run #1526 on the dev head — all three lanes green, image pushed (:dev + :c-3121749).

🤖 Generated with Claude Code

Stands up family-consistent CI on `bvandeusen/StashHandler`, mirroring the NhenArchiver Python sibling (minus the integration lane — StashHandler is SQLite-only with no service containers). ## What's in here - **`.forgejo/workflows/ci.yml`** — three lanes on push to `dev`/`main` and on `v*` tags: - `lint` — `ruff check .` (no dep install, fast-fail). - `unit` — `pytest tests/` (uv→pip install of `requirements.txt` + pytest + blake3). - `publish` — `needs: [lint, unit]`. Builds + pushes `git.fabledsword.com/bvandeusen/stashhandler` with the family **rule-46 tag scheme**: `dev`→`:dev`+`:c-<sha>`, `main`→`:latest`+`:c-<sha>`, `v*`→`:<version>`+`:latest`. Auth via `REGISTRY_TOKEN` (rule 7). - **`tests/`** — starter unit suite: hashing (sha256/blake3), SQLite dedup, media-extension filter, transfer modes (copy/hardlink/move). - **`pyproject.toml`** — ruff target + pytest `pythonpath`/`testpaths`. - **`ci-requirements.md`** (rule 39), **`.dockerignore`**. ## Verification CI run #1526 on the `dev` head — all three lanes green, image pushed (`:dev` + `:c-3121749`). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
bvandeusen added 1 commit 2026-06-26 10:45:57 -04:00
Add Forgejo CI: ruff lint + pytest unit + gated image publish
CI / lint (push) Successful in 3s
CI / unit (push) Successful in 4s
CI / publish (push) Successful in 13s
31217498ce
Family-consistent CI for StashHandler (mirrors the NhenArchiver Python
sibling, minus the integration lane — StashHandler is SQLite-only with no
service containers).

- .forgejo/workflows/ci.yml: lint (ruff) -> unit (pytest) -> publish.
  publish builds + pushes git.fabledsword.com/bvandeusen/stashhandler with
  the family rule-46 tag scheme (dev->:dev+:c-<sha>, main->:latest+:c-<sha>,
  v* tag->:<version>+:latest). Gated on lint+unit. Needs REGISTRY_TOKEN.
- tests/: starter unit suite — hashing, SQLite dedup, media filter, transfer
  modes.
- pyproject.toml: ruff target + pytest pythonpath/testpaths.
- ci-requirements.md (family rule 39), .dockerignore.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016nyYC9dTQ78SqhpNFtpMvT
bvandeusen merged commit 20ee8cc9c1 into main 2026-06-26 10:56:43 -04:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: bvandeusen/StashHandler#1