From 85b254592b1664a3e2a45764631d77086f865eee Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Mon, 23 Aug 2021 15:03:41 +0200
Subject: [PATCH] [ci] Fix pre-commit jobs on fork pipelines.

- Run jobs only in MR pipelines
- More dynamic git merge-base (see https://gitlab.com/gitlab-org/gitlab-runner/-/issues/4557#note_197936132)
---
 scripts/ci/jobs/pre-commit.yml | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/scripts/ci/jobs/pre-commit.yml b/scripts/ci/jobs/pre-commit.yml
index f49d071eb8d..64caf85b504 100644
--- a/scripts/ci/jobs/pre-commit.yml
+++ b/scripts/ci/jobs/pre-commit.yml
@@ -1,21 +1,28 @@
 pre commit:
   stage: preparation
   image: $PRECOMMIT_IMAGE
+  rules:
+    - if: $CI_MERGE_REQUEST_IID
   needs: [ci_images]
   variables:
     SKIP: clang-format
   script:
     - pre-commit install
-    - pre-commit run --from-ref `git merge-base origin/master HEAD` --to-ref HEAD
-    - git diff --check `git merge-base origin/master HEAD` HEAD -- . ':!*.md' ':!*.pandoc' ':!*.asc' ':!*.dat' ':!*.ts'
+    - TARGET_SHA1=$(git show-ref -s ${CI_MERGE_REQUEST_TARGET_BRANCH_NAME})
+    - pre-commit run --from-ref `git merge-base ${TARGET_SHA1} HEAD` --to-ref HEAD
+    - echo "Target branch is ${CI_MERGE_REQUEST_TARGET_BRANCH_NAME}, target sha is ${TARGET_SHA1}."
+    - git diff --check `git merge-base ${TARGET_SHA1} HEAD` HEAD -- . ':!*.md' ':!*.pandoc' ':!*.asc' ':!*.dat' ':!*.ts'
 
 clang-format:
   stage: check
   image: $PRECOMMIT_IMAGE
+  rules:
+    - if: $CI_MERGE_REQUEST_IID
   needs: [ci_images]
   allow_failure: true
   script:
     - pre-commit install
-    - pre-commit run clang-format --from-ref `git merge-base origin/master HEAD` --to-ref HEAD
+    - TARGET_SHA1=$(git show-ref -s ${CI_MERGE_REQUEST_TARGET_BRANCH_NAME})
+    - pre-commit run clang-format --from-ref `git merge-base ${TARGET_SHA1} HEAD` --to-ref HEAD
   after_script:
     - git diff
-- 
GitLab