SkateSpots/distribution/README.md

97 lines
3.8 KiB
Markdown

# Distribution without GitHub
SkateSpots is published from a self-hosted **Forgejo** instance. No GitHub
account is required.
## Current release source
- Forge: <https://git.skate-spots.org/skatespots/SkateSpots>
- Latest release: <https://git.skate-spots.org/skatespots/SkateSpots/releases/latest>
- Signed APK (1.7.61):
<https://git.skate-spots.org/skatespots/SkateSpots/releases/download/v1.7.61/SkateSpots-1.7.61.apk>
- SHA-256:
`db0279f759efd9fa05d9d1bed57a3f5856777e6ccb208d3ed78b15398f266fba`
The APK is signed with the same key as the Zapstore build. Installing an
F-Droid-signed build over it would require uninstalling SkateSpots and losing
the local key/settings. Obtanium and direct APK updates keep the install.
## Obtanium
Obtanium cannot use a Zapstore URL as a source. Use the self-hosted Forgejo
release page instead:
1. Open Obtanium → **Add App**.
2. Paste:
`https://git.skate-spots.org/skatespots/SkateSpots/releases/latest`
3. If Obtanium does not recognise the self-hosted host, select **Override
Source → HTML**.
4. Set version extraction if desired:
`SkateSpots-([0-9.]+)\.apk`, match group `1`.
The release page contains exactly one `.apk`, so Obtanium can follow the latest
release without a custom store listing.
## F-Droid family
### Self-hosted F-Droid repo (live now)
A signed third-party F-Droid repository is published here:
- Repo: <https://fdroid.skate-spots.org/repo>
- App ID: `org.skatespots.app`
- Repo signing fingerprint:
`88:B1:71:1C:24:02:89:FB:B2:A7:FC:C1:B3:1F:BB:9D:60:F5:7F:19:18:E0:3D:62:2D:35:F2:3D:E1:84:46:75`
Users can add this URL in F-Droid, or add it in Obtanium as an **F-Droid Third
Party Repo**. This is not F-Droid main: it is a self-hosted, signed repository
of the developer-signed APK. It keeps the existing install and signing key.
The repository metadata and APK are served from the relay host. The repo index
is signed with a repository key stored on that host; the APK itself keeps the
SkateSpots developer signature.
### No external store identities
**Owner decision:** distribution stays self-hosted and Nostr-based. No GitLab,
Codeberg, GitHub, email or F-Droid-main accounts are created or requested.
F-Droid main and IzzyOnDroid both require external identities and review, so
they are intentionally out of scope. The self-hosted repo above is the supported
F-Droid-family channel.
`distribution/fdroiddata/` and `fastlane/` are kept as an unused technical
reference only. A fresh local clone at `5ebf741` built the unsigned APK through
the recipe's `npm ci → android:init → android:sync → assembleRelease` path, but
the recipe must not be submitted.
## Release checklist
1. `npm test`
2. `scripts/release.sh patch --yes --deploy` (Zapstore + web)
3. Push the release tag and `main` to Forgejo.
4. Upload the APK through the helper:
`FORGEJO_TOKEN=... scripts/publish-forgejo.sh <version>`
(or set `FORGEJO_TOKEN` before `release.sh`; the APK upload is then automatic)
5. Copy the signed APK into the F-Droid repo on the relay host, add a
`metadata/org.skatespots.app.yml` changelog entry, run `fdroid update`, and
sync `repo/` to `/var/www/fdroid/repo/`:
```bash
cd /home/ubuntu/fdroid
cp /path/to/SkateSpots-<version>.apk repo/
. /home/ubuntu/fdroid-venv/bin/activate
fdroid update
sudo rsync -a --delete repo/ /var/www/fdroid/repo/
sudo chown -R caddy:caddy /var/www/fdroid
```
6. Verify the public latest-release page contains the new `.apk`, and that
`https://fdroid.skate-spots.org/repo/index-v2.json` lists the new
`versionCode`.
7. Update the static download page if the displayed version/checksum changes:
`public/download/index.html`.
The Forgejo instance runs on the same host as the relay. It exposes public
read access and HTTPS through Caddy; registration is disabled and administrative
credentials are kept on the host, not in this repository.