diff --git a/.github/workflows/semantic.yml b/.github/workflows/semantic.yml new file mode 100644 index 000000000..c3920949d --- /dev/null +++ b/.github/workflows/semantic.yml @@ -0,0 +1,33 @@ +# Check that the commit messages are between 20 and 150 chars, +# and that they follow the rule +# (): +# type: docs, feat, fix, refactor, style or test +# scope (optional): any extra info, (like DMS or whatever) + +name: 'Commit Message Check' +on: pull_request + +jobs: + check-commit-message: + name: Check Commit Message + runs-on: ubuntu-latest + steps: + - name: Check Commit Format + uses: gsactions/commit-message-checker@v2 + with: + pattern: '^((docs|feat|fix|refactor|style|test|sweep)( ?\(.*\))?: .+|Revert|\[pre-commit.ci\] ".+")$' + excludeDescription: 'true' # optional: this excludes the description body of a pull request + excludeTitle: 'true' # optional: this excludes the title of a pull request + checkAllCommitMessages: 'true' # optional: this checks all commits associated with a pull request + accessToken: ${{ secrets.GITHUB_TOKEN }} # github access token is only required if checkAllCommitMessages is true + flags: 'gim' + error: 'Your commit has to follow the format "(): "".' + - name: Check Commit Length + uses: gsactions/commit-message-checker@v2 + with: + pattern: '^.{20,150}$' + error: 'Commit messages should be between 20 and 150 chars' + excludeDescription: 'true' # optional: this excludes the description body of a pull request + excludeTitle: 'true' # optional: this excludes the title of a pull request + checkAllCommitMessages: 'true' # optional: this checks all commits associated with a pull request + accessToken: ${{ secrets.GITHUB_TOKEN }} # github access token is only required if checkAllCommitMessages is true