diff --git a/.forgejo/workflows/dco_checker.yml b/.forgejo/workflows/dco_checker.yml new file mode 100644 index 0000000..9196cab --- /dev/null +++ b/.forgejo/workflows/dco_checker.yml @@ -0,0 +1,29 @@ +name: DCO checker + +on: + pull_request: + branches: [master] + types: [opened, synchronize, reopened] + +jobs: + check: + name: DCO checker + runs-on: debian + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: DCO checker + run: | + commits=$(git rev-list origin/master..HEAD) + for commit in $commits; do + commit_subject=$(git show --quiet --format=%s $commit) + commit_sha=$(echo $commit | cut -c1-10) + echo "Checking commit $commit_sha \"$commit_subject\"" + if ! git show --quiet --format=%B $commit | grep -q "Signed-off-by:"; then + author=$(git show --quiet --format=%an $commit) + echo "Commit $commit by $author is missing the 'Signed-off-by:' line" + exit 1 + fi + done + echo "All commits have the 'Signed-off-by:' line."