name: Snapshotter on: push: paths-ignore: - "**.md" - "channel.yaml" - "install.sh" - "tests/**" - "!tests/snapshotter/**" - ".github/**" - "!.github/workflows/snapshotter.yaml" pull_request: paths-ignore: - "**.md" - "channel.yaml" - "install.sh" - "tests/**" - "!tests/snapshotter/**" - ".github/**" - "!.github/workflows/snapshotter.yaml" workflow_dispatch: {} permissions: contents: read jobs: prep: name: "Prepare" runs-on: ubuntu-20.04 timeout-minutes: 40 steps: - name: "Checkout" uses: actions/checkout@v3 with: { fetch-depth: 1 } - name: "Build" run: DOCKER_BUILDKIT=1 SKIP_VALIDATE=1 make - name: "Upload Binary" uses: actions/upload-artifact@v3 with: { name: k3s, path: dist/artifacts/k3s } test: name: "Smoke Test" needs: prep # nested virtualization is only available on macOS hosts runs-on: macos-12 timeout-minutes: 40 strategy: fail-fast: false matrix: vm: [opensuse-leap] snapshotter: [btrfs] max-parallel: 1 defaults: run: working-directory: tests/snapshotter/${{ matrix.snapshotter }}/${{ matrix.vm }} env: VAGRANT_EXPERIMENTAL: disks steps: - name: "Checkout" uses: actions/checkout@v3 with: { fetch-depth: 1 } - name: "Download Binary" uses: actions/download-artifact@v3 with: { name: k3s, path: dist/artifacts/ } - name: "Vagrant Cache" uses: actions/cache@v3 with: path: | ~/.vagrant.d/boxes ~/.vagrant.d/gems key: snapshotter-${{ hashFiles(format('tests/snapshotter/{0}/{1}/Vagrantfile', matrix.snapshotter, matrix.vm)) }} id: vagrant-cache continue-on-error: true - name: "Vagrant Plugin(s)" run: vagrant plugin install vagrant-k3s - name: "Vagrant Up ⏩ Install K3s" run: vagrant up - name: "⏳ Node" run: vagrant provision --provision-with=k3s-wait-for-node - name: "⏳ CoreDNS" run: vagrant provision --provision-with=k3s-wait-for-coredns - name: "k3s-status" # kubectl get node,all -A -o wide run: vagrant provision --provision-with=k3s-status - name: "k3s-snapshots" # if no snapshots then we fail run: vagrant provision --provision-with=k3s-snapshots