forked from adamm/autogits
89 lines
2.5 KiB
Markdown
89 lines
2.5 KiB
Markdown
Workflow-PR bot
|
|
===============
|
|
|
|
Keeps ProjectGit PR in-sync with a PackageGit PR
|
|
|
|
|
|
Areas of Responsibility
|
|
-----------------------
|
|
|
|
* Detects a PackageGit PR creation against a package and creates a coresponsing PR against the ProjectGit
|
|
* When a PackageGit PR is updated, the corresponding PR against the ProjectGit is updated
|
|
* Stores reference to the PackageGit PR in the headers of the ProjectGit PR comments, for later reference
|
|
* this allows ProjectGit PR to be merged to seperated later (via another tool, for example)
|
|
* Initiates all staging workflows via review requests
|
|
|
|
|
|
Target Usage
|
|
------------
|
|
|
|
Any project (devel, etc) that accepts PR
|
|
|
|
|
|
Config file
|
|
-----------
|
|
JSON
|
|
* _Workflows_: "pr" -- pr workflow enabled
|
|
* _Organization_: organization that holds all the packages
|
|
* _Branch_: branch updated in repo's
|
|
* _GitProjectName_: package in above org, or `org/package` for PrjGit
|
|
* _Reviewers_: accounts associated with mandatory reviews for PrjGit. Can trigger additional
|
|
review requests for PrjGit or associated PkgGit repos. Only when all reviews are
|
|
satisfied, will the PrjGit PR be merged. See Reviewers below.
|
|
* _ManualMergeOnly_: (true, false) only merge if "merge ok" comment/review by package or project maintainers or reviewers
|
|
* _ManualMergeProject_: (true, false) only merge if "merge ok" by project maintainers or reviewers
|
|
|
|
example:
|
|
|
|
[
|
|
{
|
|
"Workflows": ["pr", "direct"],
|
|
"Organization": "autogits",
|
|
"GitProjectName": "HiddenPrj",
|
|
"Branch": "hidden",
|
|
"Reviewers": []
|
|
},
|
|
...
|
|
]
|
|
|
|
Reviewers
|
|
---------
|
|
|
|
Reviews is a list of accounts that need to review package and/or project. They have specific syntax
|
|
|
|
[~][*|-|+]username
|
|
|
|
General prefix of ~ indicates advisory reviewer. They will be requested, but ignored otherwise.
|
|
|
|
Other prefixes indicate project or package association of the reviewer:
|
|
* `*` indicates project *and* package
|
|
* `-` indicates project-only reviewer
|
|
* `+` indicates package-only reviewer
|
|
|
|
`+` is implied. For example
|
|
|
|
`[foo, -bar, ~*moo]`
|
|
|
|
results in
|
|
* foo -> package reviews
|
|
* bar -> project reviews
|
|
* moo -> package and project reviews, but ignored
|
|
|
|
|
|
Maintainership
|
|
--------------
|
|
|
|
Maintainership information is defined per project. For reviews, package maintainers are coalesced
|
|
with project maintainers. A review by any of the maintainers is acceptable.
|
|
|
|
example:
|
|
|
|
{
|
|
"package1": [ "reviewer", "reviewer2"],
|
|
"package2": [],
|
|
|
|
// "project" maintainer
|
|
"": ["reviewer3", "reviewer4"]
|
|
}
|
|
|