Cache has not been hitting the actual cache bits, so now we will tell it to reach out to the cache server locally and check for the ISO to be present in the bucket before we run the curl at all
37 lines
824 B
Nix
37 lines
824 B
Nix
{
|
|
writeShellApplication,
|
|
active,
|
|
distroFile,
|
|
|
|
curl,
|
|
minio-client,
|
|
packer,
|
|
|
|
...
|
|
}:
|
|
|
|
let
|
|
inherit (builtins) concatStringsSep map;
|
|
in writeShellApplication {
|
|
name = "cache-isos";
|
|
runtimeInputs = [
|
|
curl
|
|
minio-client
|
|
packer
|
|
];
|
|
text = ''
|
|
mc alias set storage "$STORAGE_URL" root "$MINIO_SECRET"
|
|
'' + (concatStringsSep "\n" (
|
|
map (d: ''
|
|
url=$(echo var.iso.url | packer console -var-file="${distroFile d}" -config-type=hcl2 sources/)
|
|
sha=$(echo var.iso.checksum | packer console -var-file="${distroFile d}" -config-type=hcl2 sources/)
|
|
if [ -z "$(mc ls storage/isos/cache/ | grep $sha)" ]; then
|
|
curl --retry 3 --retry-all-errors -o "cache/$sha.iso" "$url"
|
|
mc put "cache/$sha.iso" "storage/isos/cache/$sha.iso"
|
|
else
|
|
echo "Skipping ${d.distro} - cache/$sha.iso"
|
|
fi
|
|
'') active
|
|
));
|
|
}
|