Do they? Having a stable starting point for the “machine” you’re building on contributes to having reproducible builds does it not?
Only the scenario where development and target machine match 1:1 in hardware and underlying software stack. Just changing the kernel under which the container runs can break havoc on the "reproducible" build.
I disagree on the importance you’re putting on what I think are edge cases for most development. When I’m building a binary, the biggest issue I tend to run into is the “machine” I’m building it on. Docker allows that “machine” to have reproducibly equivalent dependencies. Same version of Node, .NET, Java, etc. I don’t see how the kernel really matters that much here. I’ve never once cared what Linux kernel I’m on, but I can’t count the number of times I’ve had to figure which exact version of Cordova I need with Ionic or whatever mess of dependencies I need.
I tried using docker for x86 builds for Lambda (which doesn't support ARM), and hit this brick wall, unfortunately: https://github.com/docker/for-mac/issues/5123 I went and checked the issue when i saw they've made a formal release but it doesn't appear to be resolved. So maybe keep it in mind if anyone has issues trying to use docker now :) Edit: I see Docker has closed the issue and encouraged people to simply use…
Maybe kinda, but really you'd want reproducible cross-compilation too, so a reproducible build should produce the same binary regardless of which machine it is run on.
"Identical binaries" is not the same thing as "reproducible builds". It's maybe one aspect of one type of CI/CD, but I would say not even the majority.
> A build is reproducible if given the same source code, build environment and build instructions, any party can recreate bit-by-bit identical copies of all specified artifacts.