* 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
28 lines
1.4 KiB
Markdown
28 lines
1.4 KiB
Markdown
## 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.
|