File indexing completed on 2025-12-16 10:37:34
0001
0002 set -Euo pipefail
0003 trap 's=$?; echo "$0: Error on line "$LINENO": $BASH_COMMAND"; exit $s' ERR
0004 IFS=$'\n\t'
0005
0006 echo "::group::Checking if there is a working CVMFS mount"
0007
0008 if [ ! -d "/cvmfs/singularity.opensciencegrid.org" ]; then
0009 echo "The directory /cvmfs/singularity.opensciencegrid.org cannot be accessed!"
0010 echo "Make sure you are using the cvmfs-contrib/github-action-cvmfs@v2 action"
0011 exit 1
0012 fi
0013
0014 echo "CVMFS mount present"
0015 echo "::endgroup::"
0016
0017 if [ -z "${SANDBOX_PATH}" ]; then
0018 SANDBOX_PATH="/cvmfs/singularity.opensciencegrid.org/${EIC_SHELL_ORGANIZATION}/${EIC_SHELL_PLATFORM_RELEASE}"
0019 if [[ "${EIC_SHELL_RELEASE}" == *"dev"* ]]; then
0020 SANDBOX_PATH="/cvmfs/singularity.opensciencegrid.org/${EIC_SHELL_ORGANIZATION}/${EIC_SHELL_PLATFORM}:${EIC_SHELL_RELEASE}"
0021 fi
0022 fi
0023
0024 echo "Full EIC shell path is ${SANDBOX_PATH}"
0025
0026 if [ ! -d "${SANDBOX_PATH}" ]; then
0027 echo "Did not find an EIC shell under this path!"
0028 exit 1
0029 fi
0030
0031 echo "#!/usr/bin/env bash
0032 export LC_ALL=C
0033 set -Euo pipefail
0034 trap 's=\$?; echo \"\$0: Error on line \"\$LINENO\": \$BASH_COMMAND\"; exit \$s' ERR
0035 IFS=\$'\n\t'
0036 set -e
0037
0038 ${SETUP:+source ${SETUP}}
0039
0040 ${RUN}
0041 " > ${GITHUB_WORKSPACE}/action_payload.sh
0042 chmod a+x ${GITHUB_WORKSPACE}/action_payload.sh
0043
0044 if [[ ${APPTAINER_VERSION} == "latest" ]] ; then
0045 v=$(curl -sL --retry 5 https://api.github.com/repos/apptainer/apptainer/releases/latest | jq -r ".tag_name")
0046
0047 while [[ ${v} == "null" ]] ; do
0048 sleep 5
0049 v=$(curl -sL --retry 5 https://api.github.com/repos/apptainer/apptainer/releases/latest | jq -r ".tag_name")
0050 done
0051 else
0052 v=${APPTAINER_VERSION}
0053 fi
0054
0055 echo "::group::Installing Apptainer ${v}"
0056 for deb in "apptainer_${v/v/}_amd64.deb" "apptainer-suid_${v/v/}_amd64.deb"; do
0057 mkdir -p ${APPTAINER_DEB_CACHE}
0058 if [ ! -s ${APPTAINER_DEB_CACHE}/${deb} ] ; then
0059 wget --tries 5 --output-document ${APPTAINER_DEB_CACHE}/${deb} https://github.com/apptainer/apptainer/releases/download/${v}/${deb}
0060 echo "cache-update=true" >> $GITHUB_OUTPUT
0061 fi
0062 sudo rm -f /var/lib/man-db/auto-update
0063 sudo cp ${APPTAINER_DEB_CACHE}/${deb} /var/cache/apt/archives/${deb}
0064 sudo apt-get -q -y install /var/cache/apt/archives/${deb}
0065 sudo touch /var/lib/man-db/auto-update
0066 done
0067 echo "::endgroup::"
0068
0069 worker=$(echo ${SANDBOX_PATH} | sha256sum | awk '{print$1}')
0070 if apptainer instance list | grep ${worker} ; then
0071 echo "Reusing exisitng Apptainer image from ${SANDBOX_PATH}"
0072 else
0073 echo "Starting Apptainer image from ${SANDBOX_PATH}"
0074 apptainer instance start --bind /cvmfs --bind ${GITHUB_WORKSPACE}:${GITHUB_WORKSPACE} ${SANDBOX_PATH} ${worker}
0075 fi
0076
0077 echo "####################################################################"
0078 echo "###################### Executing user payload ######################"
0079 echo "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV"
0080
0081 apptainer exec instance://${worker} /bin/bash -c "cd ${GITHUB_WORKSPACE}; ./action_payload.sh"