Bitbucket Cloud status check that ensures your pull requests follow the Conventional Commits spec.
Heavily inspired by zeke/semantic-pull-requests, if not a rewrite in Go for Bitbucket Cloud.
By default, only the PR title OR at least one commit message needs to have semantic prefix. If you wish to change this behavior, see configuration section below.
Scenario | Status | Status Check Message |
---|---|---|
PR title is semantic | 💚 | ready to be squashed |
any commit is semantic | 💚 | ready to be merged or fast-forwarded |
nothing is semantic | 💛 | add a semantic commit or PR title |
Please see zeke/semantic-pull-requests for the full rational.
-
Create a Bitbucket Cloud account for the bot and add it to your team (Recommended)
-
Create an App password with
pullrequest
scope ("Pull request: Read") -
Grant read access on your repositories to the bot account
-
Export the bot's Bitbucket credentials via environment variables (or use
--help
flag for more options):BITBUCKET_USERNAME
: Bitbucket username associated with the account used for renovate-approve-botBITBUCKET_PASSWORD
: Bitbucket App password created in step 2
-
Start the bot:
-
With Docker:
docker run --rm \ --env BITBUCKET_USERNAME \ --env BITBUCKET_PASSWORD \ --publish 8888:8888 \ ghcr.io/maxbrunet/bitbucket-semantic-pull-requests:latest
-
With a binary (downloadable from the Releases page):
./bitbucket-semantic-pull-requests
-
-
Add a webhook to your repository
- Title: Semantic Pull Requests
- URL:
https://<bot-address>/
- Status: Active
- Triggers:
pullrequest:created
pullrequest:updated
It is the same as zeke/semantic-pull-requests.
By default, no configuration is necessary.
If you wish to override some behaviors, you can add a semantic.yml
file to your .bitbucket
directory with
the following optional settings:
# Disable validation, and skip status check creation
enabled: false
# Always validate the PR title, and ignore the commits
titleOnly: true
# Always validate all commits, and ignore the PR title
commitsOnly: true
# Always validate the PR title AND all the commits
titleAndCommits: true
# Require at least one commit to be valid
# this is only relevant when using commitsOnly: true or titleAndCommits: true,
# which validate all commits by default
anyCommit: true
# You can define a list of valid scopes
scopes:
- scope1
- scope2
...
# By default conventional types as definited by go-conventionalcommits are used.
# See "conventional": https://github.com/leodido/go-conventionalcommits#types
# You can override the valid types
types:
- feat
- fix
- docs
- style
- refactor
- perf
- test
- build
- ci
- chore
- revert
# Allow use of Merge commits (e.g. "Merge branch 'master' into feature/ride-unicorns")
allowMergeCommits: true
# Allow use of Revert commits (e.g. "Revert "feat: ride unicorns"")
allowRevertCommits: true
The mergePattern
parser option can be used to extract the Pull Request title from Bitbucket's merge message:
parserOpts:
mergePattern: '^Merged in (\S+) \(pull request #(\d+)\)$'
mergeCorrespondence: ['branch', 'prId']