From c853303a4cf9fd8a2697f2f03c994d5fcf2a93ab Mon Sep 17 00:00:00 2001
From: Maximilian Moser <maximilian.moser@tuwien.ac.at>
Date: Tue, 17 Sep 2024 21:26:07 +0200
Subject: [PATCH] Update GitLab CI/CD configuration

* based on what we have at Invenio-Theme-TUW
---
 .gitlab-ci.yml | 33 +++++++++++++++++++++++++--------
 1 file changed, 25 insertions(+), 8 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index a2c30fa..65cbcd7 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,23 @@
 # vim: ts=2
 
+stages:
+  - testing
+  - release
+
+run-tests:
+  stage: testing
+  script:
+    - pipx install --force pip pipenv
+    - pipenv --rm || true
+    - pipenv run pip install -e '.[tests,opensearch2]'
+    - pipenv run ./run-tests.sh
+  coverage: /TOTAL.*? (100(?:\.0+)?\%|[1-9]?\d(?:\.\d+)?\%)$/
+  rules:
+    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
+    - if: $CI_COMMIT_TAG =~ /^v\d+/
+
 sonarqube-check:
+  stage: testing
   variables:
     SONAR_USER_HOME: "${CI_PROJECT_DIR}/.sonar"  # Defines the location of the analysis task cache
     GIT_DEPTH: "0"  # Tells git to fetch all the branches of the project, required by the analysis task
@@ -11,17 +28,17 @@ sonarqube-check:
   script:
     - sonar-scanner
   allow_failure: true
-  only:
-    - master
-    - merge_requests
+  rules:
+    - if: $CI_PIPELINE_SOURCE == 'merge_request_event'
+    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
 
 pypi-release:
+  stage: release
   rules:
     - if: '$CI_COMMIT_TAG =~ /^v\d+/'
   script:
-    - pip3 install --upgrade pip build twine check-manifest
     - rm -f dist/*
-    - python3 -m check_manifest
-    - python3 -m build
-    - python3 -m twine check dist/*
-    - TWINE_USERNAME=${PYPI_USER} TWINE_PASSWORD=${PYPI_PASSWORD} python3 -m twine upload --skip-existing --non-interactive dist/*
+    - pipx run check-manifest
+    - pipx run build
+    - pipx run twine check dist/*
+    - TWINE_USERNAME=${PYPI_USER} TWINE_PASSWORD=${PYPI_PASSWORD} pipx run twine upload --skip-existing --non-interactive dist/*
-- 
GitLab