Skip to content

HarshCasper/validate-issues-over-pull-requests

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

7 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Validate Issues over Pull Requests

Action Template Lint

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!

Usage

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/[email protected]
        id: validator
        with:
          prbody: ${{ github.event.pull_request.body }}
          prurl: ${{ github.event.pull_request.url }}

Inputs

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

Output Description
valid Boolean that denotes if a Pull Request body has a valid Issue (1 if its present and 0 if its not)

Example Workflow

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/[email protected]
        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.

Acknowledgments

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.

License

MIT License