Per-OS toolchain version; Mojave build
What does this MR do?
Adds per-OS toolchain versions. Makes sure to pin everything to constant versions. Resets versions to historically somewhat accurate versions available at the time of each .1 OS release.
Adds a build for Mojave, and moves xcode 10 to it, to be consistent in our versioning.
There is some variation in the tooling depending on the OS, like sshpass
not building on High Sierra, php
& postgres
not building with asdf before Big Sur, and git
failing to brew test
before Big Sur.
Why was this MR needed?
So we have all the recent OSes available, and we can pin all the toolchains (including casks, brew formulas, asdf releases). Now adding a new OS will just be about building a new file in toolchain
with the pinned versions we want, and we'll still be able to re-build old images accurately.
Having historically accurate tool versions is just a bonus itch I had to scratch on top of pinning