You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
name : Pull Request Title Validation
on :
pull_request :
types : [ opened, reopened, edited, synchronize]
permissions :
issues : write
pull-requests : write
jobs :
pull-request-title-validation :
runs-on : ubuntu-latest
steps :
- name : Validate Pull Request Title
id : check_title
uses : actions/github-script@v7
with :
github-token : ${{ secrets.GITHUB_TOKEN }}
script : |
const titleRegex = /^(Revert \")?(((feat|fix|chore)\((((radarr|sonarr|starr)(-(german|french|anime))?)|(prowlarr|lidarr|bazarr|hardlinks|downloaders|plex|guide(-sync)?|misc|glossary|gha))\))|(docs|style|refactor|perf|test|update|build|ci)(\([\w\/-]+\))?):\s.+$/;
const title = context.payload.pull_request.title;
const isValid = titleRegex.test(title);
if (!isValid) {
if ((context.payload.action === 'opened') || (context.payload.action === 'reopened')) {
const prNumber = context.payload.pull_request.number;
const author = context.payload.pull_request.user.login;
const message = `@${author} your pull request title "${context.payload.pull_request.title}" does not conform to our [naming conventions](https://www.conventionalcommits.org/en/v1.0.0/).\n\nPlease update the title to match the pattern: "feat|build|chore|style|fix|update|ci(\\<area\\>): \\<description\\>\n\nYou can check your title at this [regex101 link](https://regex101.com/r/StPfFi/2)."`;
github.rest.issues.createComment({
owner : context.repo.owner,
repo : context.repo.repo,
issue_number : prNumber,
body : message
});
}
core.setFailed(`PR title "${title}" doesn't match the required format.`)
}