ci: Add jobs running ci-fairy checks

These can catch various common issues in MR settings and Git commit
logs.

The "check mr" job only exists in pre-merge pipelines for MRs, and runs
automatically.

The "check commits" job only exists in pre-merge pipelines for MRs and
in pipelines for forked branches. It runs automatically in the former
case and can be manually triggered in the latter.

v2:
* Use git_archive docker image (Daniel Stone)
* Use a single sanity stage for both jobs (Tomeu Vizoso)

Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6209>
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 4ad29d7..45204d1 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -18,6 +18,7 @@
 stages:
   - container
   - container-2
+  - sanity
   - git-archive
   - deploy
   - meson-x86_64
@@ -462,6 +463,11 @@
   rules:
     - if: *is-scheduled-pipeline
       when: always
+    - if: *is-pre-merge
+      when: on_success
+    - if: *is-forked-branch
+      when: manual
+    # Other cases default to never
   variables:
     FDO_REPO_SUFFIX: &git-archive-suffix "alpine/git_archive"
     FDO_DISTRIBUTION_EXEC: 'pip3 install git+http://gitlab.freedesktop.org/freedesktop/ci-templates@6f5af7e5574509726c79109e3c147cee95e81366'
@@ -470,24 +476,26 @@
     FDO_DISTRIBUTION_TAG: &git-archive-tag "2020-07-07"
     FDO_DISTRIBUTION_PACKAGES: git py3-pip
 
-
-# Git archive
-
-make git archive:
-  stage: git-archive
+.use-git_archive:
   extends: .fdo.suffixed-image@alpine
-  rules:
-    - if: *is-scheduled-pipeline
-      when: on_success
-  # ensure we are running on packet
-  tags:
-    - packet.net
   variables:
     FDO_DISTRIBUTION_TAG: *git-archive-tag
     FDO_REPO_SUFFIX: *git-archive-suffix
   needs:
     - git_archive
 
+
+# Git archive
+
+make git archive:
+  extends: .use-git_archive
+  stage: git-archive
+  rules:
+    - if: *is-scheduled-pipeline
+      when: on_success
+  # ensure we are running on packet
+  tags:
+    - packet.net
   script:
     # compress the current folder
     - tar -cvzf ../$CI_PROJECT_NAME.tar.gz .
@@ -497,6 +505,38 @@
     - ci-fairy minio cp ../$CI_PROJECT_NAME.tar.gz minio://minio-packet.freedesktop.org/git-cache/$CI_PROJECT_NAMESPACE/$CI_PROJECT_NAME/$CI_PROJECT_NAME.tar.gz
 
 
+# Sanity checks of MR settings and commit logs
+.sanity-check:
+  extends: .use-git_archive
+  stage: sanity
+  artifacts:
+    when: on_failure
+    reports:
+      junit: check-*.xml
+
+check mr:
+  extends: .sanity-check
+  rules:
+    - if: *is-pre-merge
+      when: on_success
+    # Other cases default to never
+  variables:
+    GIT_STRATEGY: none
+  script:
+    - ci-fairy check-merge-request --require-allow-collaboration --junit-xml=check-merge-request.xml
+
+check commits:
+  extends: .sanity-check
+  rules:
+    - if: *is-pre-merge
+      when: on_success
+    - if: *is-forked-branch
+      when: manual
+    # Other cases default to never
+  script:
+    - ci-fairy check-commits --junit-xml=check-commits.xml
+
+
 # BUILD
 
 # Shared between windows and Linux