2023-09-02 21:11:21 +00:00
name : Check Pull Requests
2023-09-02 02:56:40 +00:00
on :
2023-09-02 21:11:21 +00:00
pull_request_target :
2023-09-02 02:56:40 +00:00
types :
- opened
- edited
2023-09-02 21:11:21 +00:00
- synchronize
merge_group :
2023-09-10 08:14:51 +00:00
pull_request :
types : [ synchronize, opened, reopened, labeled, unlabeled]
2023-09-02 21:11:21 +00:00
permissions :
2023-09-10 07:29:06 +00:00
pull-requests : write
2023-09-02 02:56:40 +00:00
jobs :
check-title :
runs-on : ubuntu-latest
steps :
2023-09-02 21:11:21 +00:00
- name : Check PR title
if : github.event_name == 'pull_request_target'
uses : amannn/action-semantic-pull-request@v5
2023-09-10 01:06:31 +00:00
id : check_pr_title
2023-09-02 21:11:21 +00:00
env :
GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
2023-09-10 01:06:31 +00:00
# Add comment indicating we require pull request titles to follow conventional commits specification
- uses : marocchino/sticky-pull-request-comment@v2
if : always() && (steps.check_pr_title.outputs.error_message != null)
with :
header : pr-title-lint-error
message : |
2023-09-10 07:29:06 +00:00
Thank you for opening this pull request!
2023-09-10 01:06:31 +00:00
We require pull request titles to follow the [Conventional Commits specification](https://www.conventionalcommits.org/en/v1.0.0/) and it looks like your proposed title needs to be adjusted.
Details :
> ${{ steps.check_pr_title.outputs.error_message }}
# Delete a previous comment when the issue has been resolved
- if : ${{ steps.check_pr_title.outputs.error_message == null }}
uses : marocchino/sticky-pull-request-comment@v2
with :
header : pr-title-lint-error
delete : true
check-breaking-change-label :
runs-on : ubuntu-latest
steps :
- name : Check breaking change label
2023-09-10 07:29:06 +00:00
id : check_breaking_change
2023-09-10 01:06:31 +00:00
run : |
2023-09-10 07:29:06 +00:00
pattern='^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\(\w+\))?!:'
2023-09-10 08:14:51 +00:00
# Check if pattern matches
if echo "${{ github.event.pull_request.title }}" | grep -qE "$pattern"; then
2023-09-10 07:29:06 +00:00
echo "breaking_change=true" >> $GITHUB_OUTPUT
2023-09-10 01:06:31 +00:00
else
2023-09-10 07:29:06 +00:00
echo "breaking_change=false" >> $GITHUB_OUTPUT
2023-09-10 01:06:31 +00:00
fi
- name : Add label
2023-09-10 07:29:06 +00:00
if : steps.check_breaking_change.outputs.breaking_change == 'true'
2023-09-10 01:06:31 +00:00
uses : actions/github-script@v6
with :
2023-09-10 07:29:06 +00:00
github-token : ${{ secrets.GITHUB_TOKEN }}
2023-09-10 01:06:31 +00:00
script : |
2023-09-10 07:29:06 +00:00
github.rest.issues.addLabels({
2023-09-10 01:06:31 +00:00
issue_number : context.issue.number,
owner : context.repo.owner,
repo : context.repo.repo,
labels : [ 'breaking change' ]
})
2023-09-10 08:14:51 +00:00
do-not-merge :
if : ${{ contains(github.event.*.labels.*.name, 'do not merge') }}
name : Prevent Merging
runs-on : ubuntu-latest
steps :
- name : Check for label
run : |
echo "Pull request is labeled as 'do not merge'"
echo "This workflow fails so that the pull request cannot be merged"
exit 1