From 538c1dcd2766aa14f9061a0c0b5e9a12378a46b0 Mon Sep 17 00:00:00 2001 From: "Andy De George (adegeo)" Date: Thu, 19 Dec 2024 09:46:01 -0800 Subject: [PATCH 1/9] new policy configs --- .../policies/issueManagement-emptyIssue.yml | 28 ++++++++ .../policies/issueManagement-notTriaged.yml | 54 +++++++++++++++ .github/policies/labelAdded-mapQuest.yml | 25 +++++++ .../pullRequestManagement-serviceLabels.yml | 65 +++++++++++++++++++ 4 files changed, 172 insertions(+) create mode 100644 .github/policies/issueManagement-emptyIssue.yml create mode 100644 .github/policies/issueManagement-notTriaged.yml create mode 100644 .github/policies/labelAdded-mapQuest.yml create mode 100644 .github/policies/pullRequestManagement-serviceLabels.yml diff --git a/.github/policies/issueManagement-emptyIssue.yml b/.github/policies/issueManagement-emptyIssue.yml new file mode 100644 index 0000000000000..0fb0fe559098e --- /dev/null +++ b/.github/policies/issueManagement-emptyIssue.yml @@ -0,0 +1,28 @@ +id: issueManagement.emptyIssue +name: GitOps.EmptyIssue +description: Checks for an issue created via learn that has an empty description from the template. +owner: +resource: repository +disabled: false +where: +configuration: + resourceManagementConfiguration: + eventResponderTasks: + - description: Close an issue created with the learn template that has an empty body. + if: + - payloadType: Issues + - bodyContains: + pattern: '### Description[\n\r]+\[Enter feedback here\][\n\r]+###' + isRegex: true + then: + - addLabel: 'needs-more-info' + - removeLabel: ':watch: Not Triaged' + - closeIssue + + triggerOnOwnActions: false + +onFailure: +onSuccess: + + + diff --git a/.github/policies/issueManagement-notTriaged.yml b/.github/policies/issueManagement-notTriaged.yml new file mode 100644 index 0000000000000..bc5339fc53154 --- /dev/null +++ b/.github/policies/issueManagement-notTriaged.yml @@ -0,0 +1,54 @@ +id: issueManagement.notTriaged +name: GitOps.NotTriagedHandler +description: Ensures the Not Triaged label is added or removed when appropriate +owner: +resource: repository +disabled: false +where: +configuration: + resourceManagementConfiguration: + eventResponderTasks: + - description: >- + Add "not triaged" label when: + * Issue is opened + * Issue is reopened + * 'needs-more-info' label removed + if: + - payloadType: Issues + - or: + + - or: + - isAction: + action: Opened + - isAction: + action: Reopened + + - labelRemoved: + label: 'needs-more-info' + then: + - addLabel: ':watch: Not Triaged' + triggerOnOwnActions: false + + - description: >- + Remove "not triaged" label when: + * Issue author closes the issue + * reQUEST label is added + if: + - payloadType: Issues + - hasLabel: + label: ':watch: Not Triaged' + - or: + - and: + - isAction: + action: Closed + - isActivitySender: + issueAuthor: true + + - labelAdded: + label: ':world_map: reQUEST' + then: + - removeLabel: ':watch: Not Triaged' + triggerOnOwnActions: false + +onFailure: +onSuccess: diff --git a/.github/policies/labelAdded-mapQuest.yml b/.github/policies/labelAdded-mapQuest.yml new file mode 100644 index 0000000000000..4847c8fcc8200 --- /dev/null +++ b/.github/policies/labelAdded-mapQuest.yml @@ -0,0 +1,25 @@ +id: labelAdded.mapQuest +name: GitOps.MapQuestHandler +description: Handles when "mapQUEST" label is added +owner: +resource: repository +disabled: false +where: +configuration: + resourceManagementConfiguration: + eventResponderTasks: + - description: >- + When the label "mapQUEST" is added to an issue + * Remove label "mapQUEST" + if: + - or: + - payloadType: Issues + - payloadType: Pull_Request + + - labelAdded: + label: ':world_map: mapQUEST' + then: + - removeLabel: ':world_map: mapQUEST' + triggerOnOwnActions: true +onFailure: +onSuccess: diff --git a/.github/policies/pullRequestManagement-serviceLabels.yml b/.github/policies/pullRequestManagement-serviceLabels.yml new file mode 100644 index 0000000000000..cf50d7537838d --- /dev/null +++ b/.github/policies/pullRequestManagement-serviceLabels.yml @@ -0,0 +1,65 @@ +id: pullRequestManagement.serviceLabels +name: GitOps.PullRequestServiceLabels +description: Checks the files touched by a pull request and assigns area labels. +owner: +resource: repository +disabled: false +where: +configuration: + resourceManagementConfiguration: + eventResponderTasks: + - description: Add labels to PRs that touch certain files + triggerOnOwnActions: false + if: + - payloadType: Pull_Request + - or: + - isAction: + Opened + - isAction: + Synchronize + - not: + targetsBranch: + branch: live + then: + # Framework WPF + - if: + - filesMatchPattern: + pattern: '(?i).*dotnet-desktop-guide\/framework\/wpf.*' + then: + - addLabel: + label: 'dotnet-framework/svc' + - addLabel: + label: 'wpf/subsvc' + + # Framework WinForms + - if: + - filesMatchPattern: + pattern: '(?i).*dotnet-desktop-guide\/framework\/winforms.*' + then: + - addLabel: + label: 'dotnet-framework/svc' + - addLabel: + label: 'winforms/subsvc' + + # .NET WPF + - if: + - filesMatchPattern: + pattern: '(?i).*dotnet-desktop-guide\/net\/wpf.*' + then: + - addLabel: + label: 'dotnet-desktop/svc' + - addLabel: + label: 'wpf/subsvc' + + # .NET WinForms + - if: + - filesMatchPattern: + pattern: '(?i).*dotnet-desktop-guide\/net\/winforms.*' + then: + - addLabel: + label: 'dotnet-desktop/svc' + - addLabel: + label: 'winforms/subsvc' + +onFailure: +onSuccess: From 9fea49d254728acb82809add98e4eb04911f1e76 Mon Sep 17 00:00:00 2001 From: "Andy De George (adegeo)" Date: Thu, 19 Dec 2024 09:47:26 -0800 Subject: [PATCH 2/9] updated existing issue policy --- .github/policies/label-issues.yml | 56 +++++++++++++++++++++++++++++-- 1 file changed, 53 insertions(+), 3 deletions(-) diff --git a/.github/policies/label-issues.yml b/.github/policies/label-issues.yml index 7ced254b88bd3..355129250e5a4 100644 --- a/.github/policies/label-issues.yml +++ b/.github/policies/label-issues.yml @@ -1,6 +1,6 @@ -id: -name: GitOps.PullRequestIssueManagement -description: GitOps.PullRequestIssueManagement primitive +id: label.issues +name: GitOps.IssueManagement +description: Management logic around issues owner: resource: repository disabled: false @@ -24,6 +24,56 @@ configuration: label: okr-quality eventResponderTasks: + - description: Label dependabot issues + if: + - payloadType: Issues + - isAction: + action: Opened + - or: + - isActivitySender: + user: dependabot + - isActivitySender: + user: dependabot[bot] + then: + - addLabel: + label: dependencies + + - description: Reopen issue so remove "won't fix" label + if: + - payloadType: Issues + - isAction: + action: Reopened + - hasLabel: + label: "won't fix" + + then: + - removeLabel: + label: "won't fix" + + - description: Remove "in-progress" label when issue closed + if: + - payloadType: Issues + - isAction: + action: Closed + - hasLabel: + label: 'in-progress' + + then: + - removeLabel: + label: 'in-progress' + + - description: Issue closed by author, add "resolved-by-customer" label + if: + - payloadType: Issues + - isAction: + action: Closed + - isActivitySender: + issueAuthor: true + + then: + - addLabel: + label: resolved-by-customer + - description: Add in-pr label to issues if: - payloadType: Pull_Request From 0a200f57aa584a6055ac550f868495e762a2fd79 Mon Sep 17 00:00:00 2001 From: "Andy De George (adegeo)" Date: Thu, 19 Dec 2024 09:49:20 -0800 Subject: [PATCH 3/9] Remove PR area label policy; not fully working --- .../pullRequestManagement-serviceLabels.yml | 65 ------------------- 1 file changed, 65 deletions(-) delete mode 100644 .github/policies/pullRequestManagement-serviceLabels.yml diff --git a/.github/policies/pullRequestManagement-serviceLabels.yml b/.github/policies/pullRequestManagement-serviceLabels.yml deleted file mode 100644 index cf50d7537838d..0000000000000 --- a/.github/policies/pullRequestManagement-serviceLabels.yml +++ /dev/null @@ -1,65 +0,0 @@ -id: pullRequestManagement.serviceLabels -name: GitOps.PullRequestServiceLabels -description: Checks the files touched by a pull request and assigns area labels. -owner: -resource: repository -disabled: false -where: -configuration: - resourceManagementConfiguration: - eventResponderTasks: - - description: Add labels to PRs that touch certain files - triggerOnOwnActions: false - if: - - payloadType: Pull_Request - - or: - - isAction: - Opened - - isAction: - Synchronize - - not: - targetsBranch: - branch: live - then: - # Framework WPF - - if: - - filesMatchPattern: - pattern: '(?i).*dotnet-desktop-guide\/framework\/wpf.*' - then: - - addLabel: - label: 'dotnet-framework/svc' - - addLabel: - label: 'wpf/subsvc' - - # Framework WinForms - - if: - - filesMatchPattern: - pattern: '(?i).*dotnet-desktop-guide\/framework\/winforms.*' - then: - - addLabel: - label: 'dotnet-framework/svc' - - addLabel: - label: 'winforms/subsvc' - - # .NET WPF - - if: - - filesMatchPattern: - pattern: '(?i).*dotnet-desktop-guide\/net\/wpf.*' - then: - - addLabel: - label: 'dotnet-desktop/svc' - - addLabel: - label: 'wpf/subsvc' - - # .NET WinForms - - if: - - filesMatchPattern: - pattern: '(?i).*dotnet-desktop-guide\/net\/winforms.*' - then: - - addLabel: - label: 'dotnet-desktop/svc' - - addLabel: - label: 'winforms/subsvc' - -onFailure: -onSuccess: From 60968aed578ecf5761f20047a51f14f83f6f130c Mon Sep 17 00:00:00 2001 From: "Andy De George (adegeo)" Date: Thu, 19 Dec 2024 09:52:06 -0800 Subject: [PATCH 4/9] remove repoman functions covered by policy --- .repoman.yml | 106 ++------------------------------------------------- 1 file changed, 3 insertions(+), 103 deletions(-) diff --git a/.repoman.yml b/.repoman.yml index f39d4d341fa6d..0fc3b39170e50 100644 --- a/.repoman.yml +++ b/.repoman.yml @@ -1,4 +1,4 @@ -revision: 6 +revision: 7 schema-version: 5 owner-ms-alias: adegeo @@ -14,81 +14,7 @@ config: issues: - unlabeled: "labeled" - - labeled: - - # Temporary label to mark issues as updated for Quest. The label is instantly removed - - check: - - type: query - value: "length(Issue.Labels[?Name == ':world_map: mapQUEST']) != `0`" - pass: - - labels-remove: [":world_map: mapQUEST"] - - # Handle issues with /svc /subsvc labels from label bot - - check: - - type: query - value: "length(Issue.Labels[?contains(Name, '/svc') || contains(Name, '/subsvc')]) != `0`" - - # If the issue has a /svc or /subsvc label, it must be categorized otherwise it's considered untriaged - pass: - - check: - - type: query - value: "length(Issue.Labels[?Name == ':pushpin: seQUESTered' || Name == ':world_map: reQUEST' || Name == 'training-module' || Name == 'doc-enhancement' || Name == 'product-question' || Name == 'in-progress' || Name == 'test-issue' || Name == 'kudos' || Name == 'loc' || Name == 'doc-bug' || Name == 'product-feedback' || Name == 'code-of-conduct' || Name == 'support-request' || Name == 'duplicate' || Name == 'resolved-by-customer' || Name == 'docs-experience' || Name == 'doc-provided' || Name == 'doc-idea' || Name == 'needs-more-info']) != `0`" - pass: - - labels-remove: [":watch: Not Triaged"] - fail: - - labels-add: [":watch: Not Triaged"] - - # Not an doc issue specifically - fail: - - # If the issue is open, then we'll allow some further processing on it. If it's closed, ignore it and let the user do what they want. - - check: - - type: query - value: "Issue.State.StringValue == 'open'" - - pass: - - check: - - type: query - value: "length(Issue.Labels[?Name == ':pushpin: seQUESTered' || Name == ':world_map: reQUEST' || Name == 'training-module' || Name == 'video-content'] || Name == 'test-issue') != `0`" - pass: - - labels-remove: [":watch: Not Triaged"] - fail: - - labels-add: [":watch: Not Triaged"] - - # Checks for binary/source incompatible checkboxes and adds a label - - check: - - type: query - value: "contains(InstanceData.IssuePrBody, '- [x] **Binary incompatible**') == `true` || contains(InstanceData.IssuePrBody, '- [X] **Binary incompatible**') == `true`" - pass: - - labels-add: ["binary incompatible"] - - - check: - - type: query - value: "contains(InstanceData.IssuePrBody, '- [x] **Source incompatible**') == `true` || contains(InstanceData.IssuePrBody, '- [X] **Source incompatible**') == `true`" - pass: - - labels-add: ["source incompatible"] - opened: - # New issue opened, add Not Triaged - - labels-add: [":watch: Not Triaged"] - - # Dependabot opened issue, label it - - check: - - type: query - value: "Issue.User.Login == 'dependabot'" - pass: - - labels-add: ["dependencies"] - - # Try to detect an empty issue - - check: - - type: comment-body - value: "### Description[\\n\\r]+\\[Enter feedback here\\][\\n\\r]+###" - pass: - - labels-add: ["needs-more-info"] - - labels-remove: [":watch: Not Triaged"] - - close # Add links to related issues if it's a doc issue - check: @@ -98,23 +24,10 @@ issues: pass: - link-related-issues - reopened: - - # Remove won't fix label - - labels-remove: ["won't fix"] - - closed: - - # Issue closed, remove in-progress and not triaged labels - - labels-remove: ["in-progress", ":watch: Not Triaged"] - - # Check if the issue was closed by the user who opened it - check: - - type: query - value: "Issue.User.Id == EventPayload.sender.id" + - type: metadata-exists pass: - - labels-add: ["resolved-by-customer"] - - labels-remove: [":watch: Not Triaged"] + - svc_subsvc_labels: true projects_v2_item: @@ -410,16 +323,3 @@ pull_request: - path: "(?i).*docs\/visual-basic\/misc.*" run: - labels-add: ["dotnet-visualbasic/svc", "errors-warnings/subsvc"] - -issue_comment: - - created: - - # someone creates a comment with #please-review in it, add changes-addressed label - - check: - - type: query - value: "Issue.State.StringValue == 'open' && Issue.User.Id == Comment.User.Id" - - type: comment-body - value: ^#please-review$ - pass: - - labels-add: ["changes-addressed"] From d6b40ff472944a53be8e480cf55ecb9819258625 Mon Sep 17 00:00:00 2001 From: "Andy De George (adegeo)" Date: Thu, 19 Dec 2024 11:47:13 -0800 Subject: [PATCH 5/9] rename --- .../policies/{issueManagement-emptyIssue.yml => issue-empty.yml} | 0 .github/policies/{labelAdded-mapQuest.yml => label-map-quest.yml} | 0 .../{issueManagement-notTriaged.yml => label-not-triaged.yml} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename .github/policies/{issueManagement-emptyIssue.yml => issue-empty.yml} (100%) rename .github/policies/{labelAdded-mapQuest.yml => label-map-quest.yml} (100%) rename .github/policies/{issueManagement-notTriaged.yml => label-not-triaged.yml} (100%) diff --git a/.github/policies/issueManagement-emptyIssue.yml b/.github/policies/issue-empty.yml similarity index 100% rename from .github/policies/issueManagement-emptyIssue.yml rename to .github/policies/issue-empty.yml diff --git a/.github/policies/labelAdded-mapQuest.yml b/.github/policies/label-map-quest.yml similarity index 100% rename from .github/policies/labelAdded-mapQuest.yml rename to .github/policies/label-map-quest.yml diff --git a/.github/policies/issueManagement-notTriaged.yml b/.github/policies/label-not-triaged.yml similarity index 100% rename from .github/policies/issueManagement-notTriaged.yml rename to .github/policies/label-not-triaged.yml From b0ee482bb7d20256d2dfd92c6168ef127ecc091a Mon Sep 17 00:00:00 2001 From: "Andy (Steve) De George" <67293991+adegeo@users.noreply.github.com> Date: Thu, 19 Dec 2024 11:50:52 -0800 Subject: [PATCH 6/9] Apply suggestions from code review Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com> --- .github/policies/label-issues.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/policies/label-issues.yml b/.github/policies/label-issues.yml index 355129250e5a4..027434a751e69 100644 --- a/.github/policies/label-issues.yml +++ b/.github/policies/label-issues.yml @@ -38,7 +38,7 @@ configuration: - addLabel: label: dependencies - - description: Reopen issue so remove "won't fix" label + - description: Remove "won't fix" label when issue is reopened if: - payloadType: Issues - isAction: @@ -62,7 +62,7 @@ configuration: - removeLabel: label: 'in-progress' - - description: Issue closed by author, add "resolved-by-customer" label + - description: Add "resolved-by-customer" label when issue closed by author. if: - payloadType: Issues - isAction: From 18881e67f3fa73d4e12ff065b946e91881bae638 Mon Sep 17 00:00:00 2001 From: "Andy De George (adegeo)" Date: Thu, 19 Dec 2024 11:55:03 -0800 Subject: [PATCH 7/9] move items around --- .github/policies/close-issues.yml | 13 ++++++ .github/policies/issue-empty.yml | 28 ------------- .github/policies/label-issues.yml | 56 ++++++++++++++++++++++++++ .github/policies/label-map-quest.yml | 25 ------------ .github/policies/label-not-triaged.yml | 54 ------------------------- 5 files changed, 69 insertions(+), 107 deletions(-) delete mode 100644 .github/policies/issue-empty.yml delete mode 100644 .github/policies/label-map-quest.yml delete mode 100644 .github/policies/label-not-triaged.yml diff --git a/.github/policies/close-issues.yml b/.github/policies/close-issues.yml index da7d8071bac24..889a6c27b0d4a 100644 --- a/.github/policies/close-issues.yml +++ b/.github/policies/close-issues.yml @@ -42,3 +42,16 @@ configuration: label: code-of-conduct then: - closeIssue + + - description: Close learn template issues with empty descriptions. (spam) + if: + - payloadType: Issues + - bodyContains: + pattern: '### Description[\n\r]+\[Enter feedback here\][\n\r]+###' + isRegex: true + then: + - addLabel: 'needs-more-info' + - removeLabel: ':watch: Not Triaged' + - closeIssue + + triggerOnOwnActions: false diff --git a/.github/policies/issue-empty.yml b/.github/policies/issue-empty.yml deleted file mode 100644 index 0fb0fe559098e..0000000000000 --- a/.github/policies/issue-empty.yml +++ /dev/null @@ -1,28 +0,0 @@ -id: issueManagement.emptyIssue -name: GitOps.EmptyIssue -description: Checks for an issue created via learn that has an empty description from the template. -owner: -resource: repository -disabled: false -where: -configuration: - resourceManagementConfiguration: - eventResponderTasks: - - description: Close an issue created with the learn template that has an empty body. - if: - - payloadType: Issues - - bodyContains: - pattern: '### Description[\n\r]+\[Enter feedback here\][\n\r]+###' - isRegex: true - then: - - addLabel: 'needs-more-info' - - removeLabel: ':watch: Not Triaged' - - closeIssue - - triggerOnOwnActions: false - -onFailure: -onSuccess: - - - diff --git a/.github/policies/label-issues.yml b/.github/policies/label-issues.yml index 027434a751e69..12aaed2e3f3cf 100644 --- a/.github/policies/label-issues.yml +++ b/.github/policies/label-issues.yml @@ -24,6 +24,62 @@ configuration: label: okr-quality eventResponderTasks: + - description: >- + Add "not triaged" label when: + * Issue is opened + * Issue is reopened + * 'needs-more-info' label removed + if: + - payloadType: Issues + - or: + + - or: + - isAction: + action: Opened + - isAction: + action: Reopened + + - labelRemoved: + label: 'needs-more-info' + then: + - addLabel: ':watch: Not Triaged' + triggerOnOwnActions: false + + - description: >- + Remove "not triaged" label when: + * Issue author closes the issue + * reQUEST label is added + if: + - payloadType: Issues + - hasLabel: + label: ':watch: Not Triaged' + - or: + - and: + - isAction: + action: Closed + - isActivitySender: + issueAuthor: true + + - labelAdded: + label: ':world_map: reQUEST' + then: + - removeLabel: ':watch: Not Triaged' + triggerOnOwnActions: false + + - description: >- + When the label "mapQUEST" is added to an issue + * Remove label "mapQUEST" + if: + - or: + - payloadType: Issues + - payloadType: Pull_Request + + - labelAdded: + label: ':world_map: mapQUEST' + then: + - removeLabel: ':world_map: mapQUEST' + triggerOnOwnActions: false + - description: Label dependabot issues if: - payloadType: Issues diff --git a/.github/policies/label-map-quest.yml b/.github/policies/label-map-quest.yml deleted file mode 100644 index 4847c8fcc8200..0000000000000 --- a/.github/policies/label-map-quest.yml +++ /dev/null @@ -1,25 +0,0 @@ -id: labelAdded.mapQuest -name: GitOps.MapQuestHandler -description: Handles when "mapQUEST" label is added -owner: -resource: repository -disabled: false -where: -configuration: - resourceManagementConfiguration: - eventResponderTasks: - - description: >- - When the label "mapQUEST" is added to an issue - * Remove label "mapQUEST" - if: - - or: - - payloadType: Issues - - payloadType: Pull_Request - - - labelAdded: - label: ':world_map: mapQUEST' - then: - - removeLabel: ':world_map: mapQUEST' - triggerOnOwnActions: true -onFailure: -onSuccess: diff --git a/.github/policies/label-not-triaged.yml b/.github/policies/label-not-triaged.yml deleted file mode 100644 index bc5339fc53154..0000000000000 --- a/.github/policies/label-not-triaged.yml +++ /dev/null @@ -1,54 +0,0 @@ -id: issueManagement.notTriaged -name: GitOps.NotTriagedHandler -description: Ensures the Not Triaged label is added or removed when appropriate -owner: -resource: repository -disabled: false -where: -configuration: - resourceManagementConfiguration: - eventResponderTasks: - - description: >- - Add "not triaged" label when: - * Issue is opened - * Issue is reopened - * 'needs-more-info' label removed - if: - - payloadType: Issues - - or: - - - or: - - isAction: - action: Opened - - isAction: - action: Reopened - - - labelRemoved: - label: 'needs-more-info' - then: - - addLabel: ':watch: Not Triaged' - triggerOnOwnActions: false - - - description: >- - Remove "not triaged" label when: - * Issue author closes the issue - * reQUEST label is added - if: - - payloadType: Issues - - hasLabel: - label: ':watch: Not Triaged' - - or: - - and: - - isAction: - action: Closed - - isActivitySender: - issueAuthor: true - - - labelAdded: - label: ':world_map: reQUEST' - then: - - removeLabel: ':watch: Not Triaged' - triggerOnOwnActions: false - -onFailure: -onSuccess: From 1e00013c942b14d67a396806d99b6b172ec03e0c Mon Sep 17 00:00:00 2001 From: "Andy De George (adegeo)" Date: Thu, 19 Dec 2024 12:02:00 -0800 Subject: [PATCH 8/9] minor --- .github/policies/close-issues.yml | 5 +++-- .github/policies/label-issues.yml | 3 --- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/.github/policies/close-issues.yml b/.github/policies/close-issues.yml index 889a6c27b0d4a..467f33ec20d03 100644 --- a/.github/policies/close-issues.yml +++ b/.github/policies/close-issues.yml @@ -34,6 +34,7 @@ configuration: then: - removeLabel: label: needs-more-info + triggerOnOwnActions: true - description: Close issues labeled 'code-of-conduct' if: @@ -52,6 +53,6 @@ configuration: then: - addLabel: 'needs-more-info' - removeLabel: ':watch: Not Triaged' + - addReply: + reply: This issue has been automatically closed due to an empty issue description from the original author. Feel free to reopen it if you have more information that can help us investigate the issue further. - closeIssue - - triggerOnOwnActions: false diff --git a/.github/policies/label-issues.yml b/.github/policies/label-issues.yml index 12aaed2e3f3cf..af3fd34ba4780 100644 --- a/.github/policies/label-issues.yml +++ b/.github/policies/label-issues.yml @@ -43,7 +43,6 @@ configuration: label: 'needs-more-info' then: - addLabel: ':watch: Not Triaged' - triggerOnOwnActions: false - description: >- Remove "not triaged" label when: @@ -64,7 +63,6 @@ configuration: label: ':world_map: reQUEST' then: - removeLabel: ':watch: Not Triaged' - triggerOnOwnActions: false - description: >- When the label "mapQUEST" is added to an issue @@ -78,7 +76,6 @@ configuration: label: ':world_map: mapQUEST' then: - removeLabel: ':world_map: mapQUEST' - triggerOnOwnActions: false - description: Label dependabot issues if: From fac6829863671d15cab533abbe87e326a791d854 Mon Sep 17 00:00:00 2001 From: "Andy De George (adegeo)" Date: Fri, 20 Dec 2024 17:21:22 -0800 Subject: [PATCH 9/9] Migrate PR file processing out of repoman --- .github/policies/label-prs-services.yml | 676 ++++++++++++++++++++++++ .repoman.yml | 273 +--------- 2 files changed, 677 insertions(+), 272 deletions(-) create mode 100644 .github/policies/label-prs-services.yml diff --git a/.github/policies/label-prs-services.yml b/.github/policies/label-prs-services.yml new file mode 100644 index 0000000000000..bf0d5da53b678 --- /dev/null +++ b/.github/policies/label-prs-services.yml @@ -0,0 +1,676 @@ +id: pullRequestManagement.serviceLabels +name: GitOps.PullRequestServiceLabels +description: Checks the files touched by a pull request and assigns area labels. +owner: +resource: repository +disabled: false +where: +configuration: + resourceManagementConfiguration: + eventResponderTasks: + - description: Add labels to PRs that touch certain files + triggerOnOwnActions: false + if: + - payloadType: Pull_Request + - or: + - isAction: + action: Opened + - isAction: + action: Synchronize + - not: + targetsBranch: + branch: live + then: + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*_csharplang.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: lang-spec/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*_csharpstandard.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: lang-spec/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*_vblang/spec.* + then: + - addLabel: + label: dotnet-visualbasic/svc + - addLabel: + label: vb-spec/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/architecture.* + then: + - addLabel: + label: dotnet-architecture/svc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/architecture/blazor-for-web-forms-developers.* + then: + - addLabel: + label: dotnet-architecture/svc + - addLabel: + label: blazor/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/architecture/cloud-native.* + then: + - addLabel: + label: dotnet-architecture/svc + - addLabel: + label: cloud-native/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/architecture/containerized-lifecycle.* + then: + - addLabel: + label: dotnet-architecture/svc + - addLabel: + label: containerized-lifecycle/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/architecture/grpc-for-wcf-developers.* + then: + - addLabel: + label: dotnet-architecture/svc + - addLabel: + label: grpc/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/architecture/microservices.* + then: + - addLabel: + label: dotnet-architecture/svc + - addLabel: + label: microservices/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/architecture/modernize-with-azure-containers.* + then: + - addLabel: + label: dotnet-architecture/svc + - addLabel: + label: modernize-with-azure-containers/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/architecture/modern-web-apps-azure.* + then: + - addLabel: + label: dotnet-architecture/svc + - addLabel: + label: modern-web-apps-azure/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/architecture/serverless.* + then: + - addLabel: + label: dotnet-architecture/svc + - addLabel: + label: serverless/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/azure.* + then: + - addLabel: + label: dotnet-azure/svc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/core.* + then: + - addLabel: + label: dotnet-fundamentals/svc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/core/tools.* + then: + - addLabel: + label: dotnet-fundamentals/svc + - addLabel: + label: dotnet-cli/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/core/docker.* + then: + - addLabel: + label: dotnet-fundamentals/svc + - addLabel: + label: dotnet-docker/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/core/install.* + then: + - addLabel: + label: dotnet-fundamentals/svc + - addLabel: + label: install/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp.* + then: + - addLabel: + label: dotnet-csharp/svc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/fundamentals.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/misc.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: csharp-errors-warnings/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/whats-new.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: whats-new/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/how-to.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/linq.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: csharp-linq/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/indexers.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/generics.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/strings.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/types.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/statements-expressions-operators.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/interop.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: advanced-concepts/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/language-reference/unsafe-code.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: advanced-concepts/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/namespaces.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/arrays.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/concepts/covariance-contravariance.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: advanced-concepts/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/concepts/serialization.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/concepts/expression-trees.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: advanced-concepts/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/asynchronous-programming/.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: async-task-programming/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/concepts/linq.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: csharp-linq/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/concepts/attributes.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/xmldoc.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/classes-and-structs.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/delegates.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/file-system.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/events.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/programming-guide/interfaces.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/tutorials.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: fundamentals/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/tutorials/exploration.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: get-started/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/language-reference.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: lang-reference/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/language-reference/compiler-messages.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: csharp-diagnostics/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/roslyn-sdk.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: roslyn-sdk/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/csharp/tour-of-csharp.* + then: + - addLabel: + label: dotnet-csharp/svc + - addLabel: + label: get-started/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/framework.* + then: + - addLabel: + label: dotnet-framework/svc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/framework/configure-apps/file-schema/network.* + then: + - addLabel: + label: dotnet-framework/svc + - addLabel: + label: networking/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/framework/configure-apps/file-schema/wcf.* + then: + - addLabel: + label: dotnet-framework/svc + - addLabel: + label: wcf/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/framework/data/adonet.* + then: + - addLabel: + label: dotnet-framework/svc + - addLabel: + label: data-access/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/framework/data/wcf.* + then: + - addLabel: + label: dotnet-framework/svc + - addLabel: + label: wcf/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/framework/docker.* + then: + - addLabel: + label: dotnet-framework/svc + - addLabel: + label: dotnet-docker/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/framework/install.* + then: + - addLabel: + label: dotnet-framework/svc + - addLabel: + label: install/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/framework/migration-guide.* + then: + - addLabel: + label: dotnet-framework/svc + - addLabel: + label: app-compat/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/framework/network-programming.* + then: + - addLabel: + label: dotnet-framework/svc + - addLabel: + label: dotnet-networking/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/fundamentals/networking.* + then: + - addLabel: + label: dotnet-fundamentals/svc + - addLabel: + label: dotnet-networking/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/core/extensions/http.* + then: + - addLabel: + label: dotnet-fundamentals/svc + - addLabel: + label: dotnet-networking/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/framework/wcf.* + then: + - addLabel: + label: dotnet-framework/svc + - addLabel: + label: dotnet-wcf/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/framework/windows-workflow-foundation.* + then: + - addLabel: + label: dotnet-framework/svc + - addLabel: + label: wf/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/fsharp.* + then: + - addLabel: + label: dotnet-fsharp/svc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/fundamentals.* + then: + - addLabel: + label: dotnet-fundamentals/svc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/standard.* + then: + - addLabel: + label: dotnet-fundamentals/svc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/standard/analyzers.* + then: + - addLabel: + label: dotnet-fundamentals/svc + - addLabel: + label: code-analyzers/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/machine-learning.* + then: + - addLabel: + label: dotnet-ml/svc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/spark.* + then: + - addLabel: + label: dotnet-spark/svc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/standard/data.* + then: + - addLabel: + label: dotnet-data/svc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/standard/design-guidelines.* + then: + - addLabel: + label: dotnet/svc + - addLabel: + label: standard-library/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/standard/security.* + then: + - addLabel: + label: dotnet/svc + - addLabel: + label: security-practices/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/visual-basic.* + then: + - addLabel: + label: dotnet-visualbasic/svc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/visual-basic/language-reference/error-messages.* + then: + - addLabel: + label: dotnet-visualbasic/svc + - addLabel: + label: errors-warnings/subsvc + - if: + - filesMatchPattern: + matchAny: true + pattern: (?i).*docs/visual-basic/misc.* + then: + - addLabel: + label: dotnet-visualbasic/svc + - addLabel: + label: errors-warnings/subsvc +onFailure: +onSuccess: diff --git a/.repoman.yml b/.repoman.yml index 0fc3b39170e50..f150681e20c44 100644 --- a/.repoman.yml +++ b/.repoman.yml @@ -51,275 +51,4 @@ pull_request: # Set default sprint for new PRs - milestone-set: "![sprint]" - - - check: - - type: query - value: "PullRequest.Base.Ref != 'live'" - pass: - - files-changed: - # csharplang - - path: "(?i).*_csharplang.*" - run: - - labels-add: ["dotnet-csharp/svc", "lang-spec/subsvc"] - - # csharpstandard - - path: "(?i).*_csharpstandard.*" - run: - - labels-add: ["dotnet-csharp/svc", "lang-spec/subsvc"] - - # vbspec - - path: "(?i).*_vblang\/spec.*" - run: - - labels-add: ["dotnet-visualbasic/svc", "vb-spec/subsvc"] - - # architecture - - path: "(?i).*docs\/architecture.*" - run: - - labels-add: ["dotnet-architecture/svc"] - - path: "(?i).*docs\/architecture\/blazor-for-web-forms-developers.*" - run: - - labels-add: ["dotnet-architecture/svc", "blazor/subsvc"] - - path: "(?i).*docs\/architecture\/cloud-native.*" - run: - - labels-add: ["dotnet-architecture/svc", "cloud-native/subsvc"] - - path: "(?i).*docs\/architecture\/containerized-lifecycle.*" - run: - - labels-add: ["dotnet-architecture/svc", "containerized-lifecycle/subsvc"] - - path: "(?i).*docs\/architecture\/grpc-for-wcf-developers.*" - run: - - labels-add: ["dotnet-architecture/svc", "grpc/subsvc"] - - path: "(?i).*docs\/architecture\/microservices.*" - run: - - labels-add: ["dotnet-architecture/svc", "microservices/subsvc"] - - path: "(?i).*docs\/architecture\/modernize-with-azure-containers.*" - run: - - labels-add: ["dotnet-architecture/svc", "modernize-with-azure-containers/subsvc"] - - path: "(?i).*docs\/architecture\/modern-web-apps-azure.*" - run: - - labels-add: ["dotnet-architecture/svc", "modern-web-apps-azure/subsvc"] - - path: "(?i).*docs\/architecture\/serverless.*" - run: - - labels-add: ["dotnet-architecture/svc", "serverless/subsvc"] - - # azure - - path: "(?i).*docs\/azure.*" - run: - - labels-add: ["dotnet-azure/svc"] - - # core - - path: "(?i).*docs\/core.*" - run: - - labels-add: ["dotnet-fundamentals/svc"] - - path: "(?i).*docs\/core\/tools.*" - run: - - labels-add: ["dotnet-fundamentals/svc", "dotnet-cli/subsvc"] - - path: "(?i).*docs\/core\/docker.*" - run: - - labels-add: ["dotnet-fundamentals/svc", "dotnet-docker/subsvc"] - - # core/install - - path: "(?i).*docs\/core\/install.*" - run: - - labels-add: ["dotnet-fundamentals/svc", "install/subsvc"] - - # csharp - - path: "(?i).*docs\/csharp.*" - run: - - labels-add: ["dotnet-csharp/svc"] - - path: "(?i).*docs\/csharp\/fundamentals.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/misc.*" - run: - - labels-add: ["dotnet-csharp/svc", "csharp-errors-warnings/subsvc"] - - path: "(?i).*docs\/csharp\/whats-new.*" - run: - - labels-add: ["dotnet-csharp/svc", "whats-new/subsvc"] - - path: "(?i).*docs\/csharp\/how-to.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/linq.*" - run: - - labels-add: ["dotnet-csharp/svc", "csharp-linq/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/indexers.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/generics.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/strings.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/types.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/statements-expressions-operators.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/interop.*" - run: - - labels-add: ["dotnet-csharp/svc", "advanced-concepts/subsvc"] - - path: "(?i).*docs\/csharp\/language-reference\/unsafe-code.*" - run: - - labels-add: ["dotnet-csharp/svc", "advanced-concepts/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/namespaces.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/arrays.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/concepts\/covariance-contravariance.*" - run: - - labels-add: ["dotnet-csharp/svc", "advanced-concepts/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/concepts\/serialization.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/concepts\/expression-trees.*" - run: - - labels-add: ["dotnet-csharp/svc", "advanced-concepts/subsvc"] - - path: "(?i).*docs\/csharp\/asynchronous-programming\/.*" - run: - - labels-add: ["dotnet-csharp/svc", "async-task-programming/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/concepts\/linq.*" - run: - - labels-add: ["dotnet-csharp/svc", "csharp-linq/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/concepts\/attributes.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/xmldoc.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/classes-and-structs.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/delegates.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/file-system.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/events.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/programming-guide\/interfaces.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/tutorials.*" - run: - - labels-add: ["dotnet-csharp/svc", "fundamentals/subsvc"] - - path: "(?i).*docs\/csharp\/tutorials\/exploration.*" - run: - - labels-add: ["dotnet-csharp/svc", "get-started/subsvc"] - - path: "(?i).*docs\/csharp\/language-reference.*" - run: - - labels-add: ["dotnet-csharp/svc", "lang-reference/subsvc"] - - path: "(?i).*docs\/csharp\/language-reference\/compiler-messages.*" - run: - - labels-add: ["dotnet-csharp/svc", "csharp-diagnostics/subsvc"] - - path: "(?i).*docs\/csharp\/roslyn-sdk.*" - run: - - labels-add: ["dotnet-csharp/svc", "roslyn-sdk/subsvc"] - - path: "(?i).*docs\/csharp\/tour-of-csharp.*" - run: - - labels-add: ["dotnet-csharp/svc", "get-started/subsvc"] - - # framework - - path: "(?i).*docs\/framework.*" - run: - - labels-add: ["dotnet-framework/svc"] - - path: "(?i).*docs\/framework\/configure-apps\/file-schema\/network.*" - run: - - labels-add: [ "dotnet-framework/svc", "networking/subsvc" ] - - path: "(?i).*docs\/framework\/configure-apps\/file-schema\/wcf.*" - run: - - labels-add: [ "dotnet-framework/svc", "wcf/subsvc" ] - - path: "(?i).*docs\/framework\/data\/adonet.*" - run: - - labels-add: [ "dotnet-framework/svc", "data-access/subsvc" ] - - path: "(?i).*docs\/framework\/data\/wcf.*" - run: - - labels-add: [ "dotnet-framework/svc", "wcf/subsvc" ] - - path: "(?i).*docs\/framework\/docker.*" - run: - - labels-add: [ "dotnet-framework/svc", "dotnet-docker/subsvc" ] - - path: "(?i).*docs\/framework\/install.*" - run: - - labels-add: [ "dotnet-framework/svc", "install/subsvc" ] - - path: "(?i).*docs\/framework\/migration-guide.*" - run: - - labels-add: [ "dotnet-framework/svc", "app-compat/subsvc" ] - - path: "(?i).*docs\/framework\/network-programming.*" - run: - - labels-add: [ "dotnet-framework/svc", "dotnet-networking/subsvc" ] - - path: "(?i).*docs\/fundamentals\/networking.*" - run: - - labels-add: [ "dotnet-fundamentals/svc", "dotnet-networking/subsvc" ] - - path: "(?i).*docs\/core\/extensions\/http.*" - run: - - labels-add: [ "dotnet-fundamentals/svc", "dotnet-networking/subsvc" ] - - path: "(?i).*docs\/framework\/wcf.*" - run: - - labels-add: [ "dotnet-framework/svc", "dotnet-wcf/subsvc" ] - - path: "(?i).*docs\/framework\/windows-workflow-foundation.*" - run: - - labels-add: [ "dotnet-framework/svc", "wf/subsvc" ] - - # fsharp - - path: "(?i).*docs\/fsharp.*" - run: - - labels-add: ["dotnet-fsharp/svc"] - - # fundamentals - - path: "(?i).*docs\/fundamentals.*" - run: - - labels-add: ["dotnet-fundamentals/svc"] - - # standard - - path: "(?i).*docs\/standard.*" - run: - - labels-add: ["dotnet-fundamentals/svc"] - - # analyzers - - path: "(?i).*docs\/standard\/analyzers.*" - run: - - labels-add: [ "dotnet-fundamentals/svc", "code-analyzers/subsvc" ] - - # machine learning - - path: "(?i).*docs\/machine-learning.*" - run: - - labels-add: ["dotnet-ml/svc"] - - # spark - - path: "(?i).*docs\/spark.*" - run: - - labels-add: ["dotnet-spark/svc"] - - # data - - path: "(?i).*docs\/standard\/data.*" - run: - - labels-add: ["dotnet-data/svc"] - - # design guidelines - - path: "(?i).*docs\/standard\/design-guidelines.*" - run: - - labels-add: [ "dotnet/svc", "standard-library/subsvc" ] - - # security - - path: "(?i).*docs\/standard\/security.*" - run: - - labels-add: [ "dotnet/svc", "security-practices/subsvc" ] - - # visual-basic - - path: "(?i).*docs\/visual-basic.*" - run: - - labels-add: ["dotnet-visualbasic/svc"] - - # visual-basic lang ref error messages - - path: "(?i).*docs\/visual-basic\/language-reference\/error-messages.*" - run: - - labels-add: [ "dotnet-visualbasic/svc", "errors-warnings/subsvc" ] - - # visual-basic misc - - path: "(?i).*docs\/visual-basic\/misc.*" - run: - - labels-add: ["dotnet-visualbasic/svc", "errors-warnings/subsvc"] + \ No newline at end of file