From e692c698b11852c3ab70968f7ee1fc254e326599 Mon Sep 17 00:00:00 2001
From: Nicolas Richart <nicolas.richart@epfl.ch>
Date: Tue, 23 Jul 2024 11:58:12 +0200
Subject: [PATCH] Over complicating things because /work is slow and /scratch
 is not safe

---
 .gitlab-ci.yml          | 22 ++++++++++++++--------
 ci/apptainer_by_hand.sh | 20 +++++++++-----------
 ci/prepare_squashfs.sh  | 20 ++++++++++----------
 ci/squashfuse_ll.sh     |  4 +++-
 4 files changed, 36 insertions(+), 30 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 076e2fd..3c0080f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -17,7 +17,8 @@ workflow:
 
 variables:
   TERM: ansi
-  CI_DATA: "/work/scitas-ge/richart/ci"
+  CI_DATA_LT: "/work/scitas-ge/richart/ci"
+  CI_DATA_ST: "/scratch/richart/ci"
 
 .parallel_definition:
   parallel:
@@ -70,16 +71,17 @@ variables:
     FAKEHOME: "/scratch/$(id -un)"
     COMMAND_OPTIONS_SBATCH: ${slurm_options}
     STACK_VERSION: $(jq -Mrc .stack.version ${CI_PROJECT_DIR}/stacks/${stack}/config.json)
+    image_name: "${stack}-${environment}-${SQUASHFS_ID}"
     APPTAINER_EXEC_OPTIONS: >-
       ${apptainer_options}
          --cleanenv
          -H $(mktemp -d -p ${FAKEHOME}/):/home/$(id -un)
-         --bind ${CI_DATA}/buildcache:${MOUNT_POINT}/buildcache
-         --bind ${CI_DATA}/spack-mirror:${MOUNT_POINT}/spack-mirror
-         --bind ${CI_DATA}/squashfs-cache/:/squashfs-cache
-         --bind ${CI_DATA}/overlayfs:/overlayfs
-         --fusemount "host:${CI_PROJECT_DIR}/ci/squashfuse_ll.sh ${CI_DATA} ${SQUASHFS_ID}-${CI_JOB_ID} ${CI_DATA}/squashfs-cache/${stack}-${environment}-${SQUASHFS_ID}.sqfs /overlayfs/lower-${SQUASHFS_ID}-${CI_JOB_ID}"
-         --fusemount "container:${CI_PROJECT_DIR}/ci/fuse-overlayfs.sh ${SQUASHFS_ID}-${CI_JOB_ID} ${MOUNT_POINT}/${stack}/${environment}/${STACK_VERSION}"
+         --bind ${CI_DATA_LT}/buildcache:${MOUNT_POINT}/buildcache
+         --bind ${CI_DATA_LT}/spack-mirror:${MOUNT_POINT}/spack-mirror
+         --bind ${CI_DATA_ST}/squashfs-cache/:/squashfs-cache
+         --bind ${CI_DATA_ST}/overlayfs:/overlayfs
+         --fusemount "host:${CI_PROJECT_DIR}/ci/squashfuse_ll.sh ${CI_DATA_ST} ${image_name} ${CI_DATA_LT}/squashfs-cache /overlayfs/lower-${image_name}"
+         --fusemount "container:${CI_PROJECT_DIR}/ci/fuse-overlayfs.sh ${image_name} ${MOUNT_POINT}/${stack}/${environment}/${STACK_VERSION}"
   # after_script:
   #   - if [ $CI_JOB_STATUS != "success" ]; then exit 0; fi
   #   - ${CI_PROJECT_DIR}/ci/update_squashfs.sh
@@ -96,7 +98,11 @@ variables:
 spack:checkout:
   stage: .pre
   variables:
-    APPTAINER_EXEC_OPTIONS: --cleanenv --bind ${CI_DATA} --bind ${CI_DATA}/squashfs-cache:/squashfs-cache
+    APPTAINER_EXEC_OPTIONS: >-
+      --cleanenv
+      --bind ${CI_DATA_LT}
+      --bind ${CI_DATA_ST}
+      --bind ${CI_DATA_LT}/squashfs-cache:/squashfs-cache
   extends:
     - .parallel_definition
   before_script:
