[polari/ci-test] ci: Check for issue/MR URLs in commit messages



commit 41c12581f76972edf26aa5cac6b076cc74fd6015
Author: Florian Müllner <fmuellner gnome org>
Date:   Thu Feb 14 21:12:59 2019 +0100

    ci: Check for issue/MR URLs in commit messages

 .gitlab-ci.yml                 |  8 ++++++++
 .gitlab-ci/check-commit-log.sh | 31 +++++++++++++++++++++++++++++++
 2 files changed, 39 insertions(+)
---
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index bfa05ab..2b4999b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,4 +1,5 @@
 stages:
+ - commit_check
  - source_check
  - build
  - review
@@ -7,6 +8,13 @@ variables:
     BUNDLE: "polari-git.flatpak"
     LINT_LOG: "eslint-report.txt"
 
+check_commit_log:
+    stage: commit_check
+    script:
+        - ./.gitlab-ci/check-commit-log.sh
+    only:
+        - merge_requests
+
 eslint:
     image: registry.gitlab.gnome.org/gnome/gjs:fedora.static-analysis
     stage: source_check
diff --git a/.gitlab-ci/check-commit-log.sh b/.gitlab-ci/check-commit-log.sh
new file mode 100755
index 0000000..cc3bcee
--- /dev/null
+++ b/.gitlab-ci/check-commit-log.sh
@@ -0,0 +1,31 @@
+#!/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)
+
+if [ -z "$commits" ]; then
+  echo Commit range empty
+  exit 1
+fi
+
+function commit_message_has_url() {
+  commit=$1
+  commit_message=$(git show -s --format='format:%b' $commit)
+  echo "$commit_message" | grep -qe 
"\($CI_MERGE_REQUEST_PROJECT_URL/\(issues\|merge_requests\)/[0-9]\+\|https://bugzilla.gnome.org/show_bug.cgi?id=[0-9]\+\)"
+  return $?
+}
+
+for commit in $commits; do
+  if ! commit_message_has_url $commit; then
+    echo "Missing merge request or issue URL on commit $(echo $commit | cut -c -8)"
+    exit 1
+  fi
+done


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]