Skip to content

Commit 94f967f

Browse files
authored
Merge pull request hpcc-systems#20646 from dcamper/hpcc-35367-gh-verify-signed-commits
HPCC-35367 Support both DCO and GPG commit signing in PR validation action Reviewed-By: Michael Gardner <michael.gardner@lexisnexisrisk.com> Reviewed-by: Gavin Halliday <gavin.halliday@lexisnexisrisk.com> Merged-by: Gavin Halliday <gavin.halliday@lexisnexisrisk.com>
2 parents f5c3a8f + 01ea85b commit 94f967f

File tree

1 file changed

+29
-10
lines changed

1 file changed

+29
-10
lines changed

.github/workflows/pr-title-check.yml

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -84,21 +84,40 @@ jobs:
8484
exit 1
8585
fi
8686
87-
# Check if commit is signed
87+
# ---- Full commit body for DCO check ----
88+
FULL_COMMIT_MSG=$(git log --format=%B -n 1 $FIRST_COMMIT)
89+
90+
# ---- 1. DCO check ----
91+
DCO_OK=false
8892
if echo "$FULL_COMMIT_MSG" | grep -q "^Signed-off-by: "; then
89-
echo "✓ First commit is signed"
93+
echo "✓ DCO sign-off found"
94+
DCO_OK=true
95+
fi
96+
97+
# ---- 2. GPG check ----
98+
GPG_OK=false
99+
if git verify-commit "$FIRST_COMMIT" > /dev/null 2>&1; then
100+
echo "✓ GPG signature verified"
101+
GPG_OK=true
102+
fi
103+
104+
# ---- Require at least ONE ----
105+
if $DCO_OK || $GPG_OK; then
106+
echo "First commit is signed (DCO or GPG)"
90107
else
91108
echo "✗ First commit is not signed"
92109
echo ""
93-
echo "The first commit must include a 'Signed-off-by:' line."
94-
echo "To sign your commits, use: git commit -s"
110+
echo "You must sign the first commit **either** with:"
111+
echo " • DCO: add a 'Signed-off-by:' line → git commit -s"
112+
echo " • GPG: sign with your key → git commit -S"
95113
echo ""
96-
echo "Example commit message:"
97-
echo " HPCC-12345 Fix memory leak in Thor"
98-
echo " "
99-
echo " This fixes a memory leak in the Thor component."
100-
echo " "
101-
echo " Signed-off-by: Your Name <your.email@example.com>"
114+
echo "To fix an existing commit:"
115+
echo " git rebase -i ${BASE_SHA}^"
116+
echo " Change 'pick' → 'edit' on the first commit, then:"
117+
echo " git commit --amend -s # for DCO"
118+
echo " # or"
119+
echo " git commit --amend -S --no-edit # for GPG"
120+
echo " git rebase --continue"
102121
exit 1
103122
fi
104123

0 commit comments

Comments
 (0)