0f07cf5798
### What? This PR adds a new action that verifies if the reproduction link is correct _after_ the issue has been created. If it is not, we close the issue and comment on it with the correct steps to take. Check out the [rendered comment here](https://github.com/balazsorban44/next.js/blob/chore/gh-invalid-link-checker/.github/actions/issue-validator/repro-link/invalid-link.md). Additionally, this PR also does some refactoring to simplify our GitHub actions related to issues. Tests: Issue that was supposed to be closed: - https://github.com/balazsorban44/next.js/issues/48 - Issue comment: https://github.com/balazsorban44/next.js/issues/48#issuecomment-1698836121 - Issue opened action: https://github.com/balazsorban44/next.js/actions/runs/6023209630 - Issue labeled action: https://github.com/balazsorban44/next.js/actions/runs/6023209629 Issue that was not supposed to be closed (closed manually afterward): - https://github.com/balazsorban44/next.js/issues/49 - Issue opened action: https://github.com/balazsorban44/next.js/actions/runs/6023214256 - Issue labeled action: https://github.com/balazsorban44/next.js/actions/runs/6023214258 ### Why? Unfortunately, GitHub is currently missing the [functionality to require a valid reproduction link](https://github.com/orgs/community/discussions/10227) in issue templates. Even if that was supported, this PR adds functionality that could not be covered with a regex validation. Namely, we check if the reproduction is a private repo or not, and potentially could also check the structure to see if it's an actual Next.js project. ### How? If the link is not in the expected section, not a GitHub, CodeSandbox, or Replay.io link, or does not return an OK response (eg.: private repo/sandbox), the issue is closed/commented. Related: - https://github.com/orgs/community/discussions/4629 - https://github.com/orgs/community/discussions/10227 Co-authored-by: Steven <229881+styfle@users.noreply.github.com>
34 lines
1.1 KiB
YAML
34 lines
1.1 KiB
YAML
name: Validate issue
|
|
|
|
on:
|
|
issues:
|
|
types: [opened, labeled]
|
|
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
|
|
jobs:
|
|
issue-opened:
|
|
if: "${{ contains(github.event.issue.labels.*.name, 'template: bug') && github.event.action == 'opened' }}"
|
|
name: Issue opened
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
- name: 'Autolabel based on affected areas'
|
|
run: node ./.github/actions/issue-validator/autolabel/index.mjs
|
|
- name: 'Close without valid reproduction link'
|
|
run: node ./.github/actions/issue-validator/repro-link/index.mjs
|
|
issue-labeled:
|
|
if: "${{ contains(github.event.issue.labels.*.name, 'template: bug') && github.event.action == 'labeled' }}"
|
|
name: Issue labeled
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
- name: 'Clarify reproduction steps'
|
|
run: node ./.github/actions/issue-validator/clarify/index.mjs
|