mirror of
https://github.com/lancedb/lancedb.git
synced 2025-12-22 21:09:58 +00:00
* Enforce conventional commit PR titles * Add automatic labelling of PRs * Write down breaking change policy. Left for another PR: * Validation of breaking change version bumps. (This is complicated due to separate releases for Python and other package.)
82 lines
2.8 KiB
YAML
82 lines
2.8 KiB
YAML
name: PR Checks
|
|
|
|
on:
|
|
pull_request_target:
|
|
types: [opened, edited, synchronize, reopened]
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
labeler:
|
|
permissions:
|
|
pull-requests: write
|
|
name: Label PR
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: srvaroa/labeler@master
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
commitlint:
|
|
permissions:
|
|
pull-requests: write
|
|
name: Verify PR title / description conforms to semantic-release
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: "18"
|
|
# These rules are disabled because Github will always ensure there
|
|
# is a blank line between the title and the body and Github will
|
|
# word wrap the description field to ensure a reasonable max line
|
|
# length.
|
|
- run: npm install @commitlint/config-conventional
|
|
- run: >
|
|
echo 'module.exports = {
|
|
"rules": {
|
|
"body-max-line-length": [0, "always", Infinity],
|
|
"footer-max-line-length": [0, "always", Infinity],
|
|
"body-leading-blank": [0, "always"]
|
|
}
|
|
}' > .commitlintrc.js
|
|
- run: npx commitlint --extends @commitlint/config-conventional --verbose <<< $COMMIT_MSG
|
|
env:
|
|
COMMIT_MSG: >
|
|
${{ github.event.pull_request.title }}
|
|
|
|
${{ github.event.pull_request.body }}
|
|
- if: failure()
|
|
uses: actions/github-script@v6
|
|
with:
|
|
script: |
|
|
const message = `**ACTION NEEDED**
|
|
|
|
Lance follows the [Conventional Commits specification](https://www.conventionalcommits.org/en/v1.0.0/) for release automation.
|
|
|
|
The PR title and description are used as the merge commit message.\
|
|
Please update your PR title and description to match the specification.
|
|
|
|
For details on the error please inspect the "PR Title Check" action.
|
|
`
|
|
// Get list of current comments
|
|
const comments = await github.paginate(github.rest.issues.listComments, {
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: context.issue.number
|
|
});
|
|
// Check if this job already commented
|
|
for (const comment of comments) {
|
|
if (comment.body === message) {
|
|
return // Already commented
|
|
}
|
|
}
|
|
// Post the comment about Conventional Commits
|
|
github.rest.issues.createComment({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
issue_number: context.issue.number,
|
|
body: message
|
|
})
|
|
core.setFailed(message)
|