1
0
mirror of https://github.com/arduino/library-registry.git synced 2025-11-23 03:22:23 +03:00

Merge pull request #281 from per1234/handle-invalid-pr

Handle general problems with pull request
This commit is contained in:
per1234
2021-07-26 06:09:46 -07:00
committed by GitHub

View File

@@ -6,6 +6,7 @@ env:
# GitHub user names to request reviews from in cases where PRs can't be managed automatically. # GitHub user names to request reviews from in cases where PRs can't be managed automatically.
- per1234 - per1234
CHECK_SUBMISSIONS_FAIL_FLAG_ARTIFACT: check-submissions-failed CHECK_SUBMISSIONS_FAIL_FLAG_ARTIFACT: check-submissions-failed
ERROR_MESSAGE_PREFIX: ":x: **ERROR:** "
on: on:
# pull_request_target trigger is used instead of pull_request so the token will have the write permissions needed to # pull_request_target trigger is used instead of pull_request so the token will have the write permissions needed to
@@ -92,6 +93,7 @@ jobs:
outputs: outputs:
type: ${{ steps.parse-request.outputs.type }} type: ${{ steps.parse-request.outputs.type }}
error: ${{ steps.parse-request.outputs.error }}
arduinoLintLibraryManagerSetting: ${{ steps.parse-request.outputs.arduinoLintLibraryManagerSetting }} arduinoLintLibraryManagerSetting: ${{ steps.parse-request.outputs.arduinoLintLibraryManagerSetting }}
submissions: ${{ steps.parse-request.outputs.submissions }} submissions: ${{ steps.parse-request.outputs.submissions }}
index-entry: ${{ steps.parse-request.outputs.index-entry }} index-entry: ${{ steps.parse-request.outputs.index-entry }}
@@ -132,6 +134,7 @@ jobs:
# Due to limitations of the GitHub Actions workflow system, dedicated outputs must be created for use in # Due to limitations of the GitHub Actions workflow system, dedicated outputs must be created for use in
# certain workflow fields. # certain workflow fields.
echo "::set-output name=type::$(echo "$REQUEST" | jq -r -c '.type')" echo "::set-output name=type::$(echo "$REQUEST" | jq -r -c '.type')"
echo "::set-output name=error::$(echo "$REQUEST" | jq -r -c '.error')"
echo "::set-output name=arduinoLintLibraryManagerSetting::$(echo "$REQUEST" | jq -r -c '.arduinoLintLibraryManagerSetting')" echo "::set-output name=arduinoLintLibraryManagerSetting::$(echo "$REQUEST" | jq -r -c '.arduinoLintLibraryManagerSetting')"
echo "::set-output name=submissions::$(echo "$REQUEST" | jq -c '.submissions')" echo "::set-output name=submissions::$(echo "$REQUEST" | jq -c '.submissions')"
echo "::set-output name=index-entry::$(echo "$REQUEST" | jq -r -c '.indexEntry')" echo "::set-output name=index-entry::$(echo "$REQUEST" | jq -r -c '.indexEntry')"
@@ -155,6 +158,34 @@ jobs:
labels: | labels: |
- ${{ needs.parse.outputs.type }} - ${{ needs.parse.outputs.type }}
parse-fail:
needs:
- parse
if: needs.parse.outputs.error != ''
runs-on: ubuntu-latest
steps:
- name: Comment on error detected while parsing PR
uses: octokit/request-action@v2.x
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
route: POST /repos/{owner}/{repo}/issues/{issue_number}/comments
owner: ${{ github.repository_owner }}
repo: ${{ github.event.repository.name }}
issue_number: ${{ github.event.pull_request.number }}${{ github.event.issue.number }}
body: |
|
Hi @${{ github.actor }}
A problem was found with your pull request:
${{ env.ERROR_MESSAGE_PREFIX }}${{ needs.parse.outputs.error }}
Please resolve this error. The checks will automatically run again once that is done.
More information:
https://github.com/${{ github.repository }}/blob/main/README.md#if-the-problem-is-with-the-pull-request
check-submissions: check-submissions:
name: Check ${{ matrix.submission.submissionURL }} name: Check ${{ matrix.submission.submissionURL }}
needs: needs:
@@ -205,7 +236,7 @@ jobs:
| |
A problem was found with your submission ${{ matrix.submission.submissionURL }} A problem was found with your submission ${{ matrix.submission.submissionURL }}
:x: **ERROR:** ${{ matrix.submission.error }} ${{ env.ERROR_MESSAGE_PREFIX }}${{ matrix.submission.error }}
- name: Set checks result to fail if error detected by submission parser - name: Set checks result to fail if error detected by submission parser
if: matrix.submission.error != '' if: matrix.submission.error != ''
@@ -296,7 +327,7 @@ jobs:
issue_number: ${{ github.event.pull_request.number }}${{ github.event.issue.number }} issue_number: ${{ github.event.pull_request.number }}${{ github.event.issue.number }}
body: | body: |
| |
:x: **ERROR:** [Arduino Lint](https://github.com/arduino/arduino-lint) found errors with ${{ matrix.submission.submissionURL }}: ${{ env.ERROR_MESSAGE_PREFIX }}[Arduino Lint](https://github.com/arduino/arduino-lint) found errors with ${{ matrix.submission.submissionURL }}:
``` ```
${{ steps.read-lint-report.outputs.text-report }} ${{ steps.read-lint-report.outputs.text-report }}
@@ -462,44 +493,22 @@ jobs:
issue_number: ${{ github.event.pull_request.number }}${{ github.event.issue.number }} issue_number: ${{ github.event.pull_request.number }}${{ github.event.issue.number }}
body: | body: |
| |
:x: **ERROR:** Your submission meets all requirements. However, the pull request could not be merged. ${{ env.ERROR_MESSAGE_PREFIX }}Your submission meets all requirements. However, the pull request could not be merged.
Please follow this guide to resolve a merge conflict: Please follow this guide to resolve a merge conflict:
https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-on-github https://docs.github.com/en/github/collaborating-with-issues-and-pull-requests/resolving-a-merge-conflict-on-github
Once that is done, it will be merged automatically. Once that is done, it will be merged automatically.
- name: Request a review in case assistance is required
if: contains(toJSON(env.MAINTAINERS), github.actor) != true # Don't attempt to request review from PR author.
uses: octokit/request-action@v2.x
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
route: POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers
owner: ${{ github.repository_owner }}
repo: ${{ github.event.repository.name }}
pull_number: ${{ github.event.pull_request.number }}${{ github.event.issue.number }}
reviewers: ${{ env.MAINTAINERS }}
not-submission: not-submission:
needs: needs:
- parse - parse
if: needs.parse.outputs.type != 'submission' # These request types can't be automatically approved. # These request types can't be automatically approved.
if: >
needs.parse.outputs.type != 'submission' &&
needs.parse.outputs.type != 'invalid'
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Request pull request review
if: contains(toJSON(env.MAINTAINERS), github.actor) != true
uses: octokit/request-action@v2.x
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
route: POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers
owner: ${{ github.repository_owner }}
repo: ${{ github.event.repository.name }}
pull_number: ${{ github.event.pull_request.number }}${{ github.event.issue.number }}
reviewers: ${{ env.MAINTAINERS }}
- name: Comment on required review - name: Comment on required review
uses: octokit/request-action@v2.x uses: octokit/request-action@v2.x
env: env:
@@ -521,6 +530,7 @@ jobs:
unexpected-fail: unexpected-fail:
needs: needs:
# Run after all other jobs # Run after all other jobs
- parse-fail
- merge-fail - merge-fail
- check-submissions-fail - check-submissions-fail
- label - label
@@ -542,18 +552,6 @@ jobs:
labels: | labels: |
- "status: maintenance required" - "status: maintenance required"
- name: Request pull request review
if: contains(toJSON(env.MAINTAINERS), github.actor) != true
uses: octokit/request-action@v2.x
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
route: POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers
owner: ${{ github.repository_owner }}
repo: ${{ github.event.repository.name }}
pull_number: ${{ github.event.pull_request.number }}${{ github.event.issue.number }}
reviewers: ${{ env.MAINTAINERS }}
- name: Comment on unexpected failure - name: Comment on unexpected failure
uses: octokit/request-action@v2.x uses: octokit/request-action@v2.x
env: env:
@@ -581,3 +579,31 @@ jobs:
:warning::warning::warning::warning: :warning::warning::warning::warning:
SLACK_COLOR: danger SLACK_COLOR: danger
MSG_MINIMAL: true MSG_MINIMAL: true
request-review:
needs:
- parse-fail
- merge-fail
- not-submission
- unexpected-fail
if: >
always() &&
(
needs.parse-fail.result != 'skipped' ||
needs.merge-fail.result != 'skipped' ||
needs.not-submission.result != 'skipped' ||
needs.unexpected-fail.result != 'skipped'
)
runs-on: ubuntu-latest
steps:
- name: Request pull request review from maintainer
if: contains(toJSON(env.MAINTAINERS), github.actor) != true # Don't attempt to request review from PR author.
uses: octokit/request-action@v2.x
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
route: POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers
owner: ${{ github.repository_owner }}
repo: ${{ github.event.repository.name }}
pull_number: ${{ github.event.pull_request.number }}${{ github.event.issue.number }}
reviewers: ${{ env.MAINTAINERS }}