Browse Source

build and cache all packages and CI dependencies

This fixes the problem where some artifacts were not being cached when
they should have been. The secret sauce is the  `nix-store` command.
generate-config
Charles Hall 2 years ago committed by Matthias Ahouansou
parent
commit
a4c973e57e
No known key found for this signature in database
  1. 23
      bin/nix-build-and-cache

23
bin/nix-build-and-cache

@ -17,15 +17,24 @@ if [ ! -z ${ATTIC_TOKEN+x} ]; then
"${ATTIC_ENDPOINT:-https://attic.conduit.rs/conduit}" \
"$ATTIC_TOKEN"
readarray -t outputs < <(nix path-info "$@")
readarray -t derivations < <(nix path-info "$@" --derivation)
for derivation in "${derivations[@]}"; do
cache+=(
"$(nix-store --query --requisites --include-outputs "$derivation")"
)
done
# Upload them to Attic
#
# Use `xargs` and a here-string because something would probably explode if
# several thousand arguments got passed to a command at once. Hopefully no
# store paths include a newline in them.
(
IFS=$'\n'
nix shell --inputs-from . attic -c xargs \
attic push conduit <<< "${cache[*]}"
)
# Push the target installable and its build dependencies
nix run --inputs-from . attic -- \
push \
conduit \
"${outputs[@]}" \
"${derivations[@]}"
else
echo "\$ATTIC_TOKEN is unset, skipping uploading to the binary cache"
fi

Loading…
Cancel
Save