Some checks failed
continuous-integration/drone/push Build is failing
- tests/gitea/recipe_meta.py: updated from dep-provider stub to dual-role (dep + recipe-under-test).
Adds BACKUP_CAPABLE=True, READY_PROBE (/api/v1/version), SCREENSHOT (sign-in page), LFS-
conditional EXTRA_ENV (compose.lfs.yml + GITEA_LFS_START_SERVER only when RECIPE=gitea AND
overlay present — dep path unchanged). All existing dep keys preserved; 10/10 dep unit tests pass.
- tests/gitea/ops.py: NEW — admin user creation via gitea CLI (ci_admin, creds in /tmp per-domain
file), marker repo lifecycle (pre_install/pre_upgrade/pre_backup create; pre_restore deletes to
diverge from backup state).
- tests/gitea/test_{install,upgrade,backup,restore}.py: NEW — lifecycle overlays. Install checks
API + admin auth + Playwright sign-in. Upgrade/backup/restore assert marker repo continuity.
- tests/gitea/custom/: NEW — test_health.py (parity: HTTP 200 root), test_git_push.py (parity:
create→clone→push→verify→delete), test_admin_api.py (beyond-parity: user+org+token CRUD),
test_lfs_roundtrip.py (LFS OID round-trip + JWT stability; skips on main, runs on PR #1 head).
- tests/gitea/PARITY.md: NEW — mapping table, source note (recipe-info corpus not upstream repo),
beyond-parity rationale, backup/restore real-tier note, DB choice, dep-split mechanism, LFS skip.
- machine-docs/STATUS-gtea.md: NEW — phase status (building M1).
- machine-docs/BACKLOG-gtea.md: merged with Adversary init.
- machine-docs/JOURNAL-gtea.md: Builder log with design decisions + unit test results.
- machine-docs/REVIEW-gtea.md: kept Adversary init content.
- machine-docs/DECISIONS.md: appended gtea section (LFS split, admin mgmt, marker design).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
71 lines
3.5 KiB
Markdown
71 lines
3.5 KiB
Markdown
# JOURNAL — phase gtea (gitea full-test enrollment)
|
|
|
|
Builder private log. Append-only.
|
|
|
|
---
|
|
|
|
## 2026-06-15 — Phase start + initial suite build
|
|
|
|
### Context read
|
|
|
|
- Phase plan: /srv/cc-ci/cc-ci-plan/plan-phase-gtea-gitea-fulltests.md
|
|
- Reference tests: /srv/cc-ci-orch/references/recipe-maintainer/recipe-info/gitea/tests/
|
|
- health_check.py — checks HTTP 200 from root URL
|
|
- git_push.py — create repo → clone → push → verify via API → delete repo
|
|
- NOTE: These files exist ONLY in the local references directory, NOT in the upstream
|
|
recipe-maintainers/gitea repo (which has no tests/ directory). PARITY.md updated to
|
|
reflect this accurately (references are from recipe-info corpus, not the upstream recipe).
|
|
- gitea recipe on cc-ci: compose.yml (backupbot.backup=true), compose.sqlite3.yml
|
|
- PR #1 (lfs-plain-gitea → main): adds compose.lfs.yml + LFS_JWT_SECRET in app.ini.tmpl
|
|
- Versions in abra release dir: 2.0.0+1.18.0, 2.1.2+1.19.3, 2.6.0+1.21.5, 3.0.0+1.22.2-rootless
|
|
- Adversary notes: latest recipe tag is 3.5.3+1.24.2-rootless; LFS PR bumps to 3.6.0
|
|
|
|
### Design decisions
|
|
|
|
**LFS dep-vs-recipe-under-test split mechanism:**
|
|
- EXTRA_ENV(ctx) checks TWO conditions: (1) compose.lfs.yml exists in $ABRA_DIR/recipes/gitea/,
|
|
AND (2) RECIPE=gitea env var is set. Both conditions required.
|
|
- Condition (1) ensures LFS is never enabled on main (overlay absent).
|
|
- Condition (2) ensures LFS is never enabled when gitea is drone's dep (RECIPE=drone).
|
|
- The dep path is thus byte-for-byte identical whether or not compose.lfs.yml exists.
|
|
- Decision documented in DECISIONS.md (phase gtea).
|
|
|
|
**Admin user management:**
|
|
- gitea has no built-in admin user from abra deploy. Admin is created via `gitea admin user create`.
|
|
- ops.pre_install creates admin user `ci_admin` with a random 32-char hex password.
|
|
- Credentials stored at /tmp/ccci-gitea-admin-{domain}.json (mode 600) for reuse across hook calls.
|
|
- All subsequent pre_* hooks read from this file (ops module re-imported per op).
|
|
|
|
**Marker repo:**
|
|
- Marker = git repo named `ci-marker` owned by `ci_admin`, auto_init=True.
|
|
- pre_upgrade/pre_backup: ensure marker exists (idempotent create)
|
|
- pre_restore: DELETE the marker repo (diverge from backup state)
|
|
- test_upgrade: assert marker survived chaos redeploy
|
|
- test_backup: assert marker exists at backup time
|
|
- test_restore: assert marker returned (restore reverted deletion)
|
|
|
|
### Files written
|
|
|
|
1. tests/gitea/recipe_meta.py — UPDATED (added BACKUP_CAPABLE, READY_PROBE, SCREENSHOT,
|
|
LFS-conditional EXTRA_ENV; header updated to dual-role)
|
|
2. tests/gitea/ops.py — NEW (admin user + marker repo hooks)
|
|
3. tests/gitea/test_install.py — NEW (assert_serving + API + admin auth + Playwright)
|
|
4. tests/gitea/test_upgrade.py — NEW (marker survived upgrade)
|
|
5. tests/gitea/test_backup.py — NEW (marker captured in backup)
|
|
6. tests/gitea/test_restore.py — NEW (marker returned after restore)
|
|
7. tests/gitea/custom/test_health.py — NEW (parity: HTTP 200 from root)
|
|
8. tests/gitea/custom/test_git_push.py — NEW (parity: create→clone→push→verify→delete)
|
|
9. tests/gitea/custom/test_admin_api.py — NEW (beyond-parity: user+org+token CRUD)
|
|
10. tests/gitea/custom/test_lfs_roundtrip.py — NEW (LFS capstone; skips on main)
|
|
11. tests/gitea/PARITY.md — NEW
|
|
|
|
### Unit test results after changes
|
|
|
|
```
|
|
tests/unit/test_gitea_dep.py: 10/10 PASSED
|
|
tests/unit/test_meta.py: 43/43 PASSED
|
|
All unit tests: 269 passed, 1 pre-existing failure (test_warm_reconcile.py - unrelated)
|
|
```
|
|
|
|
### Next: run harness locally (BACKLOG item 2)
|