Project Objectives
This project is trying to do the following (from Gherkin Features described in
the project’s features/
folder).
Note this page is not exhaustive, it’s just trying to showcase some of the capabilities we wished existed.
Creating patches
Feature: Bulk PR creation
As an organisation maintainer
I need to create a PR on many repos at once
So that I update-fix log4shell quickly
Scenario: Dependabot-like dependency updates
Given a list of repos to maintain
When bumping "libxml" from "1.2.0" to "1.3.0"
Then each repo using "1.2.0" has a PR updating "libxml" to "1.3.0"
But no PR exist on repos already at "1.3.0"
Scenario: Downstream adoption of template update
Given a project template
And a list of old-template-using repos
When the template gets updated
And a template update migration is created
Then repos using old template get a PR updating usage
In practice, we can assume a Source
that
can discover repos using libxml
, and a
PatchDriver
for bumping packages,
triggering a PR via Forge
.
Migration Lifecycle
Feature: Lifecycle management of a migration
As an organisation maintainer
I need to monitor the adoption of a planned migration from start to finish
So that I can chase the last few non-compliance events
Scenario: Migration progress dashboard
Given a patchnote to apply, updating "log4j" to new version
And the PRs were already sent out
When I open the migration's view
Then all the organisation's repos using old "log4j" are listed
And all the repos which adopted new version are crossed out
Repo discovery
Feature: Discovery of repositories within Organisation
As an organisation maintainer
I need to discover all repos for which a patch may apply
So that I migrate all users of an obsoleted pattern
Scenario: Log4shell discovery
Given a patchnote to apply, updating "log4j" to new version
When I request discovery of packages
Then all the organisation's repos using old "log4j" are listed
But no repo list was written ahead of time
This is the dream of Source
plugins, as
described in Sources