Where to look for new platforms and releases in opam-ci?

while preparing for a new camlp5 release, I noticed that there’s a new platform, “opensuse”. Also, a week-or-so ago, I saw that OCaml “5.2~beta2” was part of the set of compiler releases being tested. Today, after Ocaml 5.2.0 was released and available thru opam, I saw that it had not yet made it into the set of tested compiler releases in opam-ci.

Obviously, it takes time to get these things done grin. And so I wondered if there were a place that we could look (e.g., the source or config-files that drive opam-ci) to see which platforms and compiler releases are being tested currently, so that I could just check there, instead of submitting a package release and burning CPU resources on the opam-ci test-clusters (only to find that there’s a new platforms I didn’t expect, or the compiler release I was expecting hasn’t made into the CI yet) ?

1 Like

opam-repo-ci’s sources are located in ocurrent/opam-repo-ci

Would this file be a place one could look to see new platforms show up? opam-repo-ci/test/specs.expected at master · ocurrent/opam-repo-ci · GitHub

I realize that it’s a test fixture. I searched around, using “freebsd”, “opensuse”, and “5.2” and couldn’t find anything that looked like lists of platforms or compiler-versions. But if this test-fixture captures the set of compiler/platform combinations that are tested, then that’s enough I guess ?

ETA: specifically, I see that in that file, there’s “debian-12-ocaml-5.2-beta2”, but no “5.2”, so from this I can conclude that the CI apparatus is not yet testing against the new release. Which is (grin) the thing I wanted to be able to check.

Hi Chet, thanks for the suggestion, I’ll work on generating docs and try to find a good place for them.

I’ll also add 5.2.0 to the CI. Unfortunately this isn’t yet automated.

2 Likes

grin A long, long time ago, I remember an interview with a high-ranking SRE at Google. It was in ACM Queue. He was asked about how much they automated, and he responded that for a bunch of things, they didn’t automate them, b/c if a thing was sufficiently low-probability, unless it was really simple to automate, it wasn’t worth the bother, and automation always carried risk with it. Sometimes having an SRE with a laptop on five-minute response duty, was the best way to deal with a class of failures.

If that file is a good place to look, a simple pointer from the docs to it is probably sufficient.

Thank you for confirming that that file is a relevant place to look!

That’s quite a noisy file as you saw, as it tests both the platform matrix as well as their dockerfiles. Thus, specific docs would be helpful.

If you want to deep-dive, the matrix of platforms is generated in opam-repo-ci/lib/build.ml at master · ocurrent/opam-repo-ci · GitHub. It relies on the list of OCaml versions specified in ocurrent/ocaml-version.

Oh hm, I actually thought the file was remarkably noise-free, viz.:

$ grep --color=auto -nH --null -e build: specs*
specs.expected\01:build: debian-12-ocaml-4.02/amd64 opam-dev
specs.expected\035:build: debian-12-ocaml-4.02/amd64 opam-dev lower-bounds
specs.expected\088:build: debian-12-ocaml-4.03/amd64 opam-dev
specs.expected\0122:build: debian-12-ocaml-4.03/amd64 opam-dev lower-bounds
specs.expected\0175:build: debian-12-ocaml-4.04/amd64 opam-dev
... etc etc lots more lines ....

Looking at the expected builds does seem like the best way.

I also had a look at the code to see where the platforms come from. The pipeline definition starts at pipeline.ml#L140, which uses test_repo to test opam-repository. That gets all the PRs and processes each one with test_pr, which uses Build.with_cluster:

  • compilers uses e.g. Ocaml_version.Releases.recent @ Ocaml_version.Releases.unreleased_betas
  • linux_distributions uses Dockerfile_opam.Distro.active_distros.