From e0dfa42d6e656124f3c3d78e178b1bf091b38e79 Mon Sep 17 00:00:00 2001 From: Joey Perrott Date: Mon, 4 May 2020 08:20:24 -0700 Subject: [PATCH] ci: include PR author as an approver of all PRs (#36915) This change adds an implicit approval for any change by the PR author. This allows for a PR author to provide the required owner approval for an area of the code base. This change helps to align the review methodology with how Google's internal system works. Where anyone is able to provide the LGTM for a change if thats all that is needed. PR Close #36915 --- .pullapprove.yml | 134 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 97 insertions(+), 37 deletions(-) diff --git a/.pullapprove.yml b/.pullapprove.yml index 8c5e6a8d66..dd56593e64 100644 --- a/.pullapprove.yml +++ b/.pullapprove.yml @@ -34,41 +34,8 @@ #################################################################################### # GitHub usernames #################################################################################### -# aikidave - Dave Shevitz -# alan-agius4 - Alan Agius -# alxhub - Alex Rickabaugh -# AndrewKushnir - Andrew Kushnir -# andrewseguin - Andrew Seguin -# atscott - Andrew Scott -# ayazhafiz - Ayaz Hafiz -# clydin - Charles Lyding -# crisbeto - Kristiyan Kostadinov -# dennispbrown - Denny Brown -# devversion - Paul Gschwendtner -# dgp1130 - Doug Parker -# filipesilva - Filipe Silva -# gkalpak - Georgios Kalpakas -# gregmagolan - Greg Magolan -# IgorMinar - Igor Minar -# jbogarthyde - Judy Bogart -# jelbourn - Jeremy Elbourn -# JiaLiPassion - Jia Li -# JoostK - Joost Koehoorn -# josephperrott - Joey Perrott -# juleskremer - Jules Kremer -# kapunahelewong - Kapunahele Wong -# kara - Kara Erickson -# kyliau - Keen Yee Liau -# manughub - Manu Murthy -# matsko - Matias Niemela -# mgechev - Minko Gechev -# mhevery - Miško Hevery -# michaelprentice - Michael Prentice -# mmalerba - Miles Malerba -# petebacondarwin - Pete Bacon Darwin -# pkozlowski-opensource - Pawel Kozlowski -# robwormald - Rob Wormald -# StephenFluin - Stephen Fluin +# See reviewer list under `required-minimum-review` group. Team member names and +# usernames are managed there. #################################################################################### @@ -100,8 +67,16 @@ version: 3 # Meta field that goes unused by PullApprove to allow for defining aliases to be # used throughout the config. meta: - 1: &can-be-global-approved "\"global-approvers\" not in groups.approved" - 2: &can-be-global-docs-approved "\"global-docs-approvers\" not in groups.approved" + can-be-global-approved: &can-be-global-approved "\"global-approvers\" not in groups.approved" + can-be-global-docs-approved: &can-be-global-docs-approved "\"global-docs-approvers\" not in groups.approved" + defaults: &defaults + reviews: + # Authors provide their approval implicitly, this approval allows for a reviewer + # from a group not to need a review specifically for an area of the repository + # they own. This is coupled with the `required-minimum-review` group which requires + # that all PRs are reviewed by at least one team member who is not the author of + # the PR. + author_value: 1 # turn on 'draft' support # https://docs.pullapprove.com/config/github-api-version/ @@ -121,6 +96,55 @@ pullapprove_conditions: groups: + # ========================================================= + # Require review on all PRs + # + # All PRs require at least one review. This rule will not + # request any reviewers, however will require that at least + # one review is provided before the group is satisfied. + # ========================================================= + required-minimum-review: + reviews: + request: 0 # Do not request any reviews from the reviewer group + required: 1 # Require that all PRs have approval from at least one of the users in the group + author_value: 0 # The author of the PR cannot provide an approval for themself + reviewers: + users: + - aikidave # Dave Shevitz + - alan-agius4 # Alan Agius + - alxhub # Alex Rickabaugh + - AndrewKushnir # Andrew Kushnir + - andrewseguin # Andrew Seguin + - atscott # Andrew Scott + - ayazhafiz # Ayaz Hafiz + - clydin # Charles Lyding + - crisbeto # Kristiyan Kostadinov + - dennispbrown # Denny Brown + - devversion # Paul Gschwendtner + - dgp1130 # Doug Parker + - filipesilva # Filipe Silva + - gkalpak # Georgios Kalpakas + - gregmagolan # Greg Magolan + - IgorMinar # Igor Minar + - jbogarthyde # Judy Bogart + - jelbourn # Jeremy Elbourn + - JiaLiPassion # Jia Li + - JoostK # Joost Koehoorn + - josephperrott # Joey Perrott + - juleskremer # Jules Kremer + - kapunahelewong # Kapunahele Wong + - kara # Kara Erickson + - kyliau # Keen Yee Liau + - manughub # Manu Murthy + - matsko # Matias Niemela + - mgechev # Minko Gechev + - mhevery # Miško Hevery + - michaelprentice # Michael Prentice + - mmalerba # Miles Malerba + - petebacondarwin # Pete Bacon Darwin + - pkozlowski-opensource # Pawel Kozlowski + - StephenFluin # Stephen Fluin + # ========================================================= # Global Approvers # @@ -161,6 +185,7 @@ groups: # Framework: Animations # ========================================================= fw-animations: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -185,6 +210,7 @@ groups: # Framework: Compiler # ========================================================= fw-compiler: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -209,6 +235,7 @@ groups: # Framework: Compiler / ngcc # ========================================================= fw-ngcc: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -225,6 +252,7 @@ groups: # Framework: Migrations # ========================================================= fw-migrations: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -240,6 +268,7 @@ groups: # Framework: Core # ========================================================= fw-core: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -359,6 +388,7 @@ groups: # Framework: Http # ========================================================= fw-http: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -380,6 +410,7 @@ groups: # Framework: Elements # ========================================================= fw-elements: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -400,6 +431,7 @@ groups: # Framework: Forms # ========================================================= fw-forms: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -432,6 +464,7 @@ groups: # Framework: i18n # ========================================================= fw-i18n: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -465,6 +498,7 @@ groups: # Framework: Platform Server # ========================================================= fw-platform-server: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -484,6 +518,7 @@ groups: # Framework: Router # ========================================================= fw-router: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -506,6 +541,7 @@ groups: # Framework: Service Worker # ========================================================= fw-service-worker: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -533,6 +569,7 @@ groups: # Framework: Upgrade # ========================================================= fw-upgrade: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -563,6 +600,7 @@ groups: # Framework: Testing # ========================================================= fw-testing: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -584,6 +622,7 @@ groups: # Framework: Benchmarks # ========================================================= fw-benchmarks: + <<: *defaults conditions: - *can-be-global-approved - > @@ -600,6 +639,7 @@ groups: # Framework: Playground # ========================================================= fw-playground: + <<: *defaults conditions: - *can-be-global-approved - > @@ -617,6 +657,7 @@ groups: # Framework: Security # ========================================================= fw-security: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -646,6 +687,7 @@ groups: # Bazel # ========================================================= bazel: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -664,6 +706,7 @@ groups: # Language Service # ========================================================= language-service: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -683,6 +726,7 @@ groups: # zone.js # ========================================================= zone-js: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -716,6 +760,7 @@ groups: # Benchpress # ========================================================= benchpress: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -733,6 +778,7 @@ groups: # Integration Tests # ========================================================= integration-tests: + <<: *defaults conditions: - *can-be-global-approved - > @@ -750,6 +796,7 @@ groups: # Docs: Gettings Started & Tutorial # ========================================================= docs-getting-started-and-tutorial: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -782,6 +829,7 @@ groups: # Docs: Marketing # ========================================================= docs-marketing: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -804,6 +852,7 @@ groups: # Docs: Observables # ========================================================= docs-observables: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -829,6 +878,7 @@ groups: # Docs: Packaging, Tooling, Releasing # ========================================================= docs-packaging-and-releasing: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -888,6 +938,7 @@ groups: # Docs: CLI # ========================================================= docs-cli: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -918,6 +969,7 @@ groups: # Docs: CLI Libraries # ========================================================= docs-libraries: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -938,6 +990,7 @@ groups: # Docs: Schematics # ========================================================= docs-schematics: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -960,6 +1013,7 @@ groups: # Docs-infra # ========================================================= docs-infra: + <<: *defaults conditions: - *can-be-global-approved - *can-be-global-docs-approved @@ -989,6 +1043,7 @@ groups: # Dev-infra # ========================================================= dev-infra: + <<: *defaults conditions: - *can-be-global-approved - > @@ -1053,6 +1108,7 @@ groups: # Public API # ========================================================= public-api: + <<: *defaults conditions: - *can-be-global-approved - > @@ -1081,6 +1137,7 @@ groups: # Size tracking # ================================================ size-tracking: + <<: *defaults conditions: - *can-be-global-approved - > @@ -1103,6 +1160,7 @@ groups: # Circular dependencies # ================================================ circular-dependencies: + <<: *defaults conditions: - *can-be-global-approved - > @@ -1125,6 +1183,7 @@ groups: # Code Ownership # ========================================================= code-ownership: + <<: *defaults conditions: - *can-be-global-approved - > @@ -1140,6 +1199,7 @@ groups: # Catch all for if no groups match the code change # ==================================================== fallback: + <<: *defaults # A group is considered to be `active` for a PR if at least one of group's # conditions matches the PR. #