浏览代码

Actions: add Repo gardening action (#6244)

* Actions: add Repo gardening action

More details about the action here:
https://github.com/Automattic/action-repo-gardening

The action is already used in the Calypso and Jetpack repos.

I've enabled 5 of the tasks the action offers so far:

1. Assign Issues (`assignIssues`): Adds assignee for issues which are being worked on, and adds the "In Progress" label.
2. Clean Labels (`cleanLabels`): Removes Status labels once a PR has been merged.
3. Flag OSS (`flagOss`): flags entries by external contributors, adds an "OSS Citizen" label to the PR, and sends a Slack message to the #themes channel.
4. Triage New Issues (`triageNewIssues`): Adds labels to new issues based on issue content.
5. Gather support references (`gatherSupportReferences`): Adds a new comment with a list of all support references on the issue. More details about this in pcLjiI-Rb-p2

* Add new Issue template for bug reports

* Enable newer tasks

- Prompt to reply to customers when an issue is finally closed after having gathered a lot of tickets. Reference: pcLjiI-Ro-p2
- Slack message when an opened issue starts gathering a lot of tickets. Reference: pciE2j-1iy-p2

* Remove unneeded tasks for now.
Jeremy Herve 2 年之前
父节点
当前提交
a2b3d02e89
共有 2 个文件被更改,包括 178 次插入0 次删除
  1. 133 0
      .github/ISSUE_TEMPLATE/bug_report.yml
  2. 45 0
      .github/workflows/gardening.yml

+ 133 - 0
.github/ISSUE_TEMPLATE/bug_report.yml

@@ -0,0 +1,133 @@
+name: Bug Report
+description: Helps us improve our product!
+labels: "Needs triage, [Type] Bug"
+title: "[Bug]: "
+body:
+  - type: markdown
+    attributes:
+      value: |
+        ### Thanks for contributing!
+
+        Please write a clear title, then fill in as much details as possible.
+
+        __Avoid using image hosting services such as Cloudup, Droplr, Imgur, etc., to link to media.__
+        Instead, attach screenshot(s) or recording(s) directly in any of the text areas below: click, then drag and drop.
+  - type: textarea
+    id: summary
+    attributes:
+        label: Quick summary
+  - type: textarea
+    id: steps
+    attributes:
+      label: Steps to reproduce
+      placeholder: |
+        1. Start at `site-domain.com/blog`.
+        2. Click on any blog post.
+        3. Click on the 'Like' button.
+        4. ...
+
+        Attach any media by drag and dropping or selecting upload.
+    validations:
+      required: true
+  - type: textarea
+    id: expected
+    attributes:
+      label: What you expected to happen
+      placeholder: |
+        e.g. The post should be liked.
+    validations:
+      required: true
+  - type: textarea
+    id: actual
+    attributes:
+      label: What actually happened
+      placeholder: |
+        e.g. Clicking the button does nothing visibly.
+    validations:
+      required: true
+  - type: dropdown
+    id: browser
+    attributes:
+      label: Browser
+      description: (You may select more than one)
+      options:
+        - Google Chrome/Chromium
+        - Mozilla Firefox
+        - Microsoft Edge
+        - Apple Safari
+        - iOS Safari
+        - Android Chrome
+      multiple: true
+  - type: input
+    id: issue_context
+    attributes:
+      label: Context
+      placeholder: |
+        e.g. Customer report, details of your exploratory testing, etc.
+  - type: markdown
+    attributes:
+      value: |
+        ---
+        ## Additional context
+
+        The following section is optional. If you're an Automattician, you should be able to fill it in. If not, please scroll to the bottom and submit the issue.
+  - type: dropdown
+    id: site-type
+    attributes:
+      label: Platform (Simple, Atomic, or both?)
+      description: (You may select more than one)
+      options:
+        - Simple
+        - Atomic
+        - Self-hosted
+      multiple: true
+  - type: textarea
+    id: other_notes
+    attributes:
+      label: Other notes
+      placeholder: |
+        e.g. Logs, CLI or console errors, notes, observations, etc.
+  - type: markdown
+    attributes:
+      value: |
+        ---
+        ## Issue severity
+
+        Please provide details around how often the issue is reproducible & how many users are affected.
+  - type: dropdown
+    id: reproducibility
+    attributes:
+      label: Reproducibility
+      options:
+        - Consistent
+        - Intermittent
+        - Once
+    validations:
+      required: true
+  - type: dropdown
+    id: users-affected
+    attributes:
+      label: Severity
+      description: How many users are impacted? A guess is fine.
+      options:
+        - One
+        - Some (< 50%)
+        - Most (> 50%)
+        - All
+  - type: dropdown
+    id: workarounds
+    attributes:
+      label: Available workarounds?
+      options:
+        - No and the platform is unusable
+        - No but the platform is still usable
+        - Yes, difficult to implement
+        - Yes, easy to implement
+        - There is no user impact
+  - type: textarea
+    id: workarounds-detail
+    attributes:
+      label: Workaround details
+      description: If you are aware of a workaround, please describe it below.
+      placeholder: |
+        e.g. There is an alternative way to access this setting in the sidebar, but it's not readily apparent.

+ 45 - 0
.github/workflows/gardening.yml

@@ -0,0 +1,45 @@
+name: Repo gardening
+
+on:
+  pull_request_target: # When a PR is opened or closed
+    types: [opened, closed]
+  issues: # For auto-triage of issues.
+    types: [opened, reopened, edited, closed]
+  issue_comment: # To gather support references in issue comments.
+    types: [created]
+concurrency:
+  # For pull_request_target, cancel any concurrent jobs with the same type (e.g. "opened", "labeled") and branch.
+  # Don't cancel any for other events, accomplished by grouping on the unique run_id.
+  group: gardening-${{ github.event_name }}-${{ github.event.action }}-${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.ref || github.run_id }}
+  cancel-in-progress: true
+
+jobs:
+  repo-gardening:
+    name: 'Perform automated triage tasks on PRs and issues'
+    runs-on: ubuntu-latest
+    if: github.event_name == 'pull_request_target' || github.event.pull_request.head.repo.full_name == github.event.pull_request.base.repo.full_name
+    timeout-minutes: 10
+
+    steps:
+     - name: Checkout
+       uses: actions/checkout@v3
+
+     - name: Setup Node
+       uses: actions/setup-node@v3
+       with:
+         node-version: 16
+
+     - name: Wait for prior instances of the workflow to finish
+       uses: softprops/turnstyle@v1
+       env:
+         GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+
+     - name: 'Run gardening action'
+       uses: automattic/action-repo-gardening@trunk
+       with:
+         github_token: ${{ secrets.GITHUB_TOKEN }}
+         slack_token: ${{ secrets.SLACK_TOKEN }}
+         slack_team_channel: ${{ secrets.SLACK_TEAM_CHANNEL }}
+         slack_he_triage_channel: ${{ secrets.SLACK_HE_TRIAGE_CHANNEL }}
+         slack_quality_channel: ${{ secrets.SLACK_QUALITY_CHANNEL }}
+         tasks: 'cleanLabels,flagOss,triageNewIssues,gatherSupportReferences,replyToCustomersReminder'