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)