From da09c67600df16c3d1457e7205ffef43e1eb9d3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Tue, 15 Dec 2020 17:57:12 +0100 Subject: [PATCH] ci: Replace custom commit-log script with ci-fairy ci-fairy now supports checking commit messages for required/disallowed patterns. Use that to replace our custom commit-log script. Part-of: --- .gitlab-ci.yml | 9 ++++- .gitlab-ci/check-commit-log.sh | 74 ---------------------------------- .gitlab-ci/commit-rules.yml | 4 ++ 3 files changed, 11 insertions(+), 76 deletions(-) delete mode 100755 .gitlab-ci/check-commit-log.sh create mode 100644 .gitlab-ci/commit-rules.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 07fb97a88..9cf82c416 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,7 +1,7 @@ include: - remote: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml' - remote: 'https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/7ea696055e322cc7aa4bcbe5422b56a198c4bdff/templates/fedora.yml' - - remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/8445ff7af2a68795afb98f486251f2ef8f90621c/templates/ci-fairy.yml" + - remote: "https://gitlab.freedesktop.org/freedesktop/ci-templates/-/raw/6f86b8bcb0cd5168c32779c4fea9a893c4a0c046/templates/ci-fairy.yml" stages: - pre_review @@ -80,7 +80,12 @@ check_commit_log: variables: GIT_DEPTH: "100" script: - - ./.gitlab-ci/check-commit-log.sh + - if [[ x"$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" != "x" ]] ; + then + ci-fairy check-commits --junit-xml=commit-message-junit-report.xml ; + else + echo "Not a merge request" ; + fi <<: *pipeline_guard artifacts: expire_in: 1 week diff --git a/.gitlab-ci/check-commit-log.sh b/.gitlab-ci/check-commit-log.sh deleted file mode 100755 index ac74b9bdc..000000000 --- a/.gitlab-ci/check-commit-log.sh +++ /dev/null @@ -1,74 +0,0 @@ -#!/usr/bin/env bash - -if [ -z "$CI_MERGE_REQUEST_TARGET_BRANCH_NAME" ]; then - echo This is not a merge request, skipping - exit 0 -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 - -JUNIT_REPORT_TESTS_FILE=$(mktemp) - -function append_failed_test_case() { - test_name="$1" - commit="$2" - test_message="$3" - commit_short=${commit:0:8} - - echo "" >> $JUNIT_REPORT_TESTS_FILE - echo &>2 "Commit check failed: $commit_short: $test_message" -} - -function append_passed_test_case() { - test_name="$1" - commit="$2" - commit_short=${commit:0:8} - echo "" >> $JUNIT_REPORT_TESTS_FILE -} - -function generate_junit_report() { - junit_report_file="$1" - num_tests=$(cat "$JUNIT_REPORT_TESTS_FILE" | wc -l) - num_failures=$(grep ' $junit_report_file << __EOF__ - - - -$(< $JUNIT_REPORT_TESTS_FILE) - - -__EOF__ -} - -function commit_message_has_mr_url() { - commit=$1 - commit_message=$(git show -s --format='format:%b' $commit) - echo "$commit_message" | grep -qe "^$CI_MERGE_REQUEST_PROJECT_URL\/\(-\/\)\?merge_requests\/$CI_MERGE_REQUEST_IID$" - return $? -} - -for commit in $commits; do - if commit_message_has_mr_url $commit; then - append_failed_test_case superfluous_url $commit \ - "Commit message must not contain a link to its own merge request" - else - append_passed_test_case superfluous_url $commit - fi -done - -generate_junit_report commit-message-junit-report.xml - -! grep -q '