mirror of
https://github.com/awalsh128/cache-apt-pkgs-action.git
synced 2026-03-28 15:08:50 +00:00
The existing add-repository parameter only supports apt-add-repository (PPAs and simple repo formats). Many third-party repos (NVIDIA, Docker, GitHub CLI, etc.) require downloading a GPG signing key and adding a sources list entry with signed-by= referencing that keyring. The new apt-sources input accepts multi-line entries in the format: key_url | source_spec Features: - Downloads GPG keys, auto-detects armored vs binary format - Supports both URL-based source files and inline deb lines - Auto-detects deb822 (.sources) vs traditional (.list) format - Injects signed-by= into source entries when not already present - Removes conflicting pre-existing source files that reference the same repo URL with a different keyring path - Includes apt-sources content in cache key hash - Validates HTTPS-only key URLs and proper line format - Forces apt update when apt-sources is specified (bypasses staleness check) Co-developed-by: Claude Code v2.1.58 (claude-opus-4-6)
44 lines
1.1 KiB
Bash
Executable file
44 lines
1.1 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Fail on any error.
|
|
set -e
|
|
|
|
# Include library.
|
|
script_dir="$(dirname -- "$(realpath -- "${0}")")"
|
|
source "${script_dir}/lib.sh"
|
|
|
|
# Directory that holds the cached packages.
|
|
cache_dir="${1}"
|
|
|
|
# Root directory to untar the cached packages to.
|
|
# Typically filesystem root '/' but can be changed for testing.
|
|
# WARNING: If non-root, this can cause errors during install script execution.
|
|
cache_restore_root="${2}"
|
|
|
|
# Indicates that the cache was found.
|
|
cache_hit="${3}"
|
|
|
|
# Cache and execute post install scripts on restore.
|
|
execute_install_scripts="${4}"
|
|
|
|
# Debug mode for diagnosing issues.
|
|
debug="${5}"
|
|
test "${debug}" = "true" && set -x
|
|
|
|
# Repositories to add before installing packages.
|
|
add_repository="${6}"
|
|
|
|
# GPG-signed third-party repository sources.
|
|
apt_sources="${7}"
|
|
|
|
# List of the packages to use.
|
|
packages="${@:8}"
|
|
|
|
if test "${cache_hit}" = "true"; then
|
|
${script_dir}/restore_pkgs.sh "${cache_dir}" "${cache_restore_root}" "${execute_install_scripts}" "${debug}"
|
|
else
|
|
${script_dir}/install_and_cache_pkgs.sh "${cache_dir}" "${debug}" "${add_repository}" "${apt_sources}" ${packages}
|
|
fi
|
|
|
|
log_empty_line
|