61 lines
1.5 KiB
Bash
Executable file
61 lines
1.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
cd "${BASH_SOURCE[0]%/*}"
|
|
|
|
cachixCache=nix-bitcoin
|
|
|
|
# Declare variables for shellcheck
|
|
driverDrvs=()
|
|
drivers=()
|
|
scenarioTests=()
|
|
|
|
echo '::group::Eval test drivers'
|
|
# Call ./test-info.nix
|
|
testInfo=$(time nix eval --raw --show-trace ../..#ciTestInfo)
|
|
# This sets variables `driverDrvs`, `drivers`, `scenarioTests`
|
|
eval "$testInfo"
|
|
|
|
for i in "${!drivers[@]}"; do
|
|
echo "${drivers[$i]}"
|
|
echo "${driverDrvs[$i]%^*}"
|
|
done
|
|
echo '::endgroup::'
|
|
|
|
if nix path-info --store "https://${cachixCache}.cachix.org" "${scenarioTests[@]}" &>/dev/null; then
|
|
echo
|
|
echo "All tests have already been built successfully:"
|
|
printf '%s\n' "${scenarioTests[@]}"
|
|
exit 0
|
|
fi
|
|
|
|
echo "run_scenario_tests=true" >> "$GITHUB_OUTPUT"
|
|
|
|
## Build test drivers
|
|
|
|
if nix path-info --store "https://${cachixCache}.cachix.org" "${drivers[@]}" &>/dev/null; then
|
|
echo
|
|
echo "All test drivers have already been built successfully:"
|
|
exit 0
|
|
fi
|
|
|
|
echo '::group::Build test drivers'
|
|
|
|
if [[ -v GITHUB_ACTIONS ]]; then
|
|
# Avoid cachix warning message
|
|
mkdir -p ~/.config/nix && touch ~/.config/nix/nix.conf
|
|
cachix use "$cachixCache"
|
|
fi
|
|
|
|
if [[ $CACHIX_SIGNING_KEY ]]; then
|
|
# Speed up task by uploading store paths as soon as they are created
|
|
buildCmd="cachix watch-exec $cachixCache nix -- build"
|
|
else
|
|
buildCmd="nix build"
|
|
fi
|
|
|
|
$buildCmd --no-link --print-build-logs "${driverDrvs[@]}"
|
|
|
|
if [[ $CACHIX_SIGNING_KEY ]]; then
|
|
cachix push "$cachixCache" "${drivers[@]}"
|
|
fi
|