Hi,
I have two unregistered packages, call them “First” and “Second”. Second is dependent on First, and I’ve ran add [github/path/First.git]
to reflect that in Second’s Manifest - so far so good. Everything works well locally, but when I try to test Second on CircleCI, the build breaks in the package resolving step
Resolving package versions...
ERROR: Unsatisfiable requirements detected for package First [31779860]:
First [31779860] log:
├─First [31779860] has no known versions!
└─restricted to versions * by Second [8c69bf56] — no versions left
└─Second [8c69bf56] log:
├─possible versions are: 0.2.0 or uninstalled
└─Second [8c69bf56] is fixed to version 0.2.0
I gather this has something to do with the versions of the two packages, but am unsure of how to parse that message.
As a side-note, both of these packages are in private repositories, and required github credentials during the local add
step. Can I provide github credentials to the Pkg.add
command in my CI by using environment variables?
Thanks,
Sebastian
1 Like
Did you commit Second/Manifest.toml
?
Yes. And the block for First
inside Second/Manifest.toml
looks like this:
[[First]]
deps = ["DataFrames", "Dates", "HTTP", "JSON", "LibPQ", "MySQL", "Statistics", "YAML"]
git-tree-sha1 = "98b99d879ed774205e23c79626da04d2d8647b5c"
repo-rev = "relevant/branch"
repo-url = "https://github.com/Organization/First.git"
uuid = "31779860-03a7-11e9-31c4-a5a2e3d9393f"
version = "0.3.0"
Ok.
How do you invoke the tests? Is Second
the active project such that Second/Manifest.toml
is used?
Yes, I believe so. Previous versions of Second that did not rely on First pass the tests on CI. Here is my CI setup file:
version: 2
jobs:
build:
working_directory: /root/project/Second # Clone into a directory whose name matches your Package.
docker:
- image: julia:1.1 # image comes from Docker hub
steps:
- checkout
- run:
name: Install and Test this package
command: julia -e 'using Pkg; Pkg.update(); Pkg.clone(pwd()); Pkg.build("Second"); Pkg.test("Second", coverage = true);'
Ok, so you are not using Second/Manifest.toml
. You can simplify the above to:
julia --project=/path/to/package/clone -e 'using Pkg; Pkg.test(; coverage=true)'
which will run the test with Second
as the active project, and thus use Second/Manifest.toml
.
3 Likes
Ah, I see what you mean now. This solved it, thank you so much for your help!
I had a second question in my original post regarding giving Pkg git credentials to be able to install a private package during the CI step, should I open a separate topic for that?
I have no experience with this. Feel free to open a new topic if you haven’t solved it yet.