From 90a45b93263f7d4a144a9a3af89a8130b27cfe59 Mon Sep 17 00:00:00 2001
From: Lars Bilke <lars.bilke@ufz.de>
Date: Wed, 9 Feb 2022 10:48:45 +0100
Subject: [PATCH] [ci] Upload cpm cache snapshot as generic GitLab package.

---
 .gitlab-ci.yml              |  5 +++--
 scripts/ci/jobs/package.yml | 18 ++++++++++++++++++
 web/data/versions.json      |  3 +++
 3 files changed, 24 insertions(+), 2 deletions(-)
 create mode 100644 scripts/ci/jobs/package.yml

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d7f39297d06..f656b45e1f3 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -22,8 +22,8 @@ workflow:
       when: never
     - if: $CI_MERGE_REQUEST_IID # merge requests
     - if: $CI_COMMIT_TAG # tags, ogs/ogs repo only
-    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH # master, ogs/ogs repo only
-    - if: $CI_COMMIT_BRANCH =~ /^v[0-9]\.[0-9]\.[0-9]/ # release branches, e.g. v6.x.x
+    - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH && $CI_PROJECT_PATH == "ogs/ogs"' # master, ogs/ogs repo only
+    - if: '$CI_COMMIT_BRANCH =~ /^v[0-9]\.[0-9]\.[0-9]/ && $CI_PROJECT_PATH == "ogs/ogs"' # release branches, e.g. v6.x.x
 
 include:
   - local: "scripts/ci/extends/*.yml"
@@ -50,3 +50,4 @@ include:
   - local: "/scripts/ci/jobs/web.yml"
   - local: "/scripts/ci/jobs/container.yml"
   - local: "/scripts/ci/jobs/release.yml"
+  - local: "/scripts/ci/jobs/package.yml"
diff --git a/scripts/ci/jobs/package.yml b/scripts/ci/jobs/package.yml
new file mode 100644
index 00000000000..9d7d0cb0abf
--- /dev/null
+++ b/scripts/ci/jobs/package.yml
@@ -0,0 +1,18 @@
+create cpm cache:
+  stage: package
+  needs: [meta]
+  tags: [shell, envinf]
+  variables:
+    BUILD_DIR: "../build/cpm"
+  script:
+    - rm -rf $BUILD_DIR
+    - mkdir -p $BUILD_DIR
+    - cd $BUILD_DIR
+    - cmake ../../ogs -B . -G Ninja --preset release-all -DOGS_USE_POETRY=OFF -DCPM_SOURCE_CACHE=./cpm
+    - find cpm -type f | grep -i "\.git" | xargs rm -rf
+    - VERSION=$(find cpm -type f -print0 | sort -z | xargs -r0  sha1sum | awk '{print $1}' | sha1sum | awk '{print $1}')
+    - echo "VERSION=${VERSION}"
+    - tar -czf cpm.tar.gz cpm
+    - >
+      curl --header "JOB-TOKEN: $CI_JOB_TOKEN" --upload-file cpm.tar.gz \
+        ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/cpm/${VERSION}/cpm.tar.gz
diff --git a/web/data/versions.json b/web/data/versions.json
index 3fd4b0ef685..04ad738b7c2 100644
--- a/web/data/versions.json
+++ b/web/data/versions.json
@@ -43,5 +43,8 @@
       "nbconvert==6.4.0",
       "pillow=9.0.0"
     ]
+  },
+  "cpm": {
+    "cache_hash": "7190f14f7413a6954d2464f4a8e7016864eb8bc3"
   }
 }
-- 
GitLab