2020-01-16 11:39:09 -05:00
####################################################################################
####################################################################################
# Angular Code Ownership #
####################################################################################
####################################################################################
#
# Configuration of code ownership and review approvals for the angular/angular repo.
2020-01-28 15:52:49 -05:00
#
# More info: https://docs.pullapprove.com/
#
2020-01-16 11:39:09 -05:00
# =========================================================
# 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
####################################################################################
# aikidave - Dave Shevitz
# alan-agius4 - Alan Agius
# alxhub - Alex Rickabaugh
# AndrewKushnir - Andrew Kushnir
# andrewseguin - Andrew Seguin
# atscott - Andrew Scott
2020-02-24 12:34:47 -05:00
# ayazhafiz - Ayaz Hafiz
2020-01-16 11:39:09 -05:00
# 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
2020-01-30 13:54:05 -05:00
# StephenFluin - Stephen Fluin
2020-01-16 11:39:09 -05:00
####################################################################################
# Approval Groups
####################################################################################
# =========================================================
# @angular/framework-global-approvers
# =========================================================
2020-01-28 15:52:49 -05:00
# Used for approving minor changes, large-scale refactorings, and in emergency situations.
#
2020-01-16 11:39:09 -05:00
# IgorMinar
2020-06-05 18:10:13 -04:00
# jelbourn
2020-01-16 11:39:09 -05:00
# josephperrott
# mhevery
#
# =========================================================
# @angular/framework-global-approvers-for-docs-only-changes
# =========================================================
2020-01-28 15:52:49 -05:00
# Used for approving minor documentation-only changes that don't require engineering review.
#
2020-01-16 11:39:09 -05:00
# aikidave
# gkalpak
2020-01-28 15:52:49 -05:00
# kapunahelewong
2020-01-16 11:39:09 -05:00
# petebacondarwin
version : 3
2020-03-30 11:25:39 -04:00
# 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"
2020-01-16 11:39:09 -05:00
# 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 :
2020-01-28 12:29:36 -05:00
- condition : "'WIP' not in title"
2020-01-16 11:39:09 -05:00
unmet_status : pending
explanation : "Waiting to send reviews as PR is WIP"
2020-01-28 12:29:36 -05:00
- condition : "'PR state: WIP' not in labels"
unmet_status : pending
explanation : "Waiting to send reviews as PR is WIP"
2020-02-12 17:30:49 -05:00
- condition : "not draft"
unmet_status : pending
explanation : "Waiting to send reviews as PR is in draft"
2020-01-28 12:29:36 -05:00
2020-01-16 11:39:09 -05:00
groups :
2020-03-30 11:25:39 -04:00
# =========================================================
# Global Approvers
2020-03-07 11:23:11 -05:00
#
2020-03-30 11:25:39 -04:00
# All reviews performed for global approvals require using
# the `Reviewed-for:` specifier to set the approval
2020-03-07 11:23:11 -05:00
# specificity as documented at:
2020-03-30 11:25:39 -04:00
# 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
2020-03-07 11:23:11 -05:00
#
2020-03-30 11:25:39 -04:00
# All reviews performed for global docs approvals require
# using the `Reviewed-for:` specifier to set the approval
2020-03-07 11:23:11 -05:00
# specificity as documented at:
2020-03-30 11:25:39 -04:00
# 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
2020-01-16 11:39:09 -05:00
# =========================================================
# Framework: Animations
# =========================================================
fw-animations :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
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 :
- matsko
# =========================================================
# Framework: Compiler
# =========================================================
fw-compiler :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
2020-04-16 17:18:16 -04:00
contains_any_globs(files.exclude('packages/compiler-cli/ngcc/**'), [
2020-01-16 11:39:09 -05:00
'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 :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-04-16 17:18:16 -04:00
- files.include('packages/compiler-cli/ngcc/**')
2020-01-16 11:39:09 -05:00
reviewers :
users :
- alxhub
- gkalpak
- JoostK
- petebacondarwin
2020-04-16 17:27:33 -04:00
# =========================================================
# Framework: Migrations
# =========================================================
fw-migrations :
conditions :
- *can-be-global-approved
- *can-be-global-docs-approved
- files.include("packages/core/schematics/**")
reviewers :
users :
- alxhub
- crisbeto
- devversion
2020-01-16 11:39:09 -05:00
# =========================================================
# Framework: Core
# =========================================================
fw-core :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
2020-04-16 17:27:33 -04:00
contains_any_globs(files.exclude("packages/core/schematics/**"), [
2020-01-16 11:39:09 -05:00
'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/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/examples/built-in-template-functions/**' ,
'aio/content/examples/event-binding/**' ,
'aio/content/examples/interpolation/**' ,
'aio/content/examples/template-syntax/**' ,
'aio/content/images/guide/template-syntax/**' ,
'aio/content/examples/binding-syntax/**' ,
'aio/content/examples/property-binding/**' ,
'aio/content/examples/attribute-binding/**' ,
'aio/content/examples/two-way-binding/**' ,
'aio/content/examples/built-in-directives/**' ,
'aio/content/images/guide/built-in-directives/**' ,
'aio/content/examples/template-reference-variables/**' ,
'aio/content/examples/inputs-outputs/**' ,
'aio/content/images/guide/inputs-outputs/**' ,
'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/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/images/guide/structural-directives/**' ,
'aio/content/guide/user-input.md' ,
'aio/content/examples/user-input/**' ,
2020-01-28 15:52:49 -05:00
'aio/content/images/guide/user-input/**'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
- alxhub
- AndrewKushnir
2020-05-08 14:36:24 -04:00
- atscott
2020-06-05 18:10:13 -04:00
- ~kara # do not request reviews from Kara, but allow her to approve PRs
2020-01-16 11:39:09 -05:00
- mhevery
- pkozlowski-opensource
# =========================================================
# Framework: Http
# =========================================================
fw-http :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
contains_any_globs(files, [
'packages/common/http/**' ,
'packages/examples/http/**' ,
'aio/content/guide/http.md' ,
'aio/content/examples/http/**' ,
2020-01-28 15:52:49 -05:00
'aio/content/images/guide/http/**'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
- alxhub
- IgorMinar
# =========================================================
# Framework: Elements
# =========================================================
fw-elements :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
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 :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
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/**' ,
2020-01-28 15:52:49 -05:00
'aio/content/images/guide/reactive-forms/**'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
- AndrewKushnir
# =========================================================
# Framework: i18n
# =========================================================
fw-i18n :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
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' ,
2020-01-28 15:52:49 -05:00
'aio/content/examples/i18n/**'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
- AndrewKushnir
- mhevery
- petebacondarwin
# =========================================================
# Framework: Platform Server
# =========================================================
fw-platform-server :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
contains_any_globs(files, [
'packages/platform-server/**' ,
'aio/content/guide/universal.md' ,
2020-01-28 15:52:49 -05:00
'aio/content/examples/universal/**'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
- alxhub
- kyliau
# =========================================================
# Framework: Router
# =========================================================
fw-router :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
contains_any_globs(files, [
'packages/router/**' ,
'packages/examples/router/**' ,
'aio/content/guide/router.md' ,
2020-04-09 13:43:26 -04:00
'aio/content/guide/router-tutorial.md' ,
'aio/content/examples/router-tutorial/**' ,
2020-01-16 11:39:09 -05:00
'aio/content/examples/router/**' ,
2020-01-28 15:52:49 -05:00
'aio/content/images/guide/router/**'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
- atscott
# =========================================================
# Framework: Service Worker
# =========================================================
2020-03-30 10:35:21 -04:00
fw-service-worker :
2020-01-16 11:39:09 -05:00
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
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' ,
2020-01-28 15:52:49 -05:00
'aio/content/images/guide/service-worker/**'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
- alxhub
- gkalpak
- IgorMinar
# =========================================================
# Framework: Upgrade
# =========================================================
fw-upgrade :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
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' ,
2020-01-28 15:52:49 -05:00
'aio/content/examples/ajs-quick-reference/**'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
- gkalpak
- petebacondarwin
# =========================================================
# Framework: Testing
# =========================================================
fw-testing :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
2020-05-20 09:53:13 -04:00
contains_any_globs(files.exclude('packages/compiler-cli/**'), [
2020-01-28 15:52:49 -05:00
'**/testing/**' ,
2020-01-16 11:39:09 -05:00
'aio/content/guide/testing.md' ,
'aio/content/examples/testing/**' ,
2020-01-28 15:52:49 -05:00
'aio/content/images/guide/testing/**'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
2020-04-21 14:47:52 -04:00
- AndrewKushnir
2020-01-16 11:39:09 -05:00
- IgorMinar
- pkozlowski-opensource
2020-01-30 19:10:50 -05:00
# =========================================================
# Framework: Benchmarks
# =========================================================
fw-benchmarks :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
2020-01-30 19:10:50 -05:00
- >
contains_any_globs(files, [
'modules/benchmarks/**'
] )
reviewers :
users :
- IgorMinar
- pkozlowski-opensource
# =========================================================
# Framework: Playground
# =========================================================
fw-playground :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
2020-01-30 19:10:50 -05:00
- >
contains_any_globs(files, [
'modules/playground/**'
] )
reviewers :
users :
- IgorMinar
2020-06-05 18:10:13 -04:00
- jelbourn
- pkozlowski-opensource
2020-01-30 19:10:50 -05:00
2020-01-16 11:39:09 -05:00
# =========================================================
# Framework: Security
# =========================================================
fw-security :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
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/**' ,
2020-01-28 15:52:49 -05:00
'aio/content/images/guide/security/**'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
- IgorMinar
- mhevery
2020-06-05 18:10:13 -04:00
- jelbourn
- pkozlowski-opensource
reviews :
request : -1 # request reviews from everyone
required : 2 # require at least 2 approvals
reviewed_for : required
2020-01-16 11:39:09 -05:00
# =========================================================
# Bazel
# =========================================================
bazel :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
contains_any_globs(files, [
'packages/bazel/**' ,
] )
reviewers :
users :
- IgorMinar
- josephperrott
2020-01-28 15:52:49 -05:00
- kyliau
2020-01-16 11:39:09 -05:00
# =========================================================
# Language Service
# =========================================================
language-service :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
contains_any_globs(files, [
'packages/language-service/**' ,
'aio/content/guide/language-service.md' ,
2020-01-28 15:52:49 -05:00
'aio/content/images/guide/language-service/**'
] )
2020-01-16 11:39:09 -05:00
reviewers :
users :
2020-02-24 12:34:47 -05:00
- ayazhafiz
2020-01-16 11:39:09 -05:00
- kyliau
# =========================================================
# zone.js
# =========================================================
zone-js :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
contains_any_globs(files, [
2019-12-07 09:30:53 -05:00
'packages/zone.js/**' ,
'aio/content/guide/zone.md'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
- JiaLiPassion
- mhevery
# =========================================================
# Benchpress
# =========================================================
benchpress :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
contains_any_globs(files, [
'packages/benchpress/**'
] )
reviewers :
users :
- alxhub
2020-06-05 18:10:13 -04:00
- josephperrott
2020-01-16 11:39:09 -05:00
# =========================================================
# Integration Tests
# =========================================================
integration-tests :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
2020-01-16 11:39:09 -05:00
- >
contains_any_globs(files, [
2020-01-28 15:52:49 -05:00
'integration/**'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
- IgorMinar
- josephperrott
- mhevery
# =========================================================
# Docs: Gettings Started & Tutorial
# =========================================================
docs-getting-started-and-tutorial :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
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/**' ,
2020-01-28 15:52:49 -05:00
'aio/content/images/guide/start/**'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
- aikidave
- IgorMinar
2020-01-30 13:54:05 -05:00
- StephenFluin
2020-01-16 11:39:09 -05:00
# =========================================================
# Docs: Marketing
# =========================================================
docs-marketing :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
contains_any_globs(files, [
'aio/content/marketing/**' ,
'aio/content/images/bios/**' ,
'aio/content/images/marketing/**' ,
2020-01-27 05:51:17 -05:00
'aio/content/file-not-found.md' ,
'aio/content/license.md' ,
'aio/content/navigation.json'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
2020-05-08 12:25:24 -04:00
- aikidave
2020-01-16 11:39:09 -05:00
- IgorMinar
2020-01-30 13:54:05 -05:00
- StephenFluin
2020-01-16 11:39:09 -05:00
# =========================================================
# Docs: Observables
# =========================================================
docs-observables :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
contains_any_globs(files, [
'aio/content/guide/observables.md' ,
'aio/content/examples/observables/**' ,
'aio/content/guide/comparing-observables.md' ,
2020-01-30 19:10:50 -05:00
'aio/content/examples/comparing-observables/**' ,
2020-01-16 11:39:09 -05:00
'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' ,
2020-01-28 15:52:49 -05:00
'aio/content/examples/rx-library/**'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
- alxhub
# =========================================================
# Docs: Packaging, Tooling, Releasing
# =========================================================
docs-packaging-and-releasing :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
contains_any_globs(files, [
2020-01-30 19:10:50 -05:00
'docs/PUBLIC_API.md' ,
'docs/RELEASE_SCHEDULE.md' ,
2020-01-16 11:39:09 -05:00
'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-9.md' ,
'aio/content/guide/ivy-compatibility.md' ,
'aio/content/guide/ivy-compatibility-examples.md'
] )
reviewers :
users :
- IgorMinar
2020-06-05 18:10:13 -04:00
- jelbourn
2020-01-16 11:39:09 -05:00
2020-06-05 19:27:53 -04:00
# =========================================================
# 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
2020-01-16 11:39:09 -05:00
# =========================================================
# Docs: CLI
# =========================================================
docs-cli :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
contains_any_globs(files, [
2020-01-27 05:51:17 -05:00
'aio/content/cli/**' ,
2020-01-28 15:52:49 -05:00
'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' ,
2020-04-16 14:12:25 -04:00
'aio/content/guide/web-worker.md' ,
2020-01-28 15:52:49 -05:00
'aio/content/guide/workspace-config.md' ,
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
- clydin
- IgorMinar
- mgechev
# =========================================================
# Docs: CLI Libraries
# =========================================================
docs-libraries :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
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 :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
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 :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
- *can-be-global-docs-approved
2020-01-16 11:39:09 -05:00
- >
contains_any_globs(files, [
'aio/*' ,
'aio/aio-builds-setup/**' ,
2020-01-27 05:51:17 -05:00
'aio/content/cli-src/**' ,
2020-01-16 11:39:09 -05:00
'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/**' ,
2020-03-17 16:28:33 -04:00
'aio/content/guide/visual-studio-2015.md'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
- gkalpak
- IgorMinar
- petebacondarwin
# =========================================================
# Dev-infra
# =========================================================
dev-infra :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
2020-01-16 11:39:09 -05:00
- >
2020-05-15 18:00:33 -04:00
contains_any_globs(files.exclude("CHANGELOG.md"), [
2020-01-16 11:39:09 -05:00
'*' ,
'.circleci/**' ,
'.devcontainer/**' ,
'.github/**' ,
2020-05-15 17:19:08 -04:00
'.ng-dev/**' ,
2020-01-16 11:39:09 -05:00
'.vscode/**' ,
2020-01-28 15:52:49 -05:00
'.yarn/**' ,
2020-03-04 12:42:45 -05:00
'dev-infra/**' ,
2020-01-16 11:39:09 -05:00
'docs/BAZEL.md' ,
2020-01-30 19:10:50 -05:00
'docs/CARETAKER.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' ,
2020-02-26 12:09:35 -05:00
'goldens/*' ,
2020-01-30 19:10:50 -05:00
'modules/*' ,
2020-01-16 11:39:09 -05:00
'packages/*' ,
'packages/examples/test-utils/**' ,
'packages/private/**' ,
2020-01-30 19:10:50 -05:00
'packages/examples/*' ,
2020-01-16 11:39:09 -05:00
'scripts/**' ,
'third_party/**' ,
'tools/build/**' ,
2020-01-28 15:52:49 -05:00
'tools/circular_dependency_test/**' ,
2020-03-03 13:16:18 -05:00
'tools/contributing-stats/**' ,
2020-01-16 11:39:09 -05:00
'tools/gulp-tasks/**' ,
'tools/ngcontainer/**' ,
'tools/npm/**' ,
2020-02-04 14:45:40 -05:00
'tools/npm_integration_test/**' ,
2020-01-16 11:39:09 -05:00
'tools/rxjs/**' ,
2020-01-28 15:52:49 -05:00
'tools/saucelabs/**' ,
2020-01-16 11:39:09 -05:00
'tools/size-tracking/**' ,
'tools/source-map-test/**' ,
'tools/symbol-extractor/**' ,
'tools/testing/**' ,
'tools/ts-api-guardian/**' ,
'tools/tslint/**' ,
2020-02-12 12:50:30 -05:00
'tools/utils/**' ,
2020-01-16 11:39:09 -05:00
'tools/yarn/**' ,
'tools/*' ,
2020-01-28 15:52:49 -05:00
'**/*.bzl' ,
'**/*.bazel'
2020-01-16 11:39:09 -05:00
] )
reviewers :
users :
- devversion
- filipesilva
- gkalpak
- IgorMinar
- josephperrott
# =========================================================
# Public API
# =========================================================
public-api :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
2020-01-16 11:39:09 -05:00
- >
contains_any_globs(files, [
2020-02-26 12:09:35 -05:00
'goldens/public-api/**' ,
2020-05-15 18:00:33 -04:00
'CHANGELOG.md' ,
2020-01-30 19:10:50 -05:00
'docs/NAMING.md' ,
2020-01-16 11:39:09 -05:00
'aio/content/guide/glossary.md' ,
'aio/content/guide/styleguide.md' ,
'aio/content/examples/styleguide/**' ,
'aio/content/images/guide/styleguide/*'
] )
reviewers :
users :
2020-06-05 18:10:13 -04:00
- alxhub
2020-01-16 11:39:09 -05:00
- IgorMinar
2020-06-05 18:10:13 -04:00
- jelbourn
- pkozlowski-opensource
reviews :
request : -1 # request reviews from everyone
required : 3 # require at least 3 approvals
reviewed_for : required
2020-01-16 11:39:09 -05:00
# ================================================
# Size tracking
# ================================================
size-tracking :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
2020-01-16 11:39:09 -05:00
- >
contains_any_globs(files, [
2020-04-06 12:42:02 -04:00
'goldens/size-tracking/**'
2020-01-28 15:52:49 -05:00
] )
2020-01-16 11:39:09 -05:00
reviewers :
users :
2020-06-05 18:10:13 -04:00
- alxhub
2020-01-16 11:39:09 -05:00
- IgorMinar
2020-06-05 18:10:13 -04:00
- jelbourn
- pkozlowski-opensource
reviews :
request : -1 # request reviews from everyone
required : 2 # require at least 2 approvals
reviewed_for : required
2020-01-16 11:39:09 -05:00
2020-02-24 06:08:24 -05:00
# ================================================
# Circular dependencies
# ================================================
circular-dependencies :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
2020-02-24 06:08:24 -05:00
- >
contains_any_globs(files, [
2020-04-14 16:37:54 -04:00
'goldens/circular-deps/packages.json'
2020-02-24 06:08:24 -05:00
] )
reviewers :
users :
- IgorMinar
2020-06-05 18:10:13 -04:00
- jelbourn
2020-02-24 06:08:24 -05:00
- josephperrott
2020-06-05 18:10:13 -04:00
- pkozlowski-opensource
2020-02-24 06:08:24 -05:00
2020-01-16 11:39:09 -05:00
####################################################################################
# Special Cases
####################################################################################
# =========================================================
# Code Ownership
# =========================================================
code-ownership :
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
2020-01-16 11:39:09 -05:00
- >
contains_any_globs(files, [
'.pullapprove.yml'
] )
reviewers :
users :
- IgorMinar
# ====================================================
# Catch all for if no groups match the code change
# ====================================================
fallback :
2020-04-06 14:03:40 -04:00
# 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.
2020-01-16 11:39:09 -05:00
conditions :
2020-03-30 11:25:39 -04:00
- *can-be-global-approved
2020-04-06 14:03:40 -04:00
# The following groups have no conditions and will be `active` on all PRs
# - `global-approvers`
# - `global-docs-approvers`
#
# Since this means the minimum number of active groups a PR can have is 2, this
# `fallback` group should be matched anytime the number of active groups is at or
# below this minimum. This work as a protection to ensure that pullapprove does
# not incidently mark a PR as passing without meeting the review criteria.
- len(groups.active) <= 2