diff --git a/ci/apptainer_by_hand.sh b/ci/apptainer_by_hand.sh
index 7b7d41d..a6ca885 100755
--- a/ci/apptainer_by_hand.sh
+++ b/ci/apptainer_by_hand.sh
@@ -1,6 +1,7 @@
 #!/usr/bin/env sh
 
-export CI_DATA="/scratch/richart/ci"
+export CI_DATA_LT="/work/scitas-ge/richart/ci"
+export CI_DATA_ST="/scratch/richart/ci"
 srun_options="-N1 -n1 -c 64 -p h100"
 apptainer_options="--nv"
 
@@ -18,28 +19,25 @@ export MOUNT_POINT=$(jq -Mrc .stack.mount_point ${CI_PROJECT_DIR}/stacks/${stack
 export STACK_VERSION=$(jq -Mrc .stack.version ${CI_PROJECT_DIR}/stacks/${stack}/config.json)
 
 APPTAINER_IMAGE=~/rhel9-kuma.sif
-
+image_name=${stack}-${environment}-${SQUASHFS_ID}
 #./ci/prepare_squashfs.sh
 
-echo "host:/usr/libexec/apptainer/bin/squashfuse_ll ${CI_DATA}/squashfs-cache/${stack}-${environment}-${SQUASHFS_ID}.sqfs /overlayfs/lower-${SQUASHFS_ID}-${CI_JOB_ID}"
-echo "host:${CI_PROJECT_DIR}/ci/fuse-overlayfs.sh ${CI_DATA} ${SQUASHFS_ID}-${CI_JOB_ID} ${MOUNT_POINT}/${stack}/${environment}/${STACK_VERSION}"
-
 srun ${srun_options} --pty apptainer run \
     ${apptainer_options}\
     --writable-tmpfs \
     --cleanenv \
     -H $(mktemp -d -p ${FAKEHOME}/):/home/$(id -un) \
-    --bind ${CI_DATA}/buildcache:${MOUNT_POINT}/buildcache \
-    --bind ${CI_DATA}/spack-mirror:${MOUNT_POINT}/spack-mirror \
-    --bind ${CI_DATA}/squashfs-cache/:/squashfs-cache \
-    --bind ${CI_DATA}/overlayfs:/overlayfs \
+    --bind ${CI_DATA_LT}/buildcache:${MOUNT_POINT}/buildcache \
+    --bind ${CI_DATA_LT}/spack-mirror:${MOUNT_POINT}/spack-mirror \
+    --bind ${CI_DATA_LT}/squashfs-cache/:/squashfs-cache \
+    --bind ${CI_DATA_ST}/overlayfs:/overlayfs \
     --env stack=${stack} \
     --env environment=${environment} \
     --env GPG_PRIVATE_KEY=${GPG_PRIVATE_KEY} \
     --env CI_PROJECT_DIR=${CI_PROJECT_DIR} \
     --env CI_JOB_ID=${CI_JOB_ID} \
     --env SQUASHFS_ID=${SQUASHFS_ID} \
-    --fusemount "host:${CI_PROJECT_DIR}/ci/squashfuse_ll.sh ${CI_DATA} ${SQUASHFS_ID}-${CI_JOB_ID} ${CI_DATA}/squashfs-cache/${stack}-${environment}-${SQUASHFS_ID}.sqfs /overlayfs/lower-${SQUASHFS_ID}-${CI_JOB_ID}" \
-    --fusemount "container:${CI_PROJECT_DIR}/ci/fuse-overlayfs.sh ${SQUASHFS_ID}-${CI_JOB_ID} ${MOUNT_POINT}/${stack}/${environment}/${STACK_VERSION}" \
+    --fusemount "host:${CI_PROJECT_DIR}/ci/squashfuse_ll.sh ${CI_DATA_ST} ${image_name} ${CI_DATA_LT}/squashfs-cache /overlayfs/lower-${image_name}" \
+    --fusemount "container:${CI_PROJECT_DIR}/ci/fuse-overlayfs.sh ${image_name} ${MOUNT_POINT}/${stack}/${environment}/${STACK_VERSION}" \
     ${APPTAINER_IMAGE} \
     bash
diff --git a/ci/prepare_squashfs.sh b/ci/prepare_squashfs.sh
index be78be6..9f2fee1 100755
--- a/ci/prepare_squashfs.sh
+++ b/ci/prepare_squashfs.sh
@@ -5,29 +5,29 @@ set -o nounset
 set -o errexit
 source ${CI_PROJECT_DIR}/ci/stack_env.sh
 
-for i in overlayfs squashfs-cache buildcache spack-mirror
+for i in squashfs-cache buildcache spack-mirror
 do
-    if [ ! -e ${CI_DATA}/$i ]
+    if [ ! -e ${CI_DATA_LT}/$i ]
     then
-        mkdir -p ${CI_DATA}/$i
+        mkdir -p ${CI_DATA_LT}/$i
     fi
 done
 
 
 set +o errexit
 # Check if MR as squashfs
-sqfs_image=$(ls -t1 ${CI_DATA}/squashfs-cache/${stack}-${environment}-${squash_id}*.sqfs 2> /dev/null | head -1)
+sqfs_image=$(ls -t1 ${CI_DATA_LT}/squashfs-cache/${stack}-${environment}-${squash_id}*.sqfs 2> /dev/null | head -1)
 if [ $? -ne 0 ]
 then
     echo "No MR ($squash_id) squashfs found"
     # Check if MR default branch as squashfs
-    sqfs_base_image=$(ls -t1 ${CI_DATA}/squashfs-cache/${stack}-${environment}-${squash_base}*.sqfs 2> /dev/null | head -1)
+    sqfs_base_image=$(ls -t1 ${CI_DATA_LT}/squashfs-cache/${stack}-${environment}-${squash_base}*.sqfs 2> /dev/null | head -1)
     if [ $? -ne 0 ]
     then
         echo "No default branch ($squash_base) squashfs found"
         echo "Creating an empty one"
         empty=$(mktemp -d)
-        sqfs_base_image="${CI_DATA}/squashfs-cache/${stack}-${environment}-${squash_base}-initial.sqfs"
+        sqfs_base_image="${CI_DATA_LT}/squashfs-cache/${stack}-${environment}-${squash_base}-initial.sqfs"
         mksquashfs ${empty} ${sqfs_base_image}
     else
         echo "Found ${sqfs_base_image}"
@@ -36,18 +36,18 @@ then
     set -o errexit
 
     # Link MR sqaushfs to the one of default branch
-    sqfs_image=${CI_DATA}/squashfs-cache/${stack}-${environment}-${squash_id}.sqfs
+    sqfs_image=${CI_DATA_LT}/squashfs-cache/${stack}-${environment}-${squash_id}.sqfs
 
-    cd ${CI_DATA}/squashfs-cache
+    cd ${CI_DATA_LT}/squashfs-cache
     ln -sf $(basename ${sqfs_base_image}) $(basename ${sqfs_image})
     cd -
 
     echo "Linking ${sqfs_image} -> ${sqfs_base_image}"
 else
     set -o errexit
-    if [ ${sqfs_image} != ${CI_DATA}/squashfs-cache/${stack}-${environment}-${squash_id}.sqfs ];
+    if [ ${sqfs_image} != ${CI_DATA_LT}/squashfs-cache/${stack}-${environment}-${squash_id}.sqfs ];
     then
-        cd ${CI_DATA}/squashfs-cache
+        cd ${CI_DATA_LT}/squashfs-cache
         ln -sf $(basname ${sqfs_image}) ${stack}-${environment}-${squash_id}.sqfs
         cd
     fi
diff --git a/ci/squashfuse_ll.sh b/ci/squashfuse_ll.sh
index 7e22cbc..368ae14 100755
--- a/ci/squashfuse_ll.sh
+++ b/ci/squashfuse_ll.sh
@@ -2,7 +2,7 @@
 
 CI_DATA=$1
 suffix=$2
-image=$3
+image_path=$3
 mount_point=$4
 
 for i in upper wd
@@ -14,4 +14,6 @@ do
     mkdir -p ${CI_DATA}/overlayfs/$i-${suffix}
 done
 
+image=${image_path}/${suffix}.sqfs
+
 /usr/libexec/apptainer/bin/squashfuse_ll $image $mount_point
-- 
GitLab