-
-
Notifications
You must be signed in to change notification settings - Fork 72
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: Add check-pr.yml github workflow
- Loading branch information
Showing
1 changed file
with
86 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
name: Check Pull Requests | ||
|
||
on: | ||
pull_request_target: | ||
types: | ||
- opened | ||
- edited | ||
- synchronize | ||
- labeled | ||
- unlabeled | ||
merge_group: | ||
|
||
permissions: | ||
pull-requests: write | ||
|
||
jobs: | ||
check-title: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Check PR title | ||
if: github.event_name == 'pull_request_target' | ||
uses: amannn/action-semantic-pull-request@v5 | ||
id: check_pr_title | ||
env: | ||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
# 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: | | ||
Thank you for opening this pull request! | ||
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 | ||
env: | ||
# use an environment variable to pass untrusted input to the script | ||
# see https://securitylab.github.com/research/github-actions-untrusted-input/ | ||
PR_TITLE: ${{ github.event.pull_request.title }} | ||
steps: | ||
- name: Check breaking change label | ||
id: check_breaking_change | ||
run: | | ||
pattern='^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)(\(\w+\))?!:' | ||
# Check if pattern matches | ||
if echo "${PR_TITLE}" | grep -qE "$pattern"; then | ||
echo "breaking_change=true" >> $GITHUB_OUTPUT | ||
else | ||
echo "breaking_change=false" >> $GITHUB_OUTPUT | ||
fi | ||
- name: Add label | ||
if: steps.check_breaking_change.outputs.breaking_change == 'true' | ||
uses: actions/github-script@v7 | ||
with: | ||
github-token: ${{ secrets.GITHUB_TOKEN }} | ||
script: | | ||
github.rest.issues.addLabels({ | ||
issue_number: context.issue.number, | ||
owner: context.repo.owner, | ||
repo: context.repo.repo, | ||
labels: ['Type: Breaking Change'] | ||
}) | ||
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 |