1291 lines
44 KiB
YAML
1291 lines
44 KiB
YAML
####################################################################################
|
|
####################################################################################
|
|
# Angular Code Ownership #
|
|
####################################################################################
|
|
####################################################################################
|
|
#
|
|
# Configuration of code ownership and review approvals for the angular/angular repo.
|
|
#
|
|
# More info: https://docs.pullapprove.com/
|
|
#
|
|
# =========================================================
|
|
# General rules / philosophy
|
|
# =========================================================
|
|
#
|
|
# - We trust that people do the right thing and won't approve changes they don't feel confident reviewing
|
|
# - We enforce that only approved PRs are merged ensuring that unreviewed code isn't accidentally merged
|
|
# - We distribute approval rights as much as possible to help us scale better
|
|
# - Groups have one or two global approvers groups as fallbacks:
|
|
# - @angular/fw-global-approvers: for approving minor changes, large-scale refactorings, and emergency situations.
|
|
# - @angular/fw-global-approvers-for-docs-only-changes: for approving minor documentation-only changes that don't require engineering review
|
|
# - A small number of file groups have very limited number of reviewers because incorrect changes to the files they guard would have serious consequences (e.g. security, public api)
|
|
#
|
|
# Configuration nuances:
|
|
#
|
|
# - This configuration works in conjunction with the protected branch settings that require all changes to be made via pull requests with at least one approval.
|
|
# - This approval can come from an appropriate codeowner, or any repo collaborator (person with write access) if the PR is authored by a codeowner.
|
|
# - All groups whose pullapprove rules are matched will be required for overall approval.
|
|
#
|
|
# NOTE:
|
|
# In the case of emergency, the repo administrators which include the current angular caretaker
|
|
# can bypass this reviewer approval requirement, this is expected as a last resort and to be
|
|
# done exceedingly sparingly.
|
|
|
|
####################################################################################
|
|
# GitHub usernames
|
|
####################################################################################
|
|
# See reviewer list under `required-minimum-review` group. Team member names and
|
|
# usernames are managed there.
|
|
|
|
|
|
####################################################################################
|
|
# Approval Groups
|
|
####################################################################################
|
|
# =========================================================
|
|
# @angular/framework-global-approvers
|
|
# =========================================================
|
|
# Used for approving minor changes, large-scale refactorings, and in emergency situations.
|
|
#
|
|
# IgorMinar
|
|
# jelbourn
|
|
# josephperrott
|
|
# mhevery
|
|
#
|
|
# =========================================================
|
|
# @angular/framework-global-approvers-for-docs-only-changes
|
|
# =========================================================
|
|
# Used for approving minor documentation-only changes that don't require engineering review.
|
|
#
|
|
# aikidave
|
|
# gkalpak
|
|
# kapunahelewong
|
|
# petebacondarwin
|
|
|
|
|
|
version: 3
|
|
|
|
# Meta field that goes unused by PullApprove to allow for defining aliases to be
|
|
# used throughout the config.
|
|
meta:
|
|
# The following groups have no file based conditions and will be initially `active` on all PRs
|
|
# - `global-approvers`
|
|
# - `global-docs-approvers`
|
|
# - `required-minimum-review`
|
|
#
|
|
# By checking the number of active/pending/rejected groups when these are excluded, we can determine
|
|
# if any other groups are matched.
|
|
#
|
|
# Also note that the ordering of groups matters in this file. The only groups visible to the current
|
|
# one are those that appear above it.
|
|
no-groups-above-this-pending: &no-groups-above-this-pending
|
|
len(groups.pending.exclude("required-minimum-review").exclude("global-approvers").exclude("global-docs-approvers")) == 0
|
|
no-groups-above-this-rejected: &no-groups-above-this-rejected
|
|
len(groups.rejected.exclude("required-minimum-review").exclude("global-approvers").exclude("global-docs-approvers")) == 0
|
|
no-groups-above-this-active: &no-groups-above-this-active
|
|
len(groups.active.exclude("required-minimum-review").exclude("global-approvers").exclude("global-docs-approvers")) == 0
|
|
|
|
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/
|
|
# https://developer.github.com/v3/previews/#draft-pull-requests
|
|
github_api_version: "shadow-cat-preview"
|
|
|
|
pullapprove_conditions:
|
|
- condition: "'WIP' not in title"
|
|
unmet_status: pending
|
|
explanation: "Waiting to send reviews as PR is WIP"
|
|
- condition: "'PR state: WIP' not in labels"
|
|
unmet_status: pending
|
|
explanation: "Waiting to send reviews as PR is WIP"
|
|
- condition: "not draft"
|
|
unmet_status: pending
|
|
explanation: "Waiting to send reviews as PR is in draft"
|
|
|
|
|
|
groups:
|
|
# =========================================================
|
|
# Global Approvers
|
|
#
|
|
# All reviews performed for global approvals require using
|
|
# the `Reviewed-for:` specifier to set the approval
|
|
# specificity as documented at:
|
|
# https://docs.pullapprove.com/reviewed-for/
|
|
# =========================================================
|
|
global-approvers:
|
|
type: optional
|
|
reviewers:
|
|
teams:
|
|
- framework-global-approvers
|
|
reviews:
|
|
request: 0
|
|
required: 1
|
|
reviewed_for: required
|
|
|
|
# =========================================================
|
|
# Global Approvers For Docs
|
|
#
|
|
# All reviews performed for global docs approvals require
|
|
# using the `Reviewed-for:` specifier to set the approval
|
|
# specificity as documented at:
|
|
# https://docs.pullapprove.com/reviewed-for/
|
|
# =========================================================
|
|
global-docs-approvers:
|
|
type: optional
|
|
reviewers:
|
|
teams:
|
|
- framework-global-approvers-for-docs-only-changes
|
|
reviews:
|
|
request: 0
|
|
required: 1
|
|
reviewed_for: required
|
|
|
|
# =========================================================
|
|
# 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:
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
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
|
|
- mgechev # Minko Gechev
|
|
- mhevery # Miško Hevery
|
|
- mmalerba # Miles Malerba
|
|
- petebacondarwin # Pete Bacon Darwin
|
|
- pkozlowski-opensource # Pawel Kozlowski
|
|
- Splaktar # Michael Prentice
|
|
- StephenFluin # Stephen Fluin
|
|
|
|
# =========================================================
|
|
# Framework: Animations
|
|
# =========================================================
|
|
fw-animations:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'packages/animations/**',
|
|
'packages/platform-browser/animations/**',
|
|
'aio/content/guide/animations.md',
|
|
'aio/content/examples/animations/**',
|
|
'aio/content/images/guide/animations/**',
|
|
'aio/content/guide/complex-animation-sequences.md',
|
|
'aio/content/guide/reusable-animations.md',
|
|
'aio/content/guide/route-animations.md',
|
|
'aio/content/guide/transition-and-triggers.md'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- crisbeto
|
|
- IgorMinar
|
|
- jelbourn
|
|
|
|
|
|
# =========================================================
|
|
# Framework: Compiler
|
|
# =========================================================
|
|
fw-compiler:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files.exclude('packages/compiler-cli/ngcc/**'), [
|
|
'packages/compiler/**',
|
|
'packages/examples/compiler/**',
|
|
'packages/compiler-cli/**',
|
|
'aio/content/guide/angular-compiler-options.md',
|
|
'aio/content/guide/aot-compiler.md',
|
|
'aio/content/guide/aot-metadata-errors.md',
|
|
'aio/content/guide/template-typecheck.md '
|
|
])
|
|
reviewers:
|
|
users:
|
|
- alxhub
|
|
- AndrewKushnir
|
|
- JoostK
|
|
|
|
|
|
# =========================================================
|
|
# Framework: Compiler / ngcc
|
|
# =========================================================
|
|
fw-ngcc:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- files.include('packages/compiler-cli/ngcc/**')
|
|
reviewers:
|
|
users:
|
|
- alxhub
|
|
- gkalpak
|
|
- JoostK
|
|
- petebacondarwin
|
|
|
|
|
|
# =========================================================
|
|
# Framework: Migrations
|
|
# =========================================================
|
|
fw-migrations:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- files.include("packages/core/schematics/**")
|
|
reviewers:
|
|
users:
|
|
- alxhub
|
|
- crisbeto
|
|
- devversion
|
|
|
|
|
|
# =========================================================
|
|
# Framework: Core
|
|
# =========================================================
|
|
fw-core:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files.exclude("packages/core/schematics/**"), [
|
|
'packages/core/**',
|
|
'packages/examples/core/**',
|
|
'packages/common/**',
|
|
'packages/platform-browser/**',
|
|
'packages/examples/platform-browser/**',
|
|
'packages/platform-browser-dynamic/**',
|
|
'packages/platform-webworker/**',
|
|
'packages/platform-webworker-dynamic/**',
|
|
'packages/examples/common/**',
|
|
'packages/docs/**',
|
|
'aio/content/guide/accessibility.md',
|
|
'aio/content/examples/accessibility/**',
|
|
'aio/content/guide/architecture-components.md',
|
|
'aio/content/guide/architecture-modules.md',
|
|
'aio/content/guide/architecture-next-steps.md',
|
|
'aio/content/guide/architecture-services.md',
|
|
'aio/content/guide/architecture.md',
|
|
'aio/content/examples/architecture/**',
|
|
'aio/content/images/guide/architecture/**',
|
|
'aio/content/guide/attribute-directives.md',
|
|
'aio/content/examples/attribute-directives/**',
|
|
'aio/content/images/guide/attribute-directives/**',
|
|
'aio/content/guide/bootstrapping.md',
|
|
'aio/content/examples/bootstrapping/**',
|
|
'aio/content/guide/cheatsheet.md',
|
|
'aio/content/guide/component-interaction.md',
|
|
'aio/content/examples/component-interaction/**',
|
|
'aio/content/images/guide/component-interaction/**',
|
|
'aio/content/guide/component-styles.md',
|
|
'aio/content/examples/component-styles/**',
|
|
'aio/content/guide/dependency-injection.md',
|
|
'aio/content/examples/dependency-injection/**',
|
|
'aio/content/images/guide/dependency-injection/**',
|
|
'aio/content/guide/dependency-injection-in-action.md',
|
|
'aio/content/examples/dependency-injection-in-action/**',
|
|
'aio/content/images/guide/dependency-injection-in-action/**',
|
|
'aio/content/guide/dependency-injection-navtree.md',
|
|
'aio/content/guide/dependency-injection-providers.md',
|
|
'aio/content/guide/lightweight-injection-tokens.md',
|
|
'aio/content/guide/displaying-data.md',
|
|
'aio/content/examples/displaying-data/**',
|
|
'aio/content/images/guide/displaying-data/**',
|
|
'aio/content/guide/dynamic-component-loader.md',
|
|
'aio/content/examples/dynamic-component-loader/**',
|
|
'aio/content/images/guide/dynamic-component-loader/**',
|
|
'aio/content/guide/entry-components.md',
|
|
'aio/content/guide/feature-modules.md',
|
|
'aio/content/examples/feature-modules/**',
|
|
'aio/content/images/guide/feature-modules/**',
|
|
'aio/content/guide/frequent-ngmodules.md',
|
|
'aio/content/images/guide/frequent-ngmodules/**',
|
|
'aio/content/guide/hierarchical-dependency-injection.md',
|
|
'aio/content/examples/hierarchical-dependency-injection/**',
|
|
'aio/content/examples/providers-viewproviders/**',
|
|
'aio/content/examples/resolution-modifiers/**',
|
|
'aio/content/guide/lazy-loading-ngmodules.md',
|
|
'aio/content/examples/lazy-loading-ngmodules/**',
|
|
'aio/content/images/guide/lazy-loading-ngmodules/**',
|
|
'aio/content/guide/lifecycle-hooks.md',
|
|
'aio/content/examples/lifecycle-hooks/**',
|
|
'aio/content/images/guide/lifecycle-hooks/**',
|
|
'aio/content/examples/ngcontainer/**',
|
|
'aio/content/guide/ngmodules.md',
|
|
'aio/content/examples/ngmodules/**',
|
|
'aio/content/guide/ngmodule-api.md',
|
|
'aio/content/guide/ngmodule-faq.md',
|
|
'aio/content/guide/ngmodule-vs-jsmodule.md',
|
|
'aio/content/guide/module-types.md',
|
|
'aio/content/guide/template-syntax.md',
|
|
'aio/content/guide/built-in-template-functions.md',
|
|
'aio/content/examples/built-in-template-functions/**',
|
|
'aio/content/guide/event-binding.md',
|
|
'aio/content/examples/event-binding/**',
|
|
'aio/content/guide/interpolation.md',
|
|
'aio/content/examples/interpolation/**',
|
|
'aio/content/examples/template-syntax/**',
|
|
'aio/content/images/guide/template-syntax/**',
|
|
'aio/content/guide/binding-syntax.md',
|
|
'aio/content/examples/binding-syntax/**',
|
|
'aio/content/guide/property-binding.md',
|
|
'aio/content/examples/property-binding/**',
|
|
'aio/content/guide/attribute-binding.md',
|
|
'aio/content/examples/attribute-binding/**',
|
|
'aio/content/guide/two-way-binding.md',
|
|
'aio/content/examples/two-way-binding/**',
|
|
'aio/content/guide/built-in-directives.md',
|
|
'aio/content/examples/built-in-directives/**',
|
|
'aio/content/images/guide/built-in-directives/**',
|
|
'aio/content/guide/template-reference-variables.md',
|
|
'aio/content/examples/template-reference-variables/**',
|
|
'aio/content/guide/inputs-outputs.md',
|
|
'aio/content/examples/inputs-outputs/**',
|
|
'aio/content/images/guide/inputs-outputs/**',
|
|
'aio/content/guide/template-expression-operators.md',
|
|
'aio/content/examples/template-expression-operators/**',
|
|
'aio/content/guide/pipes.md',
|
|
'aio/content/examples/pipes/**',
|
|
'aio/content/images/guide/pipes/**',
|
|
'aio/content/guide/providers.md',
|
|
'aio/content/examples/providers/**',
|
|
'aio/content/images/guide/providers/**',
|
|
'aio/content/guide/singleton-services.md',
|
|
'aio/content/guide/set-document-title.md',
|
|
'aio/content/examples/set-document-title/**',
|
|
'aio/content/images/guide/set-document-title/**',
|
|
'aio/content/guide/sharing-ngmodules.md',
|
|
'aio/content/guide/structural-directives.md',
|
|
'aio/content/examples/structural-directives/**',
|
|
'aio/content/guide/svg-in-templates.md',
|
|
'aio/content/images/guide/structural-directives/**',
|
|
'aio/content/guide/template-statements.md',
|
|
'aio/content/guide/user-input.md',
|
|
'aio/content/examples/user-input/**',
|
|
'aio/content/images/guide/user-input/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- alxhub
|
|
- AndrewKushnir
|
|
- atscott
|
|
- ~kara # do not request reviews from Kara, but allow her to approve PRs
|
|
- mhevery
|
|
- pkozlowski-opensource
|
|
|
|
|
|
# =========================================================
|
|
# Framework: Http
|
|
# =========================================================
|
|
fw-http:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'packages/common/http/**',
|
|
'packages/examples/http/**',
|
|
'aio/content/guide/http.md',
|
|
'aio/content/examples/http/**',
|
|
'aio/content/images/guide/http/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- alxhub
|
|
- IgorMinar
|
|
|
|
|
|
# =========================================================
|
|
# Framework: Elements
|
|
# =========================================================
|
|
fw-elements:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'packages/elements/**',
|
|
'aio/content/examples/elements/**',
|
|
'aio/content/images/guide/elements/**',
|
|
'aio/content/guide/elements.md'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- andrewseguin
|
|
- gkalpak
|
|
|
|
|
|
# =========================================================
|
|
# Framework: Forms
|
|
# =========================================================
|
|
fw-forms:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'packages/forms/**',
|
|
'packages/examples/forms/**',
|
|
'aio/content/guide/forms.md',
|
|
'aio/content/examples/forms/**',
|
|
'aio/content/images/guide/forms/**',
|
|
'aio/content/guide/forms-overview.md',
|
|
'aio/content/examples/forms-overview/**',
|
|
'aio/content/images/guide/forms-overview/**',
|
|
'aio/content/guide/form-validation.md',
|
|
'aio/content/examples/form-validation/**',
|
|
'aio/content/images/guide/form-validation/**',
|
|
'aio/content/guide/dynamic-form.md',
|
|
'aio/content/examples/dynamic-form/**',
|
|
'aio/content/images/guide/dynamic-form/**',
|
|
'aio/content/guide/reactive-forms.md',
|
|
'aio/content/examples/reactive-forms/**',
|
|
'aio/content/images/guide/reactive-forms/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- AndrewKushnir
|
|
|
|
|
|
# =========================================================
|
|
# Framework: i18n
|
|
# =========================================================
|
|
fw-i18n:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'packages/core/src/i18n/**',
|
|
'packages/core/src/render3/i18n.ts',
|
|
'packages/core/src/render3/i18n.md',
|
|
'packages/core/src/render3/interfaces/i18n.ts',
|
|
'packages/common/locales/**',
|
|
'packages/common/src/i18n/**',
|
|
'packages/common/src/pipes/date_pipe.ts',
|
|
'packages/common/src/pipes/i18n_plural_pipe.ts',
|
|
'packages/common/src/pipes/i18n_select_pipe.ts',
|
|
'packages/common/src/pipes/number_pipe.ts',
|
|
'packages/compiler/src/i18n/**',
|
|
'packages/compiler/src/render3/view/i18n/**',
|
|
'packages/compiler-cli/src/extract_i18n.ts',
|
|
'packages/localize/**',
|
|
'aio/content/guide/i18n.md',
|
|
'aio/content/examples/i18n/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- AndrewKushnir
|
|
- mhevery
|
|
- petebacondarwin
|
|
|
|
|
|
# =========================================================
|
|
# Framework: Platform Server
|
|
# =========================================================
|
|
fw-platform-server:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'packages/platform-server/**',
|
|
'aio/content/guide/universal.md',
|
|
'aio/content/examples/universal/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- alxhub
|
|
- kyliau
|
|
|
|
|
|
# =========================================================
|
|
# Framework: Router
|
|
# =========================================================
|
|
fw-router:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'packages/router/**',
|
|
'packages/examples/router/**',
|
|
'aio/content/guide/router.md',
|
|
'aio/content/guide/router-tutorial.md',
|
|
'aio/content/guide/router-tutorial-toh.md',
|
|
'aio/content/examples/router-tutorial/**',
|
|
'aio/content/examples/router/**',
|
|
'aio/content/images/guide/router/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- atscott
|
|
|
|
|
|
# =========================================================
|
|
# Framework: Service Worker
|
|
# =========================================================
|
|
fw-service-worker:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'packages/service-worker/**',
|
|
'packages/examples/service-worker/**',
|
|
'aio/content/guide/service-worker-getting-started.md',
|
|
'aio/content/examples/service-worker-getting-started/**',
|
|
'aio/content/guide/app-shell.md',
|
|
'aio/content/guide/service-worker-communications.md',
|
|
'aio/content/guide/service-worker-config.md',
|
|
'aio/content/guide/service-worker-devops.md',
|
|
'aio/content/guide/service-worker-intro.md',
|
|
'aio/content/images/guide/service-worker/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- alxhub
|
|
- gkalpak
|
|
- IgorMinar
|
|
|
|
|
|
# =========================================================
|
|
# Framework: Upgrade
|
|
# =========================================================
|
|
fw-upgrade:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'packages/upgrade/**',
|
|
'packages/common/upgrade/**',
|
|
'packages/examples/upgrade/**',
|
|
'aio/content/guide/upgrade.md',
|
|
'aio/content/examples/upgrade-lazy-load-ajs/**',
|
|
'aio/content/examples/upgrade-module/**',
|
|
'aio/content/images/guide/upgrade/**',
|
|
'aio/content/examples/upgrade-phonecat-1-typescript/**',
|
|
'aio/content/examples/upgrade-phonecat-2-hybrid/**',
|
|
'aio/content/examples/upgrade-phonecat-3-final/**',
|
|
'aio/content/guide/upgrade-performance.md',
|
|
'aio/content/guide/upgrade-setup.md',
|
|
'aio/content/guide/ajs-quick-reference.md',
|
|
'aio/content/examples/ajs-quick-reference/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- gkalpak
|
|
- petebacondarwin
|
|
|
|
|
|
# =========================================================
|
|
# Framework: Testing
|
|
# =========================================================
|
|
fw-testing:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files.exclude('packages/compiler-cli/**'), [
|
|
'**/testing/**',
|
|
'aio/content/guide/testing.md',
|
|
'aio/content/guide/test-debugging.md',
|
|
'aio/content/guide/testing-attribute-directives.md',
|
|
'aio/content/guide/testing-code-coverage.md',
|
|
'aio/content/guide/testing-components-basics.md',
|
|
'aio/content/guide/testing-components-scenarios.md',
|
|
'aio/content/guide/testing-pipes.md',
|
|
'aio/content/guide/testing-services.md',
|
|
'aio/content/guide/testing-utility-apis.md',
|
|
'aio/content/examples/testing/**',
|
|
'aio/content/images/guide/testing/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- AndrewKushnir
|
|
- IgorMinar
|
|
- pkozlowski-opensource
|
|
|
|
|
|
# =========================================================
|
|
# Framework: Benchmarks
|
|
# =========================================================
|
|
fw-benchmarks:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'modules/benchmarks/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- IgorMinar
|
|
- pkozlowski-opensource
|
|
|
|
|
|
# =========================================================
|
|
# Framework: Playground
|
|
# =========================================================
|
|
fw-playground:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'modules/playground/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- IgorMinar
|
|
- jelbourn
|
|
- pkozlowski-opensource
|
|
|
|
|
|
# =========================================================
|
|
# Framework: Security
|
|
# =========================================================
|
|
fw-security:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'packages/core/src/sanitization/**',
|
|
'packages/core/test/linker/security_integration_spec.ts',
|
|
'packages/compiler/src/schema/**',
|
|
'packages/platform-browser/src/security/**',
|
|
'aio/content/guide/security.md',
|
|
'aio/content/examples/security/**',
|
|
'aio/content/images/guide/security/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- IgorMinar
|
|
- mhevery
|
|
- jelbourn
|
|
- pkozlowski-opensource
|
|
reviews:
|
|
request: -1 # request reviews from everyone
|
|
required: 2 # require at least 2 approvals
|
|
reviewed_for: required
|
|
|
|
|
|
# =========================================================
|
|
# Bazel
|
|
# =========================================================
|
|
bazel:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'packages/bazel/**',
|
|
])
|
|
reviewers:
|
|
users:
|
|
- IgorMinar
|
|
- josephperrott
|
|
- kyliau
|
|
|
|
|
|
# =========================================================
|
|
# Language Service
|
|
# =========================================================
|
|
language-service:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'packages/language-service/**',
|
|
'aio/content/guide/language-service.md',
|
|
'aio/content/images/guide/language-service/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- ayazhafiz
|
|
- kyliau
|
|
|
|
|
|
# =========================================================
|
|
# zone.js
|
|
# =========================================================
|
|
zone-js:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'packages/zone.js/**',
|
|
'aio/content/guide/zone.md'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- JiaLiPassion
|
|
- mhevery
|
|
|
|
# =========================================================
|
|
# in-memory-web-api
|
|
# =========================================================
|
|
in-memory-web-api:
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'packages/misc/angular-in-memory-web-api/**',
|
|
])
|
|
reviewers:
|
|
users:
|
|
- IgorMinar
|
|
- crisbeto
|
|
|
|
# =========================================================
|
|
# Benchpress
|
|
# =========================================================
|
|
benchpress:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'packages/benchpress/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- alxhub
|
|
- josephperrott
|
|
|
|
|
|
# =========================================================
|
|
# Integration Tests
|
|
# =========================================================
|
|
integration-tests:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'integration/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- IgorMinar
|
|
- josephperrott
|
|
- mhevery
|
|
|
|
|
|
# =========================================================
|
|
# Docs: Gettings Started & Tutorial
|
|
# =========================================================
|
|
docs-getting-started-and-tutorial:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'aio/content/guide/setup-local.md',
|
|
'aio/content/images/guide/setup-local/**',
|
|
'aio/content/tutorial/**',
|
|
'aio/content/images/guide/toh/**',
|
|
'aio/content/examples/toh-pt0/**',
|
|
'aio/content/examples/toh-pt1/**',
|
|
'aio/content/examples/toh-pt2/**',
|
|
'aio/content/examples/toh-pt3/**',
|
|
'aio/content/examples/toh-pt4/**',
|
|
'aio/content/examples/toh-pt5/**',
|
|
'aio/content/examples/toh-pt6/**',
|
|
'aio/content/examples/getting-started-v0/**',
|
|
'aio/content/examples/getting-started/**',
|
|
'aio/content/start/**',
|
|
'aio/content/images/guide/start/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- aikidave
|
|
- IgorMinar
|
|
- StephenFluin
|
|
|
|
|
|
# =========================================================
|
|
# Docs: Marketing
|
|
# =========================================================
|
|
docs-marketing:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'aio/content/marketing/**',
|
|
'aio/content/images/bios/**',
|
|
'aio/content/images/marketing/**',
|
|
'aio/content/file-not-found.md',
|
|
'aio/content/license.md',
|
|
'aio/content/navigation.json'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- aikidave
|
|
- IgorMinar
|
|
- StephenFluin
|
|
|
|
# =========================================================
|
|
# Docs: Observables
|
|
# =========================================================
|
|
docs-observables:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'aio/content/guide/observables.md',
|
|
'aio/content/examples/observables/**',
|
|
'aio/content/guide/comparing-observables.md',
|
|
'aio/content/examples/comparing-observables/**',
|
|
'aio/content/guide/observables-in-angular.md',
|
|
'aio/content/examples/observables-in-angular/**',
|
|
'aio/content/guide/practical-observable-usage.md',
|
|
'aio/content/examples/practical-observable-usage/**',
|
|
'aio/content/guide/rx-library.md',
|
|
'aio/content/examples/rx-library/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- alxhub
|
|
|
|
|
|
# =========================================================
|
|
# Docs: Packaging, Tooling, Releasing
|
|
# =========================================================
|
|
docs-packaging-and-releasing:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'docs/PUBLIC_API.md',
|
|
'docs/RELEASE_SCHEDULE.md',
|
|
'aio/content/guide/npm-packages.md',
|
|
'aio/content/guide/browser-support.md',
|
|
'aio/content/guide/releases.md',
|
|
'aio/content/guide/updating.md',
|
|
'aio/content/guide/deprecations.md',
|
|
'aio/content/guide/migration-renderer.md',
|
|
'aio/content/guide/migration-undecorated-classes.md',
|
|
'aio/content/guide/migration-dynamic-flag.md',
|
|
'aio/content/guide/migration-injectable.md',
|
|
'aio/content/guide/migration-localize.md',
|
|
'aio/content/guide/migration-module-with-providers.md',
|
|
'aio/content/guide/static-query-migration.md',
|
|
'aio/content/guide/updating-to-version-10.md',
|
|
'aio/content/guide/ivy-compatibility.md',
|
|
'aio/content/guide/ivy-compatibility-examples.md'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- IgorMinar
|
|
- jelbourn
|
|
|
|
|
|
# =========================================================
|
|
# Tooling: Compiler API shared with Angular CLI
|
|
#
|
|
# Changing this API might break Angular CLI, so we require
|
|
# the CLI team to approve changes here.
|
|
# =========================================================
|
|
tooling-cli-shared-api:
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'packages/compiler-cli/src/tooling.ts'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- alan-agius4
|
|
- clydin
|
|
- kyliau
|
|
- IgorMinar
|
|
reviews:
|
|
request: -1 # request reviews from everyone
|
|
required: 2 # require at least 2 approvals
|
|
reviewed_for: required
|
|
|
|
|
|
# =========================================================
|
|
# Docs: CLI
|
|
# =========================================================
|
|
docs-cli:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'aio/content/cli/**',
|
|
'aio/content/guide/typescript-configuration.md',
|
|
'aio/content/examples/setup/**',
|
|
'aio/content/guide/build.md',
|
|
'aio/content/images/guide/build/**',
|
|
'aio/content/guide/cli-builder.md',
|
|
'aio/content/examples/cli-builder/**',
|
|
'aio/content/guide/deployment.md',
|
|
'aio/content/images/guide/deployment/**',
|
|
'aio/content/guide/file-structure.md',
|
|
'aio/content/guide/ivy.md',
|
|
'aio/content/guide/strict-mode.md',
|
|
'aio/content/guide/web-worker.md',
|
|
'aio/content/guide/workspace-config.md',
|
|
'aio/content/guide/migration-solution-style-tsconfig.md',
|
|
'aio/content/guide/migration-update-module-and-target-compiler-options.md',
|
|
'aio/content/guide/migration-update-libraries-tslib.md',
|
|
])
|
|
reviewers:
|
|
users:
|
|
- clydin
|
|
- IgorMinar
|
|
- mgechev
|
|
|
|
|
|
# =========================================================
|
|
# Docs: CLI Libraries
|
|
# =========================================================
|
|
docs-libraries:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'aio/content/guide/creating-libraries.md',
|
|
'aio/content/guide/libraries.md',
|
|
'aio/content/guide/using-libraries.md'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- alan-agius4
|
|
- IgorMinar
|
|
- mgechev
|
|
|
|
|
|
# =========================================================
|
|
# Docs: Schematics
|
|
# =========================================================
|
|
docs-schematics:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'aio/content/guide/schematics.md',
|
|
'aio/content/guide/schematics-authoring.md',
|
|
'aio/content/guide/schematics-for-libraries.md',
|
|
'aio/content/images/guide/schematics/**',
|
|
'aio/content/examples/schematics-for-libraries/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- alan-agius4
|
|
- IgorMinar
|
|
- mgechev
|
|
|
|
|
|
# =========================================================
|
|
# Docs-infra
|
|
# =========================================================
|
|
docs-infra:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'aio/*',
|
|
'aio/aio-builds-setup/**',
|
|
'aio/content/cli-src/**',
|
|
'aio/content/examples/*',
|
|
'aio/scripts/**',
|
|
'aio/src/**',
|
|
'aio/tests/**',
|
|
'aio/tools/**',
|
|
'aio/content/guide/docs-style-guide.md',
|
|
'aio/content/examples/docs-style-guide/**',
|
|
'aio/content/images/guide/docs-style-guide/**',
|
|
'aio/content/guide/visual-studio-2015.md'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- gkalpak
|
|
- IgorMinar
|
|
- petebacondarwin
|
|
|
|
|
|
# =========================================================
|
|
# Dev-infra
|
|
# =========================================================
|
|
dev-infra:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- >
|
|
contains_any_globs(files.exclude("CHANGELOG.md").exclude("packages/compiler-cli/**/BUILD.bazel"), [
|
|
'*',
|
|
'.circleci/**',
|
|
'.devcontainer/**',
|
|
'.github/**',
|
|
'.ng-dev/**',
|
|
'.vscode/**',
|
|
'.yarn/**',
|
|
'dev-infra/**',
|
|
'docs/BAZEL.md',
|
|
'docs/CARETAKER.md',
|
|
'docs/CODING_STANDARDS.md',
|
|
'docs/COMMITTER.md',
|
|
'docs/DEBUG.md',
|
|
'docs/DEBUG_COMPONENTS_REPO_IVY.md',
|
|
'docs/DEVELOPER.md',
|
|
'docs/GITHUB_PROCESS.md',
|
|
'docs/PR_REVIEW.md',
|
|
'docs/SAVED_REPLIES.md',
|
|
'docs/TOOLS.md',
|
|
'docs/TRIAGE_AND_LABELS.md',
|
|
'goldens/*',
|
|
'modules/*',
|
|
'packages/*',
|
|
'packages/examples/test-utils/**',
|
|
'packages/private/**',
|
|
'packages/examples/*',
|
|
'scripts/**',
|
|
'third_party/**',
|
|
'tools/build/**',
|
|
'tools/circular_dependency_test/**',
|
|
'tools/contributing-stats/**',
|
|
'tools/gulp-tasks/**',
|
|
'tools/npm/**',
|
|
'tools/npm_integration_test/**',
|
|
'tools/rxjs/**',
|
|
'tools/saucelabs/**',
|
|
'tools/size-tracking/**',
|
|
'tools/source-map-test/**',
|
|
'tools/symbol-extractor/**',
|
|
'tools/testing/**',
|
|
'tools/ts-api-guardian/**',
|
|
'tools/tslint/**',
|
|
'tools/utils/**',
|
|
'tools/yarn/**',
|
|
'tools/*',
|
|
'**/*.bzl',
|
|
'**/*.bazel'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- devversion
|
|
- filipesilva
|
|
- gkalpak
|
|
- IgorMinar
|
|
- josephperrott
|
|
|
|
|
|
# =========================================================
|
|
# Public API
|
|
# =========================================================
|
|
public-api:
|
|
<<: *defaults
|
|
conditions:
|
|
- *no-groups-above-this-pending
|
|
- *no-groups-above-this-rejected
|
|
- *can-be-global-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'goldens/public-api/**',
|
|
'CHANGELOG.md',
|
|
'docs/NAMING.md',
|
|
'aio/content/guide/glossary.md',
|
|
'aio/content/guide/styleguide.md',
|
|
'aio/content/examples/styleguide/**',
|
|
'aio/content/images/guide/styleguide/*'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- IgorMinar
|
|
- alxhub
|
|
- jelbourn
|
|
- petebacondarwin
|
|
- pkozlowski-opensource
|
|
reviews:
|
|
request: -1 # request reviews from everyone
|
|
required: 3 # require at least 3 approvals
|
|
reviewed_for: required
|
|
|
|
|
|
# ================================================
|
|
# Size tracking
|
|
# ================================================
|
|
size-tracking:
|
|
<<: *defaults
|
|
conditions:
|
|
- *no-groups-above-this-pending
|
|
- *no-groups-above-this-rejected
|
|
- *can-be-global-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'goldens/size-tracking/**'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- IgorMinar
|
|
- alxhub
|
|
- jelbourn
|
|
- petebacondarwin
|
|
- pkozlowski-opensource
|
|
reviews:
|
|
request: -1 # request reviews from everyone
|
|
required: 2 # require at least 2 approvals
|
|
reviewed_for: required
|
|
|
|
|
|
# ================================================
|
|
# Circular dependencies
|
|
# ================================================
|
|
circular-dependencies:
|
|
<<: *defaults
|
|
conditions:
|
|
- *no-groups-above-this-pending
|
|
- *no-groups-above-this-rejected
|
|
- *can-be-global-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'goldens/circular-deps/packages.json'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- IgorMinar
|
|
- jelbourn
|
|
- josephperrott
|
|
- petebacondarwin
|
|
- pkozlowski-opensource
|
|
|
|
|
|
####################################################################################
|
|
# Special Cases
|
|
####################################################################################
|
|
|
|
# =========================================================
|
|
# Code Ownership
|
|
# =========================================================
|
|
code-ownership:
|
|
<<: *defaults
|
|
conditions:
|
|
- *can-be-global-approved
|
|
- >
|
|
contains_any_globs(files, [
|
|
'.pullapprove.yml'
|
|
])
|
|
reviewers:
|
|
users:
|
|
- IgorMinar
|
|
- jelbourn
|
|
- josephperrott
|
|
- mhevery
|
|
|
|
|
|
# ====================================================
|
|
# 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.
|
|
#
|
|
# The PullApprove CI check should fail if a PR has no `active` groups, as
|
|
# this indicates the PR is modifying a file that has no owner.
|
|
#
|
|
# This is enforced through the pullapprove verification check done
|
|
# as part of the CircleCI lint job. Failures in this lint job should be
|
|
# fixed as part of the PR. This can be done by updating the
|
|
# `.pullapprove.yml` file cover the unmatched path.
|
|
# The pullapprove verification script is part of the ng-dev tool and can be
|
|
# run locally with the command: `yarn -s ng-dev pullapprove verify`
|
|
#
|
|
# For cases in which the verification check fails to ensure coverage, this
|
|
# group will be active. The expectation is that this should be remedied
|
|
# before merging the PR as described above. In an emergency situation
|
|
# `global-approvers` can still approve PRs that match this `fallback` rule,
|
|
# but that should be an exception and not an expectation.
|
|
conditions:
|
|
- *no-groups-above-this-active
|
|
# When any of the `global-*` groups is approved, they cause other groups to deactivate.
|
|
# In those cases, the condition above would evaluate to `true` while in reality, only a global
|
|
# approval has been provided. To ensure we don't activate the fallback group in such cases,
|
|
# ensure that no explicit global approval has been provided.
|
|
- *can-be-global-approved
|
|
- *can-be-global-docs-approved
|