#! /usr/bin/env bash set -e set -ux seed=$(date) log="${MAGIC_NIX_CACHE_DAEMONDIR}/daemon.log" binary_cache=https://cache.flakehub.com # Check that the action initialized correctly. grep 'FlakeHub cache is enabled' "${log}" grep 'Using cache' "${log}" grep 'GitHub Action cache is enabled' "${log}" # Build something. outpath=$(nix-build .github/workflows/cache-tester.nix --argstr seed "$seed") # Check that the path was enqueued to be pushed to the cache. grep "Enqueueing.*${outpath}" "${log}" # Wait until it has been pushed succesfully. found= for ((i = 0; i < 60; i++)); do sleep 1 if grep "✅ $(basename "${outpath}")" "${log}"; then found=1 break fi done if [[ -z $found ]]; then echo "FlakeHub push did not happen." >&2 exit 1 fi # Check the FlakeHub binary cache to see if the path is really there. nix path-info --store "${binary_cache}" "${outpath}" # FIXME: remove this once the daemon also uploads to GHA automatically. nix copy --to 'http://127.0.0.1:37515' "${outpath}" rm ./result nix store delete "${outpath}" if [ -f "$outpath" ]; then echo "$outpath still exists? can't test" exit 1 fi rm -rf ~/.cache/nix echo "-------" echo "Trying to substitute the build again..." echo "if it fails, the cache is broken." nix-store --realize -vvvvvvvv "$outpath"