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