mirror of
https://github.com/tuono-labs/tuono
synced 2026-07-25 12:52:47 -07:00
62 lines
1.8 KiB
YAML
62 lines
1.8 KiB
YAML
name: 'PR Title Checker'
|
|
|
|
# This workflow ensures that PR titles adhere to a pattern
|
|
# similar to conventional commits standard
|
|
|
|
on:
|
|
pull_request:
|
|
types:
|
|
- opened
|
|
- edited
|
|
- synchronize
|
|
- labeled
|
|
- unlabeled
|
|
|
|
env:
|
|
PR_TITLE: ${{ github.event.pull_request.title }}
|
|
|
|
jobs:
|
|
check_pr_title:
|
|
name: 'PR Title Checker'
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Check type
|
|
id: type
|
|
# @warning Keep in sync with apps/documentation/src/routes/documentation/contributing/pull-requests.mdx
|
|
run: |
|
|
VALID_COMMIT_TYPES="chore|ci|docs|feat|fix|refactor|test"
|
|
REGEX="^${VALID_COMMIT_TYPES})(\(.*\))?!?: .*"
|
|
|
|
if ! [[ $PR_TITLE =~ $REGEX ]]; then
|
|
echo "::error title=Type::The title has an incorrect type. Valid types are ${VALID_COMMIT_TYPES}"
|
|
echo "result=fail" >> "$GITHUB_OUTPUT"
|
|
else
|
|
echo "::notice title=Type::The title is using a valid type"
|
|
echo "result=ok" >> "$GITHUB_OUTPUT"
|
|
fi
|
|
|
|
- name: Check length
|
|
id: length
|
|
run: |
|
|
MAX_LENGTH=100
|
|
LENGTH=${#PR_TITLE}
|
|
|
|
if [ $LENGTH -gt $MAX_LENGTH ]; then
|
|
echo "::error title=Length::The title is longer than $MAX_LENGTH characters"
|
|
echo "result=fail" >> "$GITHUB_OUTPUT"
|
|
else
|
|
echo "::notice title=Length::The title length is within the maximum value of $MAX_LENGTH characters"
|
|
echo "result=ok" >> "$GITHUB_OUTPUT"
|
|
fi
|
|
|
|
- name: Check result
|
|
env:
|
|
FAILURE: ${{ contains(join(steps.*.outputs.result, ','), 'fail') }}
|
|
run: |
|
|
echo "Failure: $FAILURE"
|
|
if [ "$FAILURE" = "false" ]; then
|
|
exit 0
|
|
else
|
|
exit 1
|
|
fi
|