Verify that pull request description has ticket URL
This Github Action helps ensure that all pull requests have an associated ticket URL in their body.
It can detect whether a reference ID (#123) is in the body, or even if a full URL is in the body.
It will fail the check if no ticket URL is found anywhere.
In your .github/workflows folder, create a new pull_request_linting.yml file with the respective contents based on your needs.
The examples provided require some customizations unique to your codebase or issue tracking. If you're unfamiliar with building a regex, check out Regexr.
Make sure you check for the following to swap out with your values:
:owner/:org- used in all examples:repo- used only in the GitHub example
name: Pull Request Lint
on:
pull_request:
types: ['opened', 'edited', 'reopened', 'synchronize']
jobs:
title:
name: ticket check
runs-on: ubuntu-latest
steps:
- name: Check for ticket
uses: shaharyar123/ticket-reference-available@master
with:
bodyRegex: '#(?<ticketNumber>\d+)'
bodyURLRegex: 'http(s?):\/\/(github.com)(\/:owner)(\/:repo)(\/issues)\/(?<ticketNumber>\d+)'name: Pull Request Lint
on:
pull_request:
types: ['opened', 'edited', 'reopened', 'synchronize']
jobs:
title:
name: ticket check
runs-on: ubuntu-latest
steps:
- name: Check for ticket
uses: shaharyar123/ticket-reference-available@master
with:
bodyRegex: 'PROJ-(?<ticketNumber>\d+)'
bodyURLRegex: 'http(s?):\/\/(:org.atlassian.net)(\/browse)\/(PROJ\-)(?<ticketNumber>\d+)'name: Pull Request Lint
on:
pull_request:
types: ['opened', 'edited', 'reopened', 'synchronize']
jobs:
title:
name: ticket check
runs-on: ubuntu-latest
steps:
- name: Check for ticket
uses: shaharyar123/ticket-reference-available@master
with:
bodyRegex: '(CH|sc)(-?)(?<ticketNumber>\d+)'
bodyURLRegex: 'https?:\/\/app\.(clubhouse.io|shortcut.com)(\/:org)\/story\/(?<ticketNumber>\d+)'| Name | Required | Description | default |
|---|---|---|---|
| bodyRegex | The regular expression used to search the body for a shorthand reference (example #123) |
(CH)(-?)(?\d{3,}) | |
| bodyRegexFlags | The flags applied to the body regular expression when searching for a shorthand reference | gim | |
| bodyURLRegex | The regular expression used to search the body for a URL reference (example https://github.com/octocat/hello-world/issues/1) |
||
| bodyURLRegexFlags | The flags applied to the body regular expression when searching for a URL reference | gim |