--- name: "Cache" on: workflow_call: jobs: molecule: name: cache runs-on: [self-hosted, linux, x64, k3s-ci, virtualbox, nested-virt] env: PYTHON_VERSION: "3.11" VAGRANT_DEFAULT_PROVIDER: virtualbox VAGRANT_HOME: ${{ github.workspace }}/.vagrant-home steps: - name: Check out the codebase uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # 4.2.2 with: ref: ${{ github.event.pull_request.head.sha || github.sha }} - name: Check nested VirtualBox platform run: | set -Eeuo pipefail grep -Eq 'vmx|svm' /proc/cpuinfo test -c /dev/kvm test -c /dev/vboxdrv VBoxManage --version vagrant --version test -r /etc/vbox/networks.conf test "$(stat -c '%u' /etc/vbox/networks.conf)" -eq 0 free -h df -Pk "${RUNNER_TEMP}" - name: Set up Python ${{ env.PYTHON_VERSION }} uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # 5.3.0 with: python-version: ${{ env.PYTHON_VERSION }} cache: 'pip' # caching pip dependencies - name: Cache Vagrant boxes id: cache-vagrant uses: actions/cache@6849a6489940f00c2f30c0fb92c6274307ccb58a # 4.1.2 with: lookup-only: true # if it exists, we don't need to restore and can skip the next step path: | .vagrant-home/boxes key: vagrant-boxes-${{ runner.os }}-${{ runner.arch }}-virtualbox-7.2-vagrant-2.4-${{ hashFiles('**/molecule.yml') }} # yamllint disable-line rule:line-length restore-keys: | vagrant-boxes-${{ runner.os }}-${{ runner.arch }}-virtualbox-7.2-vagrant-2.4- - name: Download Vagrant boxes for all scenarios # To save some cache space, all scenarios share the same cache key. # On the other hand, this means that the cache contents should be # the same across all scenarios. This step ensures that. if: steps.cache-vagrant.outputs.cache-hit != 'true' # only run if false since this is just a cache step run: | ./.github/download-boxes.sh vagrant box list