Marcel Bruckner

#release#ci#docker#self-hosting

How freundebuch releases reach this feed

Until today freundebuch had no releases: every merge to main updated the :main image, and if you ran it you got whatever was newest. Now there are versioned releases, and each one shows up here on its own. The first, 0.1.0, is the note just below this one.

What happens on a release

I push a tag such as v0.2.0. GitHub Actions runs the same pipeline as on main: lint, typecheck, the unit tests, the Playwright tests and a smoke test that starts the container and waits for it to report healthy, while it builds the image for amd64 and arm64. Only when all of that passes:

  1. The image gets its version: ghcr.io/marceltov/freundebuch:0.2.0, :0.2 and :latest. A pre-release like v0.2.0-rc.1 only gets its own tag, so latest never points at one.
  2. A GitHub release is made, with GitHub’s generated list of the pull requests merged since the previous tag and a docker pull line.
  3. The same notes are posted here, tagged release and with the version, plus a link to the GitHub release.
flowchart LR
  T[tag v0.2.0] --> C[tests and smoke test]
  T --> B[image build, amd64 + arm64]
  C --> I[image tags 0.2.0, 0.2, latest]
  B --> I
  I --> R[GitHub release]
  R --> N[note on this feed]

For 0.1.0 the whole run took about 11 minutes from the tag to the note. A re-run doesn’t post twice: it first asks notefeed whether a note with that version tag is already there.

Pinning a version

To upgrade only when you choose, pin a version in your compose.yaml:

services:
  freundebuch:
    image: ghcr.io/marceltov/freundebuch:0.1

:main stays as it is, for everyone who wants every merge.

Good to know

The first release has no earlier tag to count from, so its notes list every pull request since the start (26 of them). From 0.2.0 on, each release lists only what’s new. The notes are PR titles, which are written for me more than for you; I’ll post a note in my own words alongside the bigger releases, like the two earlier ones on this feed.

The workflow is in .github/workflows/ci.yml. This feed has RSS at https://notefeed.me/r/freundebuch/feed.xml. If something about the release notes doesn’t work for you, tell me.

← All posts

This post also lives on notefeed ↗