From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1643) id 53C333858002; Wed, 1 Feb 2023 09:24:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 53C333858002 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1675243456; bh=+VL/8/TMTVOBmboMWYUNrNcx2+rIak9VaGGpbCYGyJ0=; h=From:To:Subject:Date:From; b=tNDuGLUj0+BCC82qjRrPgA8CaNGHK75LtMqdpKDsQFleAgXMHrOCZKHndxD5xFter xsznsfdMxJvIW33L6gOF4/LLIia3Lnp24N7QxQ2y9NApacy13x47UmbbFEKqftfijd dcG0G/GhWcy2ZKSFVfR/9Fz07yiHzBoD6iygPsoU= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Thomas Schwinge To: gcc-cvs@gcc.gnu.org Subject: [gcc/devel/rust/master] ci: Add commit format checker X-Act-Checkin: gcc X-Git-Author: Arthur Cohen X-Git-Refname: refs/heads/devel/rust/master X-Git-Oldrev: d12a38da686e39952e083821f1d77116f3ed91af X-Git-Newrev: c146eb7d99b5074bf7bb66d1a7076e138c92a808 Message-Id: <20230201092416.53C333858002@sourceware.org> Date: Wed, 1 Feb 2023 09:24:16 +0000 (GMT) List-Id: https://gcc.gnu.org/g:c146eb7d99b5074bf7bb66d1a7076e138c92a808 commit c146eb7d99b5074bf7bb66d1a7076e138c92a808 Author: Arthur Cohen Date: Tue Jan 31 15:38:02 2023 +0100 ci: Add commit format checker Diff: --- .github/workflows/commit-format.yml | 93 +++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) diff --git a/.github/workflows/commit-format.yml b/.github/workflows/commit-format.yml new file mode 100644 index 00000000000..66d0e19bf75 --- /dev/null +++ b/.github/workflows/commit-format.yml @@ -0,0 +1,93 @@ +name: GNU Commit Format Checker + +on: + pull_request: + branches: + - master + - gcc-patch-dev + +jobs: + check_commit_changelogs: + runs-on: ubuntu-latest + name: check-changelogs + + steps: + - uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: 0 + + - name: Install Deps + run: | + sudo apt-get update; + sudo apt-get install -y \ + python3 \ + python3-git + + - name: GCC check PR Commits + run: | + python3 contrib/gcc-changelog/git_check_commit.py origin/${{ github.event.pull_request.base.ref }}..${{ github.event.pull_request.head.sha }} + + check_commit_prefixes: + runs-on: ubuntu-latest + name: check-gccrs-prefix + + steps: + - uses: actions/checkout@v3 + if: ${{ github.base_ref == 'gcc-patch-dev' }} # master commits don't need the gccrs prefix + with: + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: 0 + + - name: Check for `gccrs` prefix + run: | + retval=0 + for commit in $(git rev-list origin/${{ github.event.pull_request.base.ref }}..${{ github.event.pull_request.head.sha }}); + do + echo -n "Checking gccrs prefix for $commit: " >> results + if [[ $(git log -1 --format="%s" $commit) = gccrs:* ]]; then + echo "OK" >> results + else + retval=1 + echo "KO" >> results + fi + done + exit $retval + + check_commit_signoff: + runs-on: ubuntu-latest + name: check-commit-signoff + + steps: + - uses: actions/checkout@v3 + with: + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: 0 + + - name: Check for DCO Sign-Off line/possible FSF Copyright Assignment + run: | + retval=0; + rev_list="origin/${{ github.event.pull_request.base.ref }}..${{ github.event.pull_request.head.sha }}" + + for commit in $(git rev-list --reverse "$rev_list"); do + echo -n "Checking for DCO Sign-Off for commit $commit... "; + + if [[ $(git log "$commit" -1 --format="%B" | tail -n 2) = Signed-off-by:* ]]; then + echo "OK"; + continue; + fi + + author=$(git log -1 --format=%an "$commit"); + + if [[ "$(( $(git log --author="$author"|wc -l) - $(git log --author="$author" --grep='Signed-off-by'|wc -l )))" -ne 0 ]]; then + echo "OK" + echo "$author probably has FSF Copyright Assignment. Check manually that the lack of DCO Sign-Off is allowed." + else + echo "KO" + retval=1; + fi + done; + + exit $retval; + +