feat(cache): add initial nix cache shell program for using attic with actions
This commit is contained in:
parent
1103d6b4ab
commit
e0a81b0b26
1 changed files with 64 additions and 0 deletions
64
apps/ci-os/packages/cache/default.nix
vendored
Normal file
64
apps/ci-os/packages/cache/default.nix
vendored
Normal file
|
@ -0,0 +1,64 @@
|
||||||
|
{ pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with pkgs;
|
||||||
|
|
||||||
|
writeShellApplication rec {
|
||||||
|
name = "attic-action";
|
||||||
|
|
||||||
|
runtimeInputs = [ attic-client ];
|
||||||
|
|
||||||
|
# Define the shell script
|
||||||
|
text = ''
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
# Default values
|
||||||
|
ATTIC_ENDPOINT="${ATTIC_ENDPOINT:-https://cache.252.no}"
|
||||||
|
ATTIC_CACHE="${ATTIC_CACHE:-nix-gitops}"
|
||||||
|
ATTIC_TOKEN="${ATTIC_TOKEN:-}"
|
||||||
|
SKIP_PUSH="${SKIP_PUSH:-false}"
|
||||||
|
SKIP_USE="${SKIP_USE:-false}"
|
||||||
|
|
||||||
|
# Ensure required inputs are provided
|
||||||
|
if [[ -z "$ATTIC_ENDPOINT" || -z "$ATTIC_CACHE" ]]; then
|
||||||
|
echo "Error: Both ATTIC_ENDPOINT and ATTIC_CACHE are required."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -z "$ATTIC_TOKEN" ]]; then
|
||||||
|
echo "Warning: ATTIC_TOKEN is not set. Operations requiring authentication might fail."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add the cache as a substituter unless SKIP_USE is true
|
||||||
|
if [[ "$SKIP_USE" != "true" ]]; then
|
||||||
|
echo "Adding $ATTIC_ENDPOINT as a substituter..."
|
||||||
|
attic use --endpoint "$ATTIC_ENDPOINT" "$ATTIC_CACHE" || {
|
||||||
|
echo "Error: Failed to add substituter."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
else
|
||||||
|
echo "Skipping use of cache as substituter."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Push to the cache unless SKIP_PUSH is true
|
||||||
|
if [[ "$SKIP_PUSH" != "true" ]]; then
|
||||||
|
echo "Pushing results to $ATTIC_ENDPOINT/$ATTIC_CACHE..."
|
||||||
|
attic push --endpoint "$ATTIC_ENDPOINT" "$ATTIC_CACHE" || {
|
||||||
|
echo "Error: Failed to push to cache."
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
else
|
||||||
|
echo "Skipping cache push."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "Attic action completed successfully."
|
||||||
|
'';
|
||||||
|
|
||||||
|
# Metadata for the package
|
||||||
|
meta = with lib; {
|
||||||
|
homepage = "https://code.252.no/tommy/containers";
|
||||||
|
description = "Binary cache server action script for CI pipelines";
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = with maintainers; [ "tommy-skaug" ];
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue