mirror of
https://gitlab.com/TECHNOFAB/nix-gitlab-ci.git
synced 2025-12-12 02:00:13 +01:00
refactor(flake): move setup and finalize script to separate files
This commit is contained in:
parent
62e465c094
commit
1e978a3edf
3 changed files with 83 additions and 82 deletions
84
flake.nix
84
flake.nix
|
|
@ -88,88 +88,8 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
packages = let
|
packages = let
|
||||||
setupScript = pkgs.writeShellScriptBin "setup_nix_ci" ''
|
setupScript = pkgs.writeShellScriptBin "setup_nix_ci" (builtins.readFile ./scripts/setup_nix_ci.sh);
|
||||||
echo -e "\\e[0Ksection_start:`date +%s`:nix_setup[collapsed=true]\\r\\e[0KSetting up Nix CI"
|
finalizeScript = pkgs.writeShellScriptBin "finalize_nix_ci" (builtins.readFile ./scripts/finalize_nix_ci.sh);
|
||||||
nix path-info --all > /tmp/nix-store-before
|
|
||||||
|
|
||||||
if [ -z "$NIX_CI_DISABLE_CACHE" ]; then
|
|
||||||
echo -e "\\e[0Ksection_start:`date +%s`:cache_setup[collapsed=true]\\r\\e[0KConfiguring cache ($NIX_CI_CACHE_STRATEGY)"
|
|
||||||
case "$NIX_CI_CACHE_STRATEGY" in
|
|
||||||
"runner")
|
|
||||||
export RUNNER_CACHE=''${RUNNER_CACHE:-"file://$(pwd)/.nix-cache"}
|
|
||||||
echo "Runner Cache: $RUNNER_CACHE"
|
|
||||||
export NIX_CONFIG="$NIX_CONFIG
|
|
||||||
extra-trusted-substituters = $RUNNER_CACHE?priority=10&trusted=true
|
|
||||||
extra-substituters = $RUNNER_CACHE?priority=10&trusted=true
|
|
||||||
"
|
|
||||||
;;
|
|
||||||
"attic")
|
|
||||||
echo "Attic Cache: $ATTIC_CACHE"
|
|
||||||
attic login --set-default ci "$ATTIC_SERVER" "$ATTIC_TOKEN" || true
|
|
||||||
attic use "$ATTIC_CACHE" || true
|
|
||||||
;;
|
|
||||||
"cachix")
|
|
||||||
echo "Cachix Cache: $CACHIX_CACHE"
|
|
||||||
cachix use "$CACHIX_CACHE" || true
|
|
||||||
;;
|
|
||||||
"none")
|
|
||||||
echo "Cache strategy is none, doing nothing..."
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "WARNING: Invalid cache strategy set: '$NIX_CI_CACHE_STRATEGY'"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
echo -e "\\e[0Ksection_end:`date +%s`:cache_setup\\r\\e[0K"
|
|
||||||
else
|
|
||||||
echo "Caching disabled (NIX_CI_DISABLE_CACHE), skipping cache configuration..."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# load the job's deps only if the name was passed
|
|
||||||
if [[ ! -z $1 ]]; then
|
|
||||||
echo -e "\\e[0Ksection_start:`date +%s`:nix_deps[collapsed=true]\\r\\e[0KFetching Nix dependencies for job"
|
|
||||||
nix build .#$1
|
|
||||||
source $(readlink -f result)
|
|
||||||
echo -e "\\e[0Ksection_end:`date +%s`:nix_deps\\r\\e[0K"
|
|
||||||
fi
|
|
||||||
echo -e "\\e[0Ksection_end:`date +%s`:nix_setup\\r\\e[0K"
|
|
||||||
'';
|
|
||||||
finalizeScript = pkgs.writeShellScriptBin "finalize_nix_ci" ''
|
|
||||||
echo -e "\\e[0Ksection_start:`date +%s`:finalize_nix_ci[collapsed=true]\\r\\e[0KFinalizing Nix CI..."
|
|
||||||
nix path-info --all > /tmp/nix-store-after
|
|
||||||
echo "Finding new paths..."
|
|
||||||
NEW_PATHS=$(${pkgs.diffutils}/bin/diff --new-line-format="%L" \
|
|
||||||
--old-line-format="" --unchanged-line-format="" \
|
|
||||||
/tmp/nix-store-before /tmp/nix-store-after)
|
|
||||||
COUNT=$(${pkgs.busybox}/bin/wc -l <<<"$NEW_PATHS")
|
|
||||||
if [ -z "$NIX_CI_DISABLE_CACHE" ]; then
|
|
||||||
echo -e "\\e[0Ksection_start:`date +%s`:cache_push[collapsed=true]\\r\\e[0KPushing $COUNT new store paths to cache ($NIX_CI_CACHE_STRATEGY)"
|
|
||||||
echo $NEW_PATHS | {
|
|
||||||
case "$NIX_CI_CACHE_STRATEGY" in
|
|
||||||
"runner")
|
|
||||||
export RUNNER_CACHE=''${RUNNER_CACHE:-"file://$(pwd)/.nix-cache"}
|
|
||||||
# add ^* to all store paths ending in .drv (prevent warning log spam)
|
|
||||||
${pkgs.gnused}/bin/sed '/\.drv$/s/$/^*/' | nix copy --quiet --to "$RUNNER_CACHE" --stdin || true
|
|
||||||
;;
|
|
||||||
"attic")
|
|
||||||
attic push --stdin ci:$ATTIC_CACHE || true
|
|
||||||
;;
|
|
||||||
"cachix")
|
|
||||||
cachix push $CACHIX_CACHE || true
|
|
||||||
;;
|
|
||||||
"none")
|
|
||||||
echo "Cache strategy is none, doing nothing..."
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
echo "WARNING: Invalid cache strategy set: '$NIX_CI_CACHE_STRATEGY'"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
echo -e "\\e[0Ksection_end:`date +%s`:cache_push\\r\\e[0K"
|
|
||||||
else
|
|
||||||
echo "Caching disabled, not uploading $COUNT new store entries..."
|
|
||||||
fi
|
|
||||||
echo -e "\\e[0Ksection_end:`date +%s`:finalize_nix_ci\\r\\e[0K"
|
|
||||||
'';
|
|
||||||
in {
|
in {
|
||||||
setup-script = setupScript;
|
setup-script = setupScript;
|
||||||
finalize-script = finalizeScript;
|
finalize-script = finalizeScript;
|
||||||
|
|
|
||||||
37
scripts/finalize_nix_ci.sh
Normal file
37
scripts/finalize_nix_ci.sh
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
echo -e "\\e[0Ksection_start:`date +%s`:finalize_nix_ci[collapsed=true]\\r\\e[0KFinalizing Nix CI..."
|
||||||
|
nix path-info --all > /tmp/nix-store-after
|
||||||
|
echo "Finding new paths..."
|
||||||
|
NEW_PATHS=$(${pkgs.diffutils}/bin/diff --new-line-format="%L" \
|
||||||
|
--old-line-format="" --unchanged-line-format="" \
|
||||||
|
/tmp/nix-store-before /tmp/nix-store-after)
|
||||||
|
COUNT=$(${pkgs.busybox}/bin/wc -l <<<"$NEW_PATHS")
|
||||||
|
|
||||||
|
if [ -z "$NIX_CI_DISABLE_CACHE" ]; then
|
||||||
|
echo -e "\\e[0Ksection_start:`date +%s`:cache_push[collapsed=true]\\r\\e[0KPushing $COUNT new store paths to cache ($NIX_CI_CACHE_STRATEGY)"
|
||||||
|
echo $NEW_PATHS | {
|
||||||
|
case "$NIX_CI_CACHE_STRATEGY" in
|
||||||
|
"runner")
|
||||||
|
export RUNNER_CACHE=''${RUNNER_CACHE:-"file://$(pwd)/.nix-cache"}
|
||||||
|
# add ^* to all store paths ending in .drv (prevent warning log spam)
|
||||||
|
${pkgs.gnused}/bin/sed '/\.drv$/s/$/^*/' | nix copy --quiet --to "$RUNNER_CACHE" --stdin || true
|
||||||
|
;;
|
||||||
|
"attic")
|
||||||
|
attic push --stdin ci:$ATTIC_CACHE || true
|
||||||
|
;;
|
||||||
|
"cachix")
|
||||||
|
cachix push $CACHIX_CACHE || true
|
||||||
|
;;
|
||||||
|
"none")
|
||||||
|
echo "Cache strategy is none, doing nothing..."
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "WARNING: Invalid cache strategy set: '$NIX_CI_CACHE_STRATEGY'"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
echo -e "\\e[0Ksection_end:`date +%s`:cache_push\\r\\e[0K"
|
||||||
|
else
|
||||||
|
echo "Caching disabled, not uploading $COUNT new store entries..."
|
||||||
|
fi
|
||||||
|
echo -e "\\e[0Ksection_end:`date +%s`:finalize_nix_ci\\r\\e[0K"
|
||||||
|
|
||||||
44
scripts/setup_nix_ci.sh
Normal file
44
scripts/setup_nix_ci.sh
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
echo -e "\\e[0Ksection_start:`date +%s`:nix_setup[collapsed=true]\\r\\e[0KSetting up Nix CI"
|
||||||
|
nix path-info --all > /tmp/nix-store-before
|
||||||
|
|
||||||
|
if [ -z "$NIX_CI_DISABLE_CACHE" ]; then
|
||||||
|
echo -e "\\e[0Ksection_start:`date +%s`:cache_setup[collapsed=true]\\r\\e[0KConfiguring cache ($NIX_CI_CACHE_STRATEGY)"
|
||||||
|
case "$NIX_CI_CACHE_STRATEGY" in
|
||||||
|
"runner")
|
||||||
|
export RUNNER_CACHE=''${RUNNER_CACHE:-"file://$(pwd)/.nix-cache"}
|
||||||
|
echo "Runner Cache: $RUNNER_CACHE"
|
||||||
|
export NIX_CONFIG="$NIX_CONFIG
|
||||||
|
extra-trusted-substituters = $RUNNER_CACHE?priority=10&trusted=true
|
||||||
|
extra-substituters = $RUNNER_CACHE?priority=10&trusted=true
|
||||||
|
"
|
||||||
|
;;
|
||||||
|
"attic")
|
||||||
|
echo "Attic Cache: $ATTIC_CACHE"
|
||||||
|
attic login --set-default ci "$ATTIC_SERVER" "$ATTIC_TOKEN" || true
|
||||||
|
attic use "$ATTIC_CACHE" || true
|
||||||
|
;;
|
||||||
|
"cachix")
|
||||||
|
echo "Cachix Cache: $CACHIX_CACHE"
|
||||||
|
cachix use "$CACHIX_CACHE" || true
|
||||||
|
;;
|
||||||
|
"none")
|
||||||
|
echo "Cache strategy is none, doing nothing..."
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "WARNING: Invalid cache strategy set: '$NIX_CI_CACHE_STRATEGY'"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
echo -e "\\e[0Ksection_end:`date +%s`:cache_setup\\r\\e[0K"
|
||||||
|
else
|
||||||
|
echo "Caching disabled (NIX_CI_DISABLE_CACHE), skipping cache configuration..."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# load the job's deps only if the name was passed
|
||||||
|
if [[ ! -z $1 ]]; then
|
||||||
|
echo -e "\\e[0Ksection_start:`date +%s`:nix_deps[collapsed=true]\\r\\e[0KFetching Nix dependencies for job"
|
||||||
|
nix build .#$1
|
||||||
|
source $(readlink -f result)
|
||||||
|
echo -e "\\e[0Ksection_end:`date +%s`:nix_deps\\r\\e[0K"
|
||||||
|
fi
|
||||||
|
echo -e "\\e[0Ksection_end:`date +%s`:nix_setup\\r\\e[0K"
|
||||||
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue