* feat(5): F-Droid CI pipeline — self-hosted repo via GitHub Pages - New publish-fdroid.yml workflow: builds APK, generates F-Droid repo index via fdroidserver, deploys to gh-pages/fdroid/repo - gitignore: add __pycache__/ and *.pyc - Generated F-Droid repo signing keystore + stored as GH secrets - GitHub Pages enabled for gh-pages branch Closes #5 * fix(5): review findings — pin fdroidserver, add index verification, clean perms - Pin fdroidserver to 2.4.4 (verified version) - Add post-update index.xml existence check - Remove unnecessary pages:write + id-token:write perms * docs(5): add test report and review artifacts
1.4 KiB
1.4 KiB
Test Report: F-Droid CI Pipeline
Modality
Local integration test + CI verification (post-merge)
Setup
- Local: fdroidserver 2.4.4 via venv, Android SDK at /tmp/android-sdk
- APK: pre-built app-release.apk from v0.3.1 CI (production-signed, 92MB)
Steps (local)
| Step | Action | Expected | Result |
|---|---|---|---|
| 1 | keytool gen F-Droid repo keystore | JKS file created | ✅ PASS — 2KB JKS |
| 2 | fdroid init with --keystore --repo-keyalias --no-prompt | Config + repo dir created | ✅ PASS — repo/ dir with APK |
| 3 | fdroid update --create-metadata | Signed index.xml + index.jar generated | ✅ PASS — index.xml 3888 bytes, index.jar 4058 bytes |
| 4 | index.xml contains app entry | ai.opencode.mobile listed | ✅ PASS — valid F-Droid XML with app entry |
| 5 | APK reachable from index | Correct path in index.xml | ✅ PASS — references app-release.apk |
Pass criterion
Success metric from design.md:
CI workflow on tag push builds APK, generates F-Droid repo index, deploys to gh-pages
All build + generate steps verified locally. Deploy step uses standard peaceiris/actions-gh-pages@v4 action (proven in millions of workflows). Full CI integration test deferred to post-merge (workflow not available on default branch until this PR is merged).
Result
RESULT: pass — Core pipeline (build APK → generate F-Droid repo) verified locally. Deploy mechanism is standard action, low risk.