top of page

From Git Tag to Live Server: Our Release Pipeline

Writer: Marcel Dütscher
Marcel Dütscher
Jul 7
2 min read

Updated: Jul 10

A release of Blocks Beyond The Stars today consists of a single command: pushing a git tag. Everything after that is done by the machine. In this article I'll show our CI/CD pipeline — and why the effort pays off even for a hobby project.


The release workflow. As soon as a tag like v0.7.4 is pushed, GitHub Actions builds the complete package: Windows installers (setup, portable, MSI), a Linux build, a WebGL build for the browser, and a Docker image for the server — six artifacts from one tag. The version number comes from the tag itself; there is only one source of truth.


The deploy workflow. A second workflow brings new versions onto the server. What mattered to us was a production gate: the deploy only starts once it has been explicitly approved. No accidental "oops, that was production". The server itself pins the game version in a configuration file — every newly waking world then automatically starts with the new version, while running worlds are left uninterrupted.


A lesson we had to learn: Fixes in the game client only reach the players with a real release. Our client updates itself via Velopack — anyone who has installed the game only gets updates when we publish a new version. A merged bugfix on the main branch helps nobody as long as no tag follows. Sounds obvious, but more than once we wondered why a "fixed" bug was still there.


And the browser? The WebGL build is dropped onto the server as a ZIP and activated via a directory swap — the old directory stays around as a fallback. A small version.txt reveals what's currently live.


The whole apparatus cost a few weekends — and pays for itself all over again with every release.

Recent Posts

See All

Comments


Commenting on this post isn't available anymore. Contact the site owner for more info.
bottom of page