feat(shell): Add an action to cache it

This commit is contained in:
sinavir 2024-12-21 13:40:31 +01:00
parent 5fa7ccb8e7
commit 97d3b9fc57
No known key found for this signature in database
5 changed files with 79 additions and 0 deletions

View file

@ -0,0 +1,19 @@
jobs:
build-shell:
runs-on: nix
steps:
- uses: actions/checkout@v3
- env:
STORE_ENDPOINT: https://tvix-store.dgnum.eu/infra-signing/
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
STORE_USER: admin
name: Build and cache shell
run: nix-shell -A eval-shell --run "nix-cache -A devShell"
name: Build the shell
on:
pull_request:
branches:
- main
push:
branches:
- main

View file

@ -180,6 +180,7 @@ in
pre-commit.shellHook = git-checks.shellHook;
check-workflows.shellHook = workflows.shellHook;
eval-nodes.packages = [ scripts.cache-node ];
eval-shell.packages = [ scripts.nix-cache ];
};
};
}

View file

@ -21,6 +21,7 @@ let
scripts = {
cache-node = [ colmena ];
nix-cache = [ colmena ];
check-deployment = [
colmena
jq

29
scripts/nix-cache.sh Normal file
View file

@ -0,0 +1,29 @@
# 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

29
workflows/eval-shell.nix Normal file
View file

@ -0,0 +1,29 @@
# SPDX-FileCopyrightText: 2024 Tom Hubrecht <tom.hubrecht@dgnum.eu>
#
# SPDX-License-Identifier: EUPL-1.2
{
name = "Build the shell";
on = {
pull_request.branches = [ "main" ];
push.branches = [ "main" ];
};
jobs = {
build-shell = {
runs-on = "nix";
steps = [
{ uses = "actions/checkout@v3"; }
{
name = "Build and cache shell";
run = "nix-shell -A eval-shell --run \"nix-cache -A devShell\"";
env = {
STORE_ENDPOINT = "https://tvix-store.dgnum.eu/infra-signing/";
STORE_USER = "admin";
STORE_PASSWORD = "\${{ secrets.STORE_PASSWORD }}";
};
}
];
};
};
}