The CI on one of my packages started failing a couple of days ago. It seemed to coincide with an upgrade in the Manifest (that julia requested, if I remember). It doesn’t seem related to anything in my code itself. The error message is in the get
statement when packages are built before the unit tests run. (here is a link to the page in my repo Changed output of Mink routine (now always pass out num of steps) · glwhart/MinkowskiReduction.jl@e9cd700 · GitHub)
I don’t know what get
is trying to do here why it would start failing. The CI has been running fine for a while. I would appreciate any help.
Run julia --color=yes --project=@. -e 'using Pkg; if VERSION >= v"1.1.0-rc1"; Pkg.build(verbose=true); else Pkg.build(); end'
ERROR: MethodError: no method matching get(::Pair{String,Any}, ::String, ::Nothing)
1 Like
That julia statement runs fine on my local machine, but apparently fails on the VM that the CI job runs.
Is there any chance that there is some github setting that I’m missing?
Are you using Julia v1.2 locally?
Good point. Well, I just downloaded it (1.2) and ran the build command locally using julia 1.2. It works locally. No error like that I reported in my original post.
One of the mysteries for me with this question is that I have two recent repos that have identical runtests.yml files, both using Julia 1.2 as a minimum, and the CI was working fine on both until a few days ago when one stopped working and the other continues to work. I’ve been comparing the two to try and understand if something changed, but I haven’t found anything yet.
I still haven’t been able to fix this. I wonder if @dilumaluthge might have an idea? I see you answering related questions…
I re-ran the github actions after bumping the minor version number on the repo and I turned on debug logging. Here is the output: Bumped version hoping to fix github actions problems · glwhart/MinkowskiReduction.jl@2de77b2 · GitHub
Things I’ve tried:
- requiring Julia v1.6 and v1.7 as minimum versions, instead of v1.2
- deleting
Manifest.toml
and regenerating it
- Making adjustments in
Project.toml
I think there must be a bug of some sort in Package.jl
. The problems started when the package manager told me my manifest was old and that I should upgrade_manifest
. That’s when the get
error started in the CI runs.
I was able to prevent this error from continuing by changing the julia version in the Runtests.yml
file from 1.2 to 1.7. Not sure exactly what the problem was but using a newer version of julia solves the problem.
1 Like
There are different schools of thought on this topic, my recommendation is to not check in the manifest file for packages (instead, it’s very useful for applications). The fact is that the manifest is intrinsically dependent on the Julia minor version, it’s highly unlikely it’ll work across many different releases, which is instead what you want to do in CI
1 Like
If you don’t check in the manifest file and you check out a new copy of the repo somewhere, how does julia know which packages in include when you run the code? Or do you just add the missing ones to the local environment until the code runs?
I think I see your point, I’m just wondering how it would work in practice.
That’s a job for project file (with compat bounds) + Pkg resolver. That’s also how it works for anyone installing your (or any other) package. The manifest file is used exclusively in CI, not anywhere else.
1 Like
Thanks for explaining that. I didn’t realize how that worked. I’m guessing leaving my Manifest file out would have eliminated my problem. Maybe I’ll try that and report back.