We are evaluating to adopt capnproto as schema definition, and serialization/deserialization of messages.
I am testing it and I have a .capnp file in a repository, where there are also the generated C++ libraries. There is no need to generate any code for Python user libraries, as there is an API that loads the .capnp file definition at runtime.
Repositories are on Gitlab.
How can I set up the user/client libraries' repositories CI pipelines to have the latest .capnp definition available? They should have access to the generated libraries but also the .capnp file (for Python projects).
I appreciate any help you can provide.
This may not be the answer you're looking for, but it's what has worked for me (as the author of Cap'n Proto).
Since Cap'n Proto schemas are backwards-compatible, it's not necessary for people to stay up-to-date unless they actually need to use the new features in the latest schema version. So, what I usually do is copy the .capnp file from its main repo into any dependent repo, and update that copy whenever needed. So if I'm making a change to the dependent repo, and it needs a new field that was recently added to the upstream repo, I go ahead and copy the .capnp file again as part of the change.
Granted, it's a rather ad hoc way of doing things, but it seems to work fine in my experience. The one thing you have to make sure of is that people always update the schema in its main repo first, and then copy the change to dependents. Never make a change directly in the dependent repo, since it could conflict with changes made upstream.