mirror of
https://github.com/aljazceru/kata-containers.git
synced 2025-12-27 11:04:21 +01:00
The commit message of a revert commit usually generated by `git revert`, we should consider this as legal. Consider the commit as the merge commit if the subject starts with 'Reject "' Follow the pr kata-containers/tests/#3938, the suttle diffrence is we skip all commit checks for revert commit including fixes checking and subsystem checking. Because the commit was reverted must have passed the check so the revert-commit should have the Fixes and Subsystem. Fixes: #3568 Fixes: kata-containers/tests#3934 Signed-off-by: Tim Zhang <tim@hyper.sh>
102 lines
4.0 KiB
YAML
102 lines
4.0 KiB
YAML
name: Commit Message Check
|
|
on:
|
|
pull_request:
|
|
types:
|
|
- opened
|
|
- reopened
|
|
- synchronize
|
|
- labeled
|
|
- unlabeled
|
|
|
|
env:
|
|
error_msg: |+
|
|
See the document below for help on formatting commits for the project.
|
|
|
|
https://github.com/kata-containers/community/blob/master/CONTRIBUTING.md#patch-format
|
|
|
|
jobs:
|
|
commit-message-check:
|
|
runs-on: ubuntu-latest
|
|
name: Commit Message Check
|
|
steps:
|
|
- name: Get PR Commits
|
|
if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }}
|
|
id: 'get-pr-commits'
|
|
uses: tim-actions/get-pr-commits@v1.2.0
|
|
with:
|
|
token: ${{ secrets.GITHUB_TOKEN }}
|
|
# Filter out revert commits
|
|
# The format of a revert commit is as follows:
|
|
#
|
|
# Revert "<original-subject-line>"
|
|
#
|
|
filter_out_pattern: '^Revert "'
|
|
|
|
- name: DCO Check
|
|
if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') }}
|
|
uses: tim-actions/dco@2fd0504dc0d27b33f542867c300c60840c6dcb20
|
|
with:
|
|
commits: ${{ steps.get-pr-commits.outputs.commits }}
|
|
|
|
- name: Commit Body Missing Check
|
|
if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') && ( success() || failure() ) }}
|
|
uses: tim-actions/commit-body-check@v1.0.2
|
|
with:
|
|
commits: ${{ steps.get-pr-commits.outputs.commits }}
|
|
|
|
- name: Check Subject Line Length
|
|
if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') && ( success() || failure() ) }}
|
|
uses: tim-actions/commit-message-checker-with-regex@v0.3.1
|
|
with:
|
|
commits: ${{ steps.get-pr-commits.outputs.commits }}
|
|
pattern: '^.{0,75}(\n.*)*$'
|
|
error: 'Subject too long (max 75)'
|
|
post_error: ${{ env.error_msg }}
|
|
|
|
- name: Check Body Line Length
|
|
if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') && ( success() || failure() ) }}
|
|
uses: tim-actions/commit-message-checker-with-regex@v0.3.1
|
|
with:
|
|
commits: ${{ steps.get-pr-commits.outputs.commits }}
|
|
# Notes:
|
|
#
|
|
# - The subject line is not enforced here (see other check), but has
|
|
# to be specified at the start of the regex as the action is passed
|
|
# the entire commit message.
|
|
#
|
|
# - Body lines *can* be longer than the maximum if they start
|
|
# with a non-alphabetic character.
|
|
#
|
|
# This allows stack traces, log files snippets, emails, long URLs,
|
|
# etc to be specified. Some of these naturally "work" as they start
|
|
# with numeric timestamps or addresses. Emails can but quoted using
|
|
# the normal ">" character, markdown bullets ("-", "*") are also
|
|
# useful for lists of URLs, but it is always possible to override
|
|
# the check by simply space indenting the content you need to add.
|
|
#
|
|
# - A SoB comment can be any length (as it is unreasonable to penalise
|
|
# people with long names/email addresses :)
|
|
pattern: '^.+(\n([a-zA-Z].{0,149}|[^a-zA-Z\n].*|Signed-off-by:.*|))+$'
|
|
error: 'Body line too long (max 72)'
|
|
post_error: ${{ env.error_msg }}
|
|
|
|
- name: Check Fixes
|
|
if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') && ( success() || failure() ) }}
|
|
uses: tim-actions/commit-message-checker-with-regex@v0.3.1
|
|
with:
|
|
commits: ${{ steps.get-pr-commits.outputs.commits }}
|
|
pattern: '\s*Fixes\s*:?\s*(#\d+|github\.com\/kata-containers\/[a-z-.]*#\d+)|^\s*release\s*:'
|
|
flags: 'i'
|
|
error: 'No "Fixes" found'
|
|
post_error: ${{ env.error_msg }}
|
|
one_pass_all_pass: 'true'
|
|
|
|
- name: Check Subsystem
|
|
if: ${{ !contains(github.event.pull_request.labels.*.name, 'force-skip-ci') && ( success() || failure() ) }}
|
|
uses: tim-actions/commit-message-checker-with-regex@v0.3.1
|
|
with:
|
|
commits: ${{ steps.get-pr-commits.outputs.commits }}
|
|
pattern: '^[\s\t]*[^:\s\t]+[\s\t]*:'
|
|
error: 'Failed to find subsystem in subject'
|
|
post_error: ${{ env.error_msg }}
|