Skip to content

CI: add generic flavor docker images#3576

Closed
zypA13510 wants to merge 2 commits intoJustArchiNET:mainfrom
zypA13510:ci/docker-generic
Closed

CI: add generic flavor docker images#3576
zypA13510 wants to merge 2 commits intoJustArchiNET:mainfrom
zypA13510:ci/docker-generic

Conversation

@zypA13510
Copy link
Copy Markdown

Checklist

  • I read and understood the Contributing Guidelines.
  • This is not a duplicate of an existing merge request.
  • I believe this falls into the scope of the project and should be part of the built-in functionality.
  • My code follows the code style of this project.
  • I have added tests to cover my changes, wherever they are necessary.
  • All new and existing tests pass.

Changes

New functionality

Added 4 new Docker tag series:

  • A.B.C, A.B, A - tracks the latest released patch/minor/major version, i.e., ignoring pre-releases. This is useful for partial version pinning. It also uses the generic flavor, in line with the flavor of A.B.C.D tags.
  • generic - this is a generic version of latest (and a stable version of released).

Changed functionality

Removed functionality

Additional info

Why this is useful: The service flavor latest images are built with trimming enabled, making it hard to work with plugins that require a full .NET Framework. While the A.B.C.D images are not, they are pinned and require manual update. A major version / generic tag allows external tools to handle updates while also having better plugin compatibility.

@zypA13510
Copy link
Copy Markdown
Author

zypA13510 commented Apr 3, 2026

Test evidence:
GitHub Actions
GHCR resulting versions

@zypA13510 zypA13510 marked this pull request as ready for review April 3, 2026 03:59
@JustArchi JustArchi added ✨ Enhancement Issues marked with this label indicate further enhancements to the program, such as new features. 👎 Not going to happen Issues marked with this label are not going to be implemented into the program. labels Apr 3, 2026
@JustArchi
Copy link
Copy Markdown
Member

JustArchi commented Apr 3, 2026

  1. Partial versioning pinning does not work for ASF, as ASF very loosely follows semver versioning, and we do not support other versions than latest stable and pre-release anyway. The only objective of A.B.C.D tags is for archival purposes and easy fallback, like what can be found in GitHub releases. Not going to happen, besides, it'd require docker container being re-built anyway, and in this case people can just look up the version they intend to run instead.

  2. https://github.com/JustArchiNET/ArchiSteamFarm/wiki/Docker

Due to the fact that the latest image comes with capability of auto-updates, it includes bare OS with OS-specific linux ASF version, contrary to all other tags that include OS with .NET runtime and generic ASF version. This is because newer (updated) ASF version might also require newer runtime than the one the image could possibly be built with, which would otherwise require image to be re-built from scratch, nullifying the planned use-case.

ASF already used to have generic auto-update version and it was complete disaster - the version would very often stop working due to the fact that newer ASF version required .NET runtime not to be found on target machine. It was changed for a very good reason, this is why currently ASF offers generic versions in all tags other than latest, but only latest has capability of auto-updates. It's not a scenario I'm willing to support, people that believe they know better can prepare such docker container themselves. In comparison, you could grab latest from several years ago, and it'd update and work properly, even across several major .NET releases and ASF versions that happened in the meantime. Your suggestion is doomed to last no longer than through a single major .NET version, and that assumes ASF will not require newer patch runtime in the meantime, and very often it does due to security updates.

Generic users can run released tag instead and rebuild as often as they like.

@JustArchi JustArchi closed this Apr 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Enhancement Issues marked with this label indicate further enhancements to the program, such as new features. 👎 Not going to happen Issues marked with this label are not going to be implemented into the program.

Development

Successfully merging this pull request may close these issues.

2 participants