feat(shell): Add an action to cache it #200

Open
mdebray wants to merge 2 commits from cache_shell into main
7 changed files with 25 additions and 63 deletions
Showing only changes of commit 6a3511cc71 - Show all commits

View file

@ -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:

View file

@ -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 ];
}; };
}; };
} }

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,5 @@
# SPDX-FileCopyrightText: 2024 Maurice Debray <maurice@dgnum.eu>
#
# SPDX-License-Identifier: EUPL-1.2
push-to-cache "$(nix-build "$@")"

View file

@ -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

View file

@ -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";