From 75a8ef02419618c69044b7b34e8b6b67ca7bbcb5 Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Tue, 18 Feb 2020 13:39:08 +0100
Subject: [PATCH] [ci] Added pre-commit and git diff check.

---
 .gitlab-ci.yml                                     |  3 +++
 .../SolidModels/MFront/DruckerPrager.mfront        |  1 -
 scripts/ci/jobs/build_image.yml                    | 14 ++++++++++++++
 scripts/ci/jobs/pre-commit.yml                     |  9 +++++++++
 scripts/docker/Dockerfile.pre-commit               |  9 +++++++++
 5 files changed, 35 insertions(+), 1 deletion(-)
 create mode 100644 scripts/ci/jobs/pre-commit.yml
 create mode 100644 scripts/docker/Dockerfile.pre-commit

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d9aae7690fe..3fe0219fccc 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,4 +1,5 @@
 stages:
+  - pre-checks
   - test
   - checks
   - package
@@ -6,9 +7,11 @@ stages:
 variables:
   CONTAINER_GCC_IMAGE: $CI_REGISTRY_IMAGE/gcc:$CI_COMMIT_REF_SLUG
   XUNIT_TO_JUNIT_IMAGE: $CI_REGISTRY_IMAGE/xunit-to-junit
+  PRECOMMIT_IMAGE: $CI_REGISTRY_IMAGE/pre-commit
 
 include:
   - local: '/scripts/ci/extends/container-maker-setup.yml'
+  - local: '/scripts/ci/jobs/pre-commit.yml'
   - local: '/scripts/ci/jobs/build_image.yml'
   - local: '/scripts/ci/jobs/build.yml'
   - local: '/scripts/ci/jobs/build-win.yml'
diff --git a/MaterialLib/SolidModels/MFront/DruckerPrager.mfront b/MaterialLib/SolidModels/MFront/DruckerPrager.mfront
index b483fb11f56..0c0389a5e0b 100644
--- a/MaterialLib/SolidModels/MFront/DruckerPrager.mfront
+++ b/MaterialLib/SolidModels/MFront/DruckerPrager.mfront
@@ -90,4 +90,3 @@ lam.setGlossaryName("EquivalentPlasticStrain");
         dflam_ddeel = theta * (nF | D) / D(0, 0);
     }
 }
-
diff --git a/scripts/ci/jobs/build_image.yml b/scripts/ci/jobs/build_image.yml
index faa39250c5a..f873ad312b2 100644
--- a/scripts/ci/jobs/build_image.yml
+++ b/scripts/ci/jobs/build_image.yml
@@ -25,3 +25,17 @@ build xunit-to-junit image:
     - docker pull $XUNIT_TO_JUNIT_IMAGE:latest || true
     - docker build --cache-from $XUNIT_TO_JUNIT_IMAGE:latest -t $XUNIT_TO_JUNIT_IMAGE:latest -f scripts/docker/saxon/Dockerfile scripts/docker/saxon
     - docker push $XUNIT_TO_JUNIT_IMAGE:latest
+
+
+build pre-commit image:
+  stage: .pre
+  only:
+    changes:
+      - scripts/docker/Dockerfile.pre-commit
+  tags:
+    - docker-shell
+  script:
+    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
+    - docker pull $PRECOMMIT_IMAGE:latest || true
+    - docker build --cache-from $PRECOMMIT_IMAGE:latest -t $PRECOMMIT_IMAGE:latest -f scripts/docker/Dockerfile.pre-commit scripts/docker
+    - docker push $PRECOMMIT_IMAGE:latest
diff --git a/scripts/ci/jobs/pre-commit.yml b/scripts/ci/jobs/pre-commit.yml
new file mode 100644
index 00000000000..ea96978150f
--- /dev/null
+++ b/scripts/ci/jobs/pre-commit.yml
@@ -0,0 +1,9 @@
+pre commit:
+  stage: pre-checks
+  image:
+    name: $PRECOMMIT_IMAGE
+
+  script:
+    - pre-commit install
+    - pre-commit run --all-files
+    - git diff --check `git merge-base origin/master HEAD` HEAD -- . ':!*.md' ':!*.pandoc' ':!*.asc' ':!*.dat' ':!*.ts'
diff --git a/scripts/docker/Dockerfile.pre-commit b/scripts/docker/Dockerfile.pre-commit
new file mode 100644
index 00000000000..3d7d0a536e7
--- /dev/null
+++ b/scripts/docker/Dockerfile.pre-commit
@@ -0,0 +1,9 @@
+FROM python:slim
+
+RUN pip install pre-commit
+CMD ["bash"]
+RUN apt-get update \
+ && apt-get install -y --no-install-recommends git curl \
+ && curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash \
+ && apt-get install git-lfs \
+ && rm -rf /var/lib/apt/lists/*
-- 
GitLab