Alright, I fixed the builds on buster and bullseye and broke the build on stretch. The reason is that we're specifying libraries by version and the latest versions in buster and bullseye are not available in stretch. Maybe we should just kill the stretch build?
Java: write once, run anywhere (as long as it's exactly like my dev environment)
We should kill the stretch build, but this does leave us with the issue that we need the JAR to run on stretch even if it doesn't build on stretch. This is probably solved by making sure that the buster build is using the same version of the JDK as is in stretch, which may not be default-jdk.
Java: write once, run anywhere (as long as it's exactly like my dev environment)
Heh.
We should kill the stretch build, but this does leave us with the issue that we need the JAR to run on stretch even if it doesn't build on stretch. This is probably solved by making sure that the buster build is using the same version of the JDK as is in stretch, which may not be default-jdk.
We wouldn't switch to a newer Java version at this point. I wouldn't even start building releases with another JDK version. I'd just copy over the new libraries from a buster machine to my macOS build machine and continue building with whatever JDK version I have here.
Let's reconsider our options here after getting the CI running on GitLab. Maybe the best way forward is to just kill all Jenkins jobs. If not, we'll want to update the jobs to use Ivy to resolve external dependencies.
I think using GitLab CI is better than Jenkins for what we use it for. We don't necessarily need to trust the output. It's a tool that helps us but if it lies to us it's not a disaster. We're also not giving it any dangerous secrets.
We also have the advantage that we'll be able to run CI on merge requests. I need to do more configuration for that.
We just said that, now that we have CI for all metrics code bases including metrics-lib, we can kill the Jenkins job for metrics-lib, including the buster one. That should be an easy fix.