Think goreleaser, but for arbitrary stacks rather than simply static binaries.
Design DSL for creating OS-specific packages, like .deb
s, .rpm
s and msi
s.
Take these OS specific packages and generate Dockerfiles that utilise them, based off the ones successfully generated. E.g.: Alpine, Debian, Ubuntu, Windows.