Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-12-16 10:37:34

0001 #!/usr/bin/env bash
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   # the curl above is fragile, so retry until successful
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"