-
Notifications
You must be signed in to change notification settings - Fork 508
Description
At the Guardian, we publish over 40 Scala software libraries, some which are general-purpose (eg. etag-caching, redirect-resolver), some quite Guardian-specific (eg. content-api-scala-client). We have dozens of development teams, and don’t use a single monorepo (we have 200 active Scala repos, over half of which are open-source), but instead many interlinked library dependencies - teams expose libraries to other teams.
When I'm changing a library that many Guardian repositories depend upon, I'd often like to know how deeply it affects them - of the 20 or so services using the library, which ones will break, and how? Will their CI fail? To find that out I need to release a preview version of the library (which I do using gha-scala-library-release-workflow), then raise 20 draft PRs, updating the artifact version in each repo, to trigger it's CI.
Scala Steward has a very good engine (NurtureAlg) for working out what artifacts a repo uses, updating artifact versions in arbitrary build files (EditAlg) and raising PRs (PullRequestRepository) - I would just like to be able to tell it what specific artifact update to roll out, rather than let it choose!
My ideal workflow would be something like invoking our existing scheduled Scala Steward workflow manually, but passing in workflow_dispatch inputs that let me specify which artifact and version I want updated. Then Scala Steward would raise PRs (only within my organisation, where our Scala Steward is authorised to run!) in draft, and ideally output a list of convenient links to each PR.
I realise this is a use case that might apply to a relatively small number of organisations - but I wonder if it would be possible to work on changes to Scala Steward that are relatively un-obtrusive that facilitate this workflow?