Local Nanosoldier, PkgEval for evaluating PR to package?

There’s a package I’m considering submitting a PR to. The PR would change the types of some constants and thus the return types of many operations, with the values staying the same (or becoming more accurate).

The package is an important part of the ecosystem, with more than three thousand packages transitively depending on it.

I have a laptop with 32 GB of RAM lying around unused, so I’d like to try running a Nanosoldier PkgEval job on it, to see whether the potential PR breaks any transitively dependent packages. Has anyone ever tried something like this? How should I approach this? I’m asking here because NanoSoldier doesn’t seem to have any docs.

One thing that crossed my mind is that I should try to PkgEval the packages with shortest-running test suites first. Also it’d be nice if this was on-line, in the sense that I get notified as soon as a single test suite fails, in addition to the full report in the end.

To be specific, I’d like to find all dependent test suites that break as a result of my change to the (dependency) package, for a range of Julia releases.

FWIW, the package I want to submit a PR to is IrrationalConstants.jl.

NB: I’m not in a hurry to do this

NB: I’d need to bump the julia compat of IrrationalConstants, so I’ll probably wait until v1.10 is the new LTS.

Nanosoldier and PkgEval on Github:

Same problem again. This time I want to evaluate whether a new FixedSizeArrays.jl release would break any dependent package. @maleadt perhaps?

TLDR: before a cutting a release of FixedSizeArrays.jl from the current main branch, I want to see if that would break any transitive dependents of FSA. So basically I want to compare FSA main branch against the previous release, v1.3, for all dependents.

I have no idea how to do this using PkgEval or Nanosoldier. But, you can parse the General Registry to create a list of inverse dependencies, and then test each of those, using a script. Very manual and cumbersome, I know.

You might want to test direct dependencies first, since those are more likely to fail.

1 Like

Reverse-CI is possible with PkgEval/Nanosoldier: GitHub - JuliaCI/Nanosoldier.jl: A package for running JuliaCI services on MIT's Nanosoldier cluster