diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 07c9144af..46d86f85c 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,9 +1,20 @@ stages: + - review - source_check variables: JS_LOG: "js-report.txt" +check_commit_log: + image: registry.fedoraproject.org/fedora:latest + stage: review + before_script: + - dnf install -y git + script: + - ./.gitlab-ci/check-commit-log.sh + only: + - merge_requests + js_check: image: registry.fedoraproject.org/fedora:latest stage: source_check @@ -16,3 +27,6 @@ js_check: paths: - ${JS_LOG} when: on_failure + only: + - merge_requests + - /^.*$/ diff --git a/.gitlab-ci/check-commit-log.sh b/.gitlab-ci/check-commit-log.sh new file mode 100755 index 000000000..87f1978ce --- /dev/null +++ b/.gitlab-ci/check-commit-log.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env bash + +if [ -z "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then + echo Cannot review non-merge request + exit 1 +fi + +git fetch $CI_MERGE_REQUEST_PROJECT_URL.git $CI_MERGE_REQUEST_TARGET_BRANCH_NAME + +branch_point=$(git merge-base HEAD FETCH_HEAD) + +commits=$(git log --format='format:%H' $branch_point..$CI_COMMIT_SHA) + +test -z "$commits" && { echo Commit range empty; exit 1; } + +for commit in $commits; do + git show -s --format='format:%b' $commit | grep -qe "\($CI_MERGE_REQUEST_PROJECT_URL/\(issues\|merge_requests\)/[0-9]\+\|https://bugzilla.gnome.org/show_bug.cgi?id=[0-9]\+\)" || + { echo "Missing merge request or issue URL on commit $(echo $commit | cut -c -8)"; exit 1; } +done