factoriotools / factorio-docker

Factorio headless server in a Docker container
https://hub.docker.com/r/factoriotools/factorio/
MIT License
888 stars 218 forks source link

Add versioned "stable" tag. i.e. "stable-<major>.<minor>.<patch>" #490

Closed rpenziol closed 1 month ago

rpenziol commented 2 months ago

What does this change do?

Creates an additional Docker tag with the form stable-<major>.<minor>.<patch>

A tag with a descriptor and a version is a common pattern. Example: Docker images published by LinuxServer.io https://github.com/linuxserver/docker-wireguard/pkgs/container/wireguard

Motivation

I want to ensure I'm always running the latest stable version of the Factorio server. I use Renovate to keep my containers up-to-date. Currently the highest version tag always points to the latest experimental version (which is sometimes the same as the latest stable version). This has caused me to upgrade to the experiment version by accident and corrupt my game data.

Other options to stay up-to-date require manual intervention:

  1. Set image tag to stable and imagePullPolicy: always

    This works if I frequently recreated the Docker container. In my environment the container is only recreated when I restart my computer, which is infrequent and sporadic enough that I'm not likely to always have the latest stable image.

  2. Check which stable version is the latest and manually changing the tag

    This is a manual process I'd rather avoid.

  3. Use Renovate to look up the latest stable version to determine if it should be merged

    This solution doesn't currently work because Renovate will pick up the latest version - without context if the version is a stable or expiermental build, I'd have to resort to manually checking which version is the latest stable version before I could merge any Renovate PRs.

Hence, this solution: Introduce a versioned stable tag

Renovate is capable of creating version bump PRs for Docker image tags that have a prefix. This solution will allow me to merge all Factorio update PRs from Renovate with confidence it will match the version of the game I have in Steam.