A GitHub Action to validate submitted Pull Requests to check if they have a valid Issue present in the body. The contributors are usually expected to link Issues to Pull Requests using key phrases like Fixes #XYZ
or Resolves #XYZ
. This Action validates if an Issue is present over the Pull Request body and lets the maintainer take further prompt over specific Pull Requests!
To get started, you can use this minimal example:
name: Check if a PR has a valid Issue
on:
pull_request_target:
types: [ edited, synchronize, opened, reopened ]
jobs:
checker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Issue Validator
uses: HarshCasper/validate-issues-over-pull-requests@v0.1.1
id: validator
with:
prbody: ${{ github.event.pull_request.body }}
prurl: ${{ github.event.pull_request.url }}
Input | Description | Example |
---|---|---|
prbody | The Pull Request body to be analyzed | ${{ github.event.pull_request.body }} |
prurl | The Pull Request URL to be analyzed | ${{ github.event.pull_request.body }} |
Output | Description |
---|---|
valid | Boolean that denotes if a Pull Request body has a valid Issue (1 if its present and 0 if its not) |
As a maintainer, if you wish to take an opinionated way of tagging/labeling Pull Requests which contain (or may not contain) a valid Issue, here is an example:
name: PR has a valid Issue?
on:
pull_request_target:
types: [ edited, synchronize, opened, reopened ]
jobs:
checker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Issue Validator
uses: HarshCasper/validate-issues-over-pull-requests@v0.1.1
id: validator
with:
prbody: ${{ github.event.pull_request.body }}
prurl: ${{ github.event.pull_request.url }}
- name: PR has a valid Issue
if: ${{ steps.validator.outputs.valid == 1 }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PRNUM: ${{ github.event.pull_request.number }}
run: |
gh pr edit $PRNUM --add-label "PR:Ready-to-Review"
gh pr edit $PRNUM --remove-label "PR:No-Issue"
- name: PR has no valid Issue
if: ${{ steps.validator.outputs.valid == 0 }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PRNUM: ${{ github.event.pull_request.number }}
run: |
gh pr comment $PRNUM --body "PR is not linked to any issue, please make the corresponding changes in the body."
gh pr edit $PRNUM --add-label "PR:No-Issue"
However you can mould the above logic and use the GitHub's CLI gh
to develop your own preferred workflow.
The Action is based on the awesome work done by XZANATOL for Rotten Scripts. We have been using this Action for some time now to mark Pull Requests that are not linked to any Issue. Based on a Stack Overflow question, I decided to publish this Action for a more general use case and further maintain it.