feat(shell): Add an action to cache it #200
7 changed files with 25 additions and 63 deletions
|
@ -8,7 +8,7 @@ jobs:
|
||||||
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
|
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
|
||||||
STORE_USER: admin
|
STORE_USER: admin
|
||||||
name: Build and cache shell
|
name: Build and cache shell
|
||||||
run: nix-shell -A eval-shell --run "nix-cache -A devShell"
|
run: nix-shell -A eval-shell --run "nix-build-and-cache -A devShell"
|
||||||
name: Build the shell
|
name: Build the shell
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
|
|
|
@ -180,7 +180,7 @@ in
|
||||||
pre-commit.shellHook = git-checks.shellHook;
|
pre-commit.shellHook = git-checks.shellHook;
|
||||||
check-workflows.shellHook = workflows.shellHook;
|
check-workflows.shellHook = workflows.shellHook;
|
||||||
eval-nodes.packages = [ scripts.cache-node ];
|
eval-nodes.packages = [ scripts.cache-node ];
|
||||||
eval-shell.packages = [ scripts.nix-cache ];
|
eval-shell.packages = [ scripts.nix-build-and-cache ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,23 +35,4 @@ esac
|
||||||
drv=$(colmena eval --instantiate -E "{ nodes, ... }: nodes.${BUILD_NODE}.${toplevel_path}" --show-trace)
|
drv=$(colmena eval --instantiate -E "{ nodes, ... }: nodes.${BUILD_NODE}.${toplevel_path}" --show-trace)
|
||||||
|
|
||||||
# Build the derivation and send it to the great beyond
|
# Build the derivation and send it to the great beyond
|
||||||
nix-store --query --requisites --force-realise --include-outputs "$drv" | grep -v '.*\.drv' >paths.txt
|
push-to-cache "$(nix-store --realise "$drv")"
|
||||||
|
|
||||||
if [ "$STORE_PASSWORD" == "" ]; then
|
|
||||||
echo "No password given for the remote cache, uploading cannot take place."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat <<EOF >.netrc
|
|
||||||
default
|
|
||||||
login $STORE_USER
|
|
||||||
password $STORE_PASSWORD
|
|
||||||
EOF
|
|
||||||
|
|
||||||
nix copy \
|
|
||||||
--extra-experimental-features nix-command \
|
|
||||||
--to "$STORE_ENDPOINT?compression=none" \
|
|
||||||
--netrc-file .netrc \
|
|
||||||
"$(nix-store --realise "$drv")"
|
|
||||||
|
|
||||||
rm .netrc
|
|
||||||
|
|
|
@ -20,8 +20,12 @@ let
|
||||||
;
|
;
|
||||||
|
|
||||||
scripts = {
|
scripts = {
|
||||||
cache-node = [ colmena ];
|
cache-node = [
|
||||||
nix-cache = [ colmena ];
|
colmena
|
||||||
|
self.push-to-cache
|
||||||
|
];
|
||||||
|
push-to-cache = [ ];
|
||||||
|
nix-build-and-cache = [ self.push-to-cache ];
|
||||||
check-deployment = [
|
check-deployment = [
|
||||||
colmena
|
colmena
|
||||||
jq
|
jq
|
||||||
|
@ -30,13 +34,14 @@ let
|
||||||
launch-vm = [ colmena ];
|
launch-vm = [ colmena ];
|
||||||
list-nodes = [ jq ];
|
list-nodes = [ jq ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
self = mapAttrs (
|
||||||
|
name: runtimeInputs:
|
||||||
|
writeShellApplication {
|
||||||
|
inherit name runtimeInputs;
|
||||||
|
|
||||||
|
text = builtins.readFile ./${name}.sh;
|
||||||
|
}
|
||||||
|
) scripts;
|
||||||
in
|
in
|
||||||
|
self
|
||||||
mapAttrs (
|
|
||||||
name: runtimeInputs:
|
|
||||||
writeShellApplication {
|
|
||||||
inherit name runtimeInputs;
|
|
||||||
|
|
||||||
text = builtins.readFile ./${name}.sh;
|
|
||||||
}
|
|
||||||
) scripts
|
|
||||||
|
|
5
scripts/nix-build-and-cache.sh
Normal file
5
scripts/nix-build-and-cache.sh
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
# SPDX-FileCopyrightText: 2024 Maurice Debray <maurice@dgnum.eu>
|
||||||
|
#
|
||||||
|
# SPDX-License-Identifier: EUPL-1.2
|
||||||
|
|
||||||
|
push-to-cache "$(nix-build "$@")"
|
|
@ -1,29 +0,0 @@
|
||||||
# SPDX-FileCopyrightText: 2024 Ryan Lahfa <ryan.lahfa@dgnum.eu>
|
|
||||||
# SPDX-FileCopyrightText: 2024 Tom Hubrecht <tom.hubrecht@dgnum.eu>
|
|
||||||
# SPDX-FileContributor: Maurice Debray <maurice@dgnum.eu>
|
|
||||||
#
|
|
||||||
# SPDX-License-Identifier: EUPL-1.2
|
|
||||||
|
|
||||||
# Build the derivation and send it to the great beyond
|
|
||||||
|
|
||||||
drv=$(nix-instantiate "$@")
|
|
||||||
nix-store --query --requisites --force-realise --include-outputs "$drv" | grep -v '.*\.drv' > paths.txt
|
|
||||||
|
|
||||||
if [ "$STORE_PASSWORD" == "" ]; then
|
|
||||||
echo "No password given for the remote cache, uploading cannot take place."
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat <<EOF >.netrc
|
|
||||||
default
|
|
||||||
login $STORE_USER
|
|
||||||
password $STORE_PASSWORD
|
|
||||||
EOF
|
|
||||||
|
|
||||||
nix copy \
|
|
||||||
--extra-experimental-features nix-command \
|
|
||||||
--to "$STORE_ENDPOINT?compression=none" \
|
|
||||||
--netrc-file .netrc \
|
|
||||||
"$(nix-store --realise "$drv")"
|
|
||||||
|
|
||||||
rm .netrc
|
|
|
@ -16,7 +16,7 @@
|
||||||
{ uses = "actions/checkout@v3"; }
|
{ uses = "actions/checkout@v3"; }
|
||||||
{
|
{
|
||||||
name = "Build and cache shell";
|
name = "Build and cache shell";
|
||||||
run = "nix-shell -A eval-shell --run \"nix-cache -A devShell\"";
|
run = ''nix-shell -A eval-shell --run "nix-build-and-cache -A devShell"'';
|
||||||
env = {
|
env = {
|
||||||
STORE_ENDPOINT = "https://tvix-store.dgnum.eu/infra-signing/";
|
STORE_ENDPOINT = "https://tvix-store.dgnum.eu/infra-signing/";
|
||||||
STORE_USER = "admin";
|
STORE_USER = "admin";
|
||||||
|
|
Loading…
Reference in a new issue