Welcome to the Inedo Forums! Check out the Forums Guide for help getting started.

If you are experiencing any issues with the forum software, please visit the Contact Form on our website and let us know!

[ProGet] Support Microsoft SemVer scheme



  • The SemVer feature for Docker Feed comes in quite handy (especially with the automatic tag creation for major versions etc.)
    However we encountered a small problem wenn utilizing image from the Microsoft Container Registry (mcr.io).

    Especially the base images for windows utilize a four digit scheme (x.x.x.x) to indicate os.minor.build.patch-level.
    We consume these images and alter them to our needs, yet we're unable to keep the same versioning scheme and republish our alteration with the four digit scheme.

    Would it be possible to weaken the SemVer validation in order to support this common versioning scheme as well?

    Best regards
    Simon


  • inedo-engineer

    Hi @sbaeurle,

    I'm afraid we'll be sticking to following SemVer2 for the foreseeable future. That's a very well-documented standard that is machine readable and predicable. Microsoft's versioning scheme is anything but that.

    That said, Microsoft's container tagging isn't at all consistent, as you can see: https://hub.docker.com/_/microsoft-windows

    The operating system versioning is even more bizarre, and Microsoft abandoned any sensible Major/Minor scheme in the late 1990's. For example, Windows 7 was 6.1, Windows 8 was 6.2, Windows 10 is 10.0, and Windows 11 is.... 10.0. S Except when it's aliased as 23H2 something. Servers are.... no one really knows.

    Then add to that patching, which may or may not impact the version number.

    To clear up this confusion, we recommend you use SemVer to make versions of your internal base images, based on some Microsoft build.

    This is the mapping scheme we recommend:

    • Major is the product number (19 for Server 2019, 22 for 2022)
    • Minor is the "service pack" version (0 for first version, 1 for 1903, etc)
    • Patch is your internal revision number of that image (when you install patches, etc)

    Another "tip" is overloading digits. For example, if you see a case where you will want to "revise your patches", then just increment your patch version by 10. So 0, 10, 20, 30, 40. Then you can "patch" 10 by going to 11, 12, 13.

    Hope that helps

    Cheers,
    Alana



  • Hi Alana,

    thanks for the input.
    Made me reconsider our current versioning scheme to a much simpler and more deterministic solution.

    This topic can be marked as resolved now!


Log in to reply
 

Inedo Website HomeSupport HomeCode of ConductForums GuideDocumentation