Projects should have a say in their artifact caches
The configuration for artifact caches is currently global on a per user basis.
This means if you build multiple projects for different organizations you would have to use separate config files for each project; when in fact the authors of a given project should have a good idea where an artifact share exists, or which one(s) should be used for a given branch of that buildstream project.
Instead we should reverse this and say:
- The project advertises it's artifact push and pull URLs
- The user can decide where to push and pull artifacts from on a per project basis
- This can be done with a dictionary in the user configuration, so we can override artifact caches on a per project name basis
- This can be done by adding local configuration to buildstream. We already have workspaces which store data in
<project>/.bst/
, we could add a key-value store in<project>/.bst/config
and have a genericbst config
CLI (similar to git), where we could configure the push/pull urls to use on a per checkout basis - Similar to the above option, instead of generic configuration we could add custom commands for configuring remotes, seems that a
bst remote
family of commands would fit naturally withbst push
andbst pull
Marking this blocker as it constitutes a CLI api change and I would rather not make our first stable release stuck with this approach.