Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions .github/workflows/check-pr-title.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#
# NOTE: This workflow was directly based on the sample
# (reference: https://github.com/amannn/action-semantic-pull-request)
#
# Workflows that run on 'pull_request_target' trigger need to be carefully
# reviewed since they run in the context of the PR target and consume unvalidated
# input controlled by a PR submitter. We've reviewed this workflow and
# allow-listed it via the 'zizmor' comment below.
#

name: "Check PR Title"

on:
pull_request_target: # zizmor: ignore[dangerous-triggers]
types:
- opened
- edited
- reopened

# Cancel in-progress runs of this workflow if a new run is triggered.
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

permissions: {}

jobs:
main:
name: Validate PR title
runs-on: ubuntu-latest
permissions:
pull-requests: write # Needed to post comments on PR
steps:
- uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1
id: lint_pr_title
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 # v2.9.4
# When the previous step fails, the workflow would stop. By adding this
# condition you can continue the execution with the populated error message.
if: always() && (steps.lint_pr_title.outputs.error_message != null)
with:
header: pr-title-lint-error
message: |
Hello, and thank you for opening this pull request! 👋🏼 We appreciate the contribution.

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.

Commits in this repo will typically be prefixed with `fix:`, `feat:`, `docs:`, `chore:`, `refactor:`, `test:`, or `ci:` to indicate the type of change being proposed. The linked specification has more details.

Details:

```
${{ steps.lint_pr_title.outputs.error_message }}
```

# Delete a previous comment when the issue has been resolved
- if: steps.lint_pr_title.outputs.error_message == null
uses: marocchino/sticky-pull-request-comment@773744901bac0e8cbb5a0dc842800d45e9b2b405 # v2.9.4
with:
header: pr-title-lint-error
delete: true