14-Aug-2024 – 26-Sep-2024 — leaving Heroku: Docker builds and Fly.io

build 17 — commit 13cbf75


The major deliverable

This six-week stretch was about one thing: being able to run every NGX-Ramblers group site without Heroku.

The new capability is a Docker image built by GitHub Actions. Each change is packaged once, tagged with the GitHub build number, and pushed so it can be started anywhere. That replaced Heroku's own build-and-release process, which we could no longer rely on. From 26 September 2024 a release is named by that build number; this note is build 17 (commit 13cbf75). GitHub no longer keeps the original Actions run.

The image then runs on Fly.io. A site starts in a few hundred milliseconds when someone visits, and can sit idle the rest of the time. There is no need to ping it to keep it awake. On Fly's pay as you go plan, usage under the monthly allowance is discounted to nothing, which is how a typical group site stays free to host. The same image can be rolled out to staging and then to every configured group, instead of each site being a separate Heroku app with its own build.

Docker image built in GitHub Actions, then started on Fly.io — the path that replaced Heroku.

Other changes over the period

The rest of the period was smaller, visitor-facing work that happened alongside that move.

Meetup changed how apps sign in, so Meetup posting was rebuilt to match their current login. Settings now live under Admin → System Settings → External systems, with a button to view the OAuth clients. Groups that publish walks to Meetup needed this to keep posting.

Walk pages now show accessibility information, and the Additional details field from Walks Manager appears below the main walk information when a group uses it. Some walk icons that had stopped drawing were fixed.

Additional details shown beneath the main walk information, as on this Stag Walkers walk.

Accessibility information on a walk details page.

Member Admin no longer locked up when editing a member. Bulk load no longer reset existing members' mailing-list subscriptions (only new members get the defaults). Committee and testing lists can be hidden from the member email subscriptions page so people cannot join them themselves. The bulk-delete control sits on the left of the member table so it stays in view when there are many lists.

At a glance