Closed jakeafoster closed 3 years ago
One word: Reproducibility
A commit that builds today should build years from now. You don't want to service an old version only to find out that it doesn't build any more and you don't even have a record of what version(s) of the tools you used at the time when it last worked.
So ya, it requires periodic updating when you pin versions like this, but on the plus side when you do update them, and the build breaks, you know exactly what broke it (e.g. an ubuntu version change) instead of your builds breaking at some random time and you have no idea why until you dig through countless logs and finally discover that your build agents quietly changed from ubuntu 20 to 21 and broke you in some way.
That makes sense but why do you use only the latest Windows and MacOS versions?
Thanks for your time!
I guess because no Windows upgrade has ever broken my build (ubuntu certainly has), and I don't know enough about Mac versioning to even know how to specify anything different than latest.
Thanks!
Firstly, thank you very much for this template. It has been of great help to me.
I have a question though:
In this line you reference a specific Ubuntu version: https://github.com/AArnott/Library.Template/blob/62687e5afd6515409d332ee7cbbba5e38ea45885/.github/workflows/build.yml#L25
In the following lines you use the latest Windows and MacOS versions: https://github.com/AArnott/Library.Template/blob/62687e5afd6515409d332ee7cbbba5e38ea45885/.github/workflows/build.yml#L26-L27
Why specify the Ubuntu version but leave Windows and MacOS at the latest?