Compare commits

..

8 Commits

Author SHA1 Message Date
Barcode Betty 135064fc10 Merge pull request 'fix(ci): resolve dev lint + typecheck failures (CAR-1330)' (#48) from betty/car-1330-dev-ci-fix into dev
CI / lint (push) Successful in 7s
CI / typecheck (push) Successful in 18s
CI / test (push) Successful in 22s
CI / build-and-push (push) Successful in 1m6s
2026-06-11 04:17:51 +00:00
Savannah Savings b141377b02 Merge pull request 'fix(api): document dispose_engine lazy import + regression test (CAR-1135)' (#45) from barcode-betty/fix-car-1135-dispose-engine into dev
CI / lint (push) Successful in 4s
CI / typecheck (push) Successful in 19s
CI / test (push) Successful in 23s
CI / build-and-push (push) Successful in 1m30s
2026-06-10 05:13:18 +00:00
Barcode Betty a3a01eefe2 Merge pull request 'fix(ci): simplify Push step to match auth pattern (CAR-1362)' (#53) from betty/car-1362-push-unknown-fix into dev
CI / lint (push) Successful in 4s
CI / typecheck (push) Successful in 18s
CI / test (push) Successful in 24s
CI / build-and-push (push) Successful in 1m45s
2026-06-10 04:10:58 +00:00
Barcode Betty 354e26295c fix(ci): simplify Push step to match auth pattern (CAR-1362)
CI / lint (pull_request) Successful in 5s
CI / typecheck (pull_request) Successful in 20s
CI / test (pull_request) Successful in 22s
CI / build-and-push (pull_request) Has been skipped
The Push Docker image step is failing post-merge of CAR-1362 with
buildx "unknown" error after layers push successfully. The pre-existing
failure was masked by the cache export error.

Simplify the Push step to match the proven-green cartsnitch/auth/ci.yml
pattern: drop `file: ./Dockerfile` (default) and `build-args:`
(APT_CACHE_BUST is only used to bust apt cache in stage 1 of multi-
stage build, not needed for the rebuilt image). Keep `if: github.event_name
== "push"` to skip on pull_request events.

Diff: 4 lines removed from .gitea/workflows/ci.yml Push step.

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-06-10 04:08:53 +00:00
Barcode Betty 30a447674d Merge pull request 'fix(ci): remove GHA cache-from/cache-to (CAR-1357)' (#52) from betty/car-1362-remove-gha-cache-dev into dev
CI / lint (push) Successful in 6s
CI / typecheck (push) Successful in 18s
CI / test (push) Successful in 21s
CI / build-and-push (push) Failing after 1m8s
2026-06-09 18:03:04 +00:00
Barcode Betty 7a7d8f451e fix(ci): remove GHA cache-from/cache-to (CAR-1357)
CI / lint (pull_request) Successful in 9s
CI / typecheck (pull_request) Successful in 18s
CI / test (pull_request) Successful in 23s
CI / build-and-push (pull_request) Has been skipped
The build-and-push job fails post-merge of CAR-1356 REGISTRY_TOKEN fix:
cache-from/cache-to: type=gha backend does not exist on Gitea. Build
succeeds but post-build cache export fails and cascades to skipping the
Push Docker image step. Confirmed in uat run 3444 + dev run 3445.

Per CAR-1362, drop cache-from and cache-to from both Build and Push
Docker image steps. Matches proven-green cartsnitch/auth/ci.yml pattern.

Refs: CAR-1362, CAR-1356, CAR-1330, CAR-1357.

Co-authored-by: Paperclip <noreply@paperclip.ing>
2026-06-09 18:01:21 +00:00
Barcode Betty 79e8baa609 fix(ci): use REGISTRY_TOKEN for build-and-push registry login (CAR-1330)
CI / lint (push) Successful in 4s
CI / typecheck (push) Successful in 17s
CI / test (push) Successful in 25s
CI / build-and-push (push) Failing after 54s
Squashed fix swaps github.token → secrets.REGISTRY_TOKEN at .gitea/workflows/ci.yml:121, matching the proven-green cartsnitch/auth pattern (CAR-1009). Parity fix with uat PR #49 to prevent reintroduction on next dev→uat promotion.

Note: includes 3 absorbed lint/typecheck commits from PR #48 (already merged to dev via #48) to unblock CI on this branch. No app code changes; one-line CI config swap only.

QA: PR #50 approved by @cs_charlie (review id 4616); CI run 3443 lint/typecheck/test all green.
Co-authored-by: Barcode Betty <32+cs_betty@noreply.git.farh.net>
Co-committed-by: Barcode Betty <32+cs_betty@noreply.git.farh.net>
2026-06-09 17:47:11 +00:00
Barcode Betty 8deaf6e599 fix(ci): resolve dev lint + typecheck failures (CAR-1330)
CI / lint (pull_request) Successful in 5s
CI / typecheck (pull_request) Successful in 19s
CI / test (pull_request) Successful in 22s
CI / build-and-push (pull_request) Has been skipped
Three CI-blocking issues on dev branch (also present on uat, fixed in 2b20946):

1. tests/conftest.py — remove extra blank line (ruff format).
2. src/cartsnitch_api/middleware/rate_limit.py — delete duplicate
   _public_limiter/_auth_limiter/_auth_strict_limiter forward-decl block
   (the second occurrence; mypy no-redef).
3. src/cartsnitch_api/cache.py:38 — annotate
   value: str | bytes | None so mypy doesn't widen redis client return
   to Any (no-any-return).

Verified: ruff check . && ruff format --check . && mypy src/cartsnitch_api
all pass.

Sibling of CAR-1330 (which fixes uat directly). Heals dev so future
dev → uat promotions stay green.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-06-09 11:13:44 +00:00
2 changed files with 2 additions and 8 deletions
+1 -7
View File
@@ -118,7 +118,7 @@ jobs:
echo "CalVer tag: $VERSION"
- name: Log in to Gitea Container Registry
run: echo "${{ github.token }}" | docker login git.farh.net -u ${{ github.actor }} --password-stdin
run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login git.farh.net -u ${{ github.actor }} --password-stdin
- name: Extract metadata
id: meta
@@ -140,8 +140,6 @@ jobs:
labels: ${{ steps.meta.outputs.labels }}
build-args: |
APT_CACHE_BUST=${{ github.run_id }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Scan api image for vulnerabilities
uses: anchore/scan-action@v5
@@ -162,13 +160,9 @@ jobs:
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
APT_CACHE_BUST=${{ github.run_id }}
cache-from: type=gha
- name: Create git tag
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
+1 -1
View File
@@ -35,7 +35,7 @@ class CacheClient:
async def get(self, key: str) -> str | None:
if not self._client:
return None
value = await self._client.get(key)
value: str | bytes | None = await self._client.get(key)
if value is None:
return None
if isinstance(value, bytes):