What is the cleanest branching strategy to use when creating reusable artifacts?
The simplest/cleanest branch strategy is IMHO the one used in continuous deployment: a single/main integration branch which is also your release branch. From What is Your Branching Model?:


  
  
  Commits can go all the way to production from one trunk/master, if the
  automated build says the commit was good. It’s the turbo-switch for
  TBD, where no humans can hold up a release by taking their sweet time
  testing it and giving a belated seal of approval. Github, Etsy,
  Netflix (and many more startups) are all here.


You'll effectively use the CI build artifacts from that main branch across all environments. Well, as long they build and pass the respective QA verifications, obviously.

Note: there are no feature branches in this strategy, at least not long-lived ones - in order to eliminate/minimize the integration delays and costs. Practically you can eliminate branch merges from your development.