Uploading Packages to Remotes
First, check if the remote you want to upload to is already in your current remote list:
$ conan remote list
You can easily add any remote. To run a remote on your machine:
$ conan remote add my_local_server http://localhost:9300
You can search any remote in the same way you search your computer. Actually, many Conan commands can specify a specific remote.
$ conan search -r=my_local_server
Now, upload the package recipe and all the packages to your remote. In this example, we are using
our my_local_server
remote, but you could use any other.
$ conan upload hello/0.1@demo/testing --all -r=my_local_server
You might be prompted for a username and password. The default Conan server remote has a demo/demo account we can use for testing.
The --all
option will upload the package recipe plus all the binary packages. Omitting the
--all
option will upload the package recipe only. For fine-grained control over which binary
packages are upload to the server, consider using the --packages/-p
or --query/-q
flags.
--packages
allows you to explicitly declare which package gets uploaded to the server by
specifying the package ID. --query
accepts a query parameter, e.g. arch=armv8 and os=Linux
,
and only uploads binary packages which match this query. When using the --query
flag, ensure
that your query string is enclosed in quotes to make the parameter explicit to your shell. For
example, conan upload <package> -q 'arch=x86_64 and os=Linux' ...
is appropriate use of the
--query
flag.
Now try again to read the information from the remote. We refer to it as remote, even if it is running on your local machine, as it could be running on another server in your LAN:
$ conan search hello/0.1@demo/testing -r=my_local_server
Note
If package upload fails, you can try to upload it again. Conan keeps track of the upload integrity and will only upload missing files.
Now we can check if we can download and use them in a project. For that purpose, we first have to remove the local copies, otherwise the remote packages will not be downloaded. Since we have just uploaded them, they are identical to the local ones.
$ conan remove "hello*"
$ conan search
Since we have our test setup from the previous section, we can just use it for our test. Go to your package folder and run the tests again, now saying that we don’t want to build the sources again. We just want to check if we can download the binaries and use them:
$ conan create . demo/testing --not-export --build=never
You will see that the test is built, but the packages are not. The binaries are simply downloaded from your local server. You can check their existence on your local computer again with:
$ conan search