Continuous Delivery, Android #73

Closed
opened 2026-05-14 18:17:11 +00:00 by guettli · 2 comments
guettli commented 2026-05-14 18:17:11 +00:00 (Migrated from codeberg.org)

Static website (Hugo) should list the history of deployments.

We push daily, the list can get long. Maybe use structure yyyy/mm/dd.

Apk name should be sharedinbox-mua-ShortGitHash.apk

About terminology: don't call that a release. I guess later there will be monthly releases.

After deploy to Android was successful, scp APK to a file on the server (same env vars like rsync).

The per day page should list all deployments per day.

Per deployment, provide link to download APK, and link to related GH commit.

And show the commit title.

Maybe a better term then "deployment" makes sense.

To avoid recursion. This part should not be tracked in git. This part gets generated: it looks into the existing files on the server. Parses the git hash to get the git commit title.

First create a plan, ask questions, then set label state/question.


Labels:

  • State/InProgress — Set this when you start working on an issue
  • State/Question — Set this when you hit a blocker or need clarification
Static website (Hugo) should list the history of deployments. We push daily, the list can get long. Maybe use structure yyyy/mm/dd. Apk name should be sharedinbox-mua-ShortGitHash.apk About terminology: don't call that a release. I guess later there will be monthly releases. After deploy to Android was successful, scp APK to a file on the server (same env vars like rsync). The per day page should list all deployments per day. Per deployment, provide link to download APK, and link to related GH commit. And show the commit title. Maybe a better term then "deployment" makes sense. To avoid recursion. This part should not be tracked in git. This part gets generated: it looks into the existing files on the server. Parses the git hash to get the git commit title. First create a plan, ask questions, then set label state/question. --- Labels: - **State/InProgress** — Set this when you start working on an issue - **State/Question** — Set this when you hit a blocker or need clarification
guettlibot commented 2026-05-14 18:54:56 +00:00 (Migrated from codeberg.org)

Plan

Proposed implementation:

  1. Rename APK: After building, rename app-release.apksharedinbox-mua-$(git rev-parse --short HEAD).apk

  2. SCP to server: After Play Store deploy succeeds, scp the renamed APK to the server. Use SSH_USER and SSH_HOST (same vars as rsync). Directory structure: public_html/downloads/YYYY/MM/DD/

  3. Generate build history pages: A script (runs in CI after deploy):

    • SSHs into server, lists all APK files under public_html/downloads/
    • Parses git hash from each filename
    • Fetches commit title from Codeberg API for each hash
    • Generates Hugo markdown content files in website/content/builds/ (not tracked in git — add to .gitignore)
    • Builds Hugo with the generated content, deploys via rsync
  4. Hugo page structure: /builds/2026/05/14/ lists all builds for that day.


Questions

  1. Terminology: "build" instead of "deployment"? (e.g., page title: "Daily Builds", URL: /builds/)

  2. APK path on server: Should it go to public_html/downloads/YYYY/MM/DD/? That means the download URL would be https://sharedinbox.de/downloads/2026/05/14/sharedinbox-mua-abc1234.apk

  3. New SSH env var: For the scp destination path, suggest reusing SSH_HOST + SSH_USER from rsync, but a new var for the downloads directory (e.g., SSH_DOWNLOADS_PATH=public_html/downloads). OK?

  4. Generator runs where?: Should the history generator run on CI (reads server via SSH, generates locally, deploys), or on the server as a cron job? CI approach is simpler to implement.

  5. Commit URL format: Link to https://codeberg.org/guettli/sharedinbox/commit/HASH?

## Plan **Proposed implementation:** 1. **Rename APK**: After building, rename `app-release.apk` → `sharedinbox-mua-$(git rev-parse --short HEAD).apk` 2. **SCP to server**: After Play Store deploy succeeds, scp the renamed APK to the server. Use `SSH_USER` and `SSH_HOST` (same vars as rsync). Directory structure: `public_html/downloads/YYYY/MM/DD/` 3. **Generate build history pages**: A script (runs in CI after deploy): - SSHs into server, lists all APK files under `public_html/downloads/` - Parses git hash from each filename - Fetches commit title from Codeberg API for each hash - Generates Hugo markdown content files in `website/content/builds/` (not tracked in git — add to `.gitignore`) - Builds Hugo with the generated content, deploys via rsync 4. **Hugo page structure**: `/builds/2026/05/14/` lists all builds for that day. --- ## Questions 1. **Terminology**: "build" instead of "deployment"? (e.g., page title: "Daily Builds", URL: `/builds/`) 2. **APK path on server**: Should it go to `public_html/downloads/YYYY/MM/DD/`? That means the download URL would be `https://sharedinbox.de/downloads/2026/05/14/sharedinbox-mua-abc1234.apk` 3. **New SSH env var**: For the scp destination path, suggest reusing `SSH_HOST` + `SSH_USER` from rsync, but a new var for the downloads directory (e.g., `SSH_DOWNLOADS_PATH=public_html/downloads`). OK? 4. **Generator runs where?**: Should the history generator run on CI (reads server via SSH, generates locally, deploys), or on the server as a cron job? CI approach is simpler to implement. 5. **Commit URL format**: Link to `https://codeberg.org/guettli/sharedinbox/commit/HASH`?
guettli commented 2026-05-14 19:27:02 +00:00 (Migrated from codeberg.org)

Q1, use term build.

Q2, use public_html/builds/YYYY/MM/DD

Q3, hard coded path is fine for now.

Q4, CI

Q5, yes

Q1, use term build. Q2, use public_html/builds/YYYY/MM/DD Q3, hard coded path is fine for now. Q4, CI Q5, yes
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: guettli/sharedinbox#73