diff --git a/action.yml b/action.yml index 3120fa8..8362388 100644 --- a/action.yml +++ b/action.yml @@ -4,6 +4,10 @@ branding: icon: 'folder' color: 'orange' inputs: + apt_cache: + description: 'Location (directory) of the user-space apt cache.' + required: false + default: 'apt_cache' cvmfs_alien_cache: description: 'If set, use an alien cache at the given location.' required: false @@ -331,11 +335,26 @@ inputs: runs: using: "composite" steps: + - id: lsb-release + run: | + source /etc/lsb-release + echo "::set-output name=id::${DISTRIB_ID}" + echo "::set-output name=release::${DISTRIB_RELEASE}" + echo "::set-output name=codename::${DISTRIB_CODENAME}" + echo "::set-output name=description::${DISTRIB_DESCRIPTION}" + echo "::set-output name=id-release::${DISTRIB_ID}-${DISTRIB_DESCRIPTION}" + shell: bash + - uses: actions/cache@v3 + with: + key: cvmfs-apt-cache-${{ steps.lsb-release.outputs.id-release }}-${{ hashFiles('action.yml') }} + path: | + ${{ inputs.apt_cache }} - run: | ${{ github.action_path }}/setup-cvmfs.sh shell: bash env: ACTION_PATH: ${{ github.action_path }} + APT_CACHE: ${{ inputs.apt_cache }} CVMFS_ALIEN_CACHE: ${{ inputs.cvmfs_alien_cache }} CVMFS_ALT_ROOT_PATH: ${{ inputs.cvmfs_alt_root_path }} CVMFS_AUTHZ_HELPER: ${{ inputs.cvmfs_authz_helper }} diff --git a/setup-cvmfs.sh b/setup-cvmfs.sh index 74163e5..09fa9e7 100755 --- a/setup-cvmfs.sh +++ b/setup-cvmfs.sh @@ -1,18 +1,36 @@ #!/usr/bin/env bash -#Platform specific install +# Platform specific install if [ "$(uname)" == "Linux" ]; then - curl -L -o cvmfs-release-latest_all.deb ${CVMFS_UBUNTU_DEB_LOCATION} - sudo dpkg -i cvmfs-release-latest_all.deb + # download from cache + if [ -n "${APT_CACHE}" ]; then + echo "Copying cache from ${APT_CACHE} to system locations..." + mkdir -p ${APT_CACHE}/archives/ ${APT_CACHE}/lists/ + sudo cp -r ${APT_CACHE}/archives /var/cache/apt + sudo cp -r ${APT_CACHE}/lists /var/lib/apt + fi + # install cvmfs release package + APT_ARCHIVES=/var/cache/apt/archives/ + if [ ! -f ${APT_ARCHIVES}/cvmfs-release-latest_all.deb ] ; then + sudo curl -L -o ${APT_ARCHIVES}/cvmfs-release-latest_all.deb ${CVMFS_UBUNTU_DEB_LOCATION} + fi + sudo dpkg -i ${APT_ARCHIVES}/cvmfs-release-latest_all.deb + # install cvmfs package sudo apt-get -q update sudo apt-get -q -y install cvmfs - rm -f cvmfs-release-latest_all.deb + # install cvmfs config package if [ "${CVMFS_CONFIG_PACKAGE}" == "cvmfs-config-default" ]; then sudo apt-get -q -y install cvmfs-config-default else - curl -L -o cvmfs-config.deb ${CVMFS_CONFIG_PACKAGE} - sudo dpkg -i cvmfs-config.deb - rm -f cvmfs-config.deb + sudo curl -L -o ${APT_ARCHIVES}/cvmfs-config.deb ${CVMFS_CONFIG_PACKAGE} + sudo dpkg -i ${APT_ARCHIVES}/cvmfs-config.deb + fi + # update cache (avoid restricted partial directories) + if [ -n "${APT_CACHE}" ]; then + echo "Copying cache from system locations to ${APT_CACHE}..." + mkdir -p ${APT_CACHE}/archives/ ${APT_CACHE}/lists/ + cp /var/cache/apt/archives/*.deb ${APT_CACHE}/archives/ + cp /var/lib/apt/lists/*_dists_* ${APT_CACHE}/lists/ fi elif [ "$(uname)" == "Darwin" ]; then # Warn about the phasing out of MacOS support for this action