-
Notifications
You must be signed in to change notification settings - Fork 1
41 lines (40 loc) · 1.69 KB
/
Copy pathpr-title-check.yml
File metadata and controls
41 lines (40 loc) · 1.69 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# From: https://levelup.gitconnected.com/enforcing-jira-ticket-formatting-in-github-pr-titles-and-commit-messages-78d9755568df
name: "PR Title Check"
on:
pull_request:
branches:
- dev
- main
- 'release/**'
- 'hotfix/**'
types: [opened, edited, synchronize]
merge_group:
branches:
- dev
jobs:
check-title:
runs-on: ubuntu-latest
steps:
- name: Check PR title
uses: actions/github-script@v6
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const payload = context.payload
let prTitle
if (payload.pull_request) {
prTitle = payload.pull_request.title
} else if (payload.merge_group && payload.merge_group.pull_requests?.length) {
prTitle = payload.merge_group.pull_requests[0].title
} else {
core.setFailed('Cannot determine PR title for validation.')
}
const prTitleExpectedPattern = /(^LNK-\d+:\s)|(^LEGLINK-\d+:\s)|(^LEGPROG-\d+:\s)|(^TECH_DEBT:\s)|(^DOCS:\s)|(^SNYK:\s)|(^Dops-)|(^Bump\s)/g
const prTitleMismatchError = 'Invalid PR title "' + prTitle + '"! Must begin with LNK-nnnn:<space> or LEGLINK-nnnn:<space> or LEGPROG-nnnn:<space> or TECH_DEBT:<space> or DOCS:<space> or SNYK:<space> or Dops- or Bump<space>, e.g. LNK-1234: My PR title, or TECH_DEBT or DOCS or SNYK or Dops- or Bump: My PR title or DOCS: My PR title or [Snyk] My PR title'
if (!prTitleExpectedPattern.test(prTitle)) {
// Fail the workflow
console.log(prTitleMismatchError)
core.setFailed(prTitleMismatchError)
} else {
console.log('PR title format is correct.')
}