feat(quickget): add --check-all-arch to test amd64 and arm64
- Add CLI flag --check-all-arch with help text and CHECK_ALL_ARCH var - Implement loop to run checks for both amd64 and arm64, setting ARCH per run - Validate architecture and release/edition before generating URLs; skip Windows - Generate and check URLs per-arch, reporting PASS / FAIL / SKIP per entry - Update CI workflow to call ./quickget --check-all-arch for distro matrix tests Signed-off-by: Martin Wimpress <martin@wimpress.org>
This commit is contained in:
parent
1e194c6941
commit
1f7ec7e52c
|
|
@ -50,7 +50,7 @@ jobs:
|
||||||
id: check
|
id: check
|
||||||
run: |
|
run: |
|
||||||
mkdir -p results
|
mkdir -p results
|
||||||
./quickget --check "${{ matrix.distro }}" | tee results/check.txt
|
./quickget --check-all-arch "${{ matrix.distro }}" | tee results/check.txt
|
||||||
|
|
||||||
# Count results (use wc -l to avoid grep exit code issues)
|
# Count results (use wc -l to avoid grep exit code issues)
|
||||||
PASSED=$(grep '^PASS' results/check.txt | wc -l | tr -d ' ')
|
PASSED=$(grep '^PASS' results/check.txt | wc -l | tr -d ' ')
|
||||||
|
|
|
||||||
66
quickget
66
quickget
|
|
@ -3871,6 +3871,7 @@ Arguments:
|
||||||
-------------------------- For testing & development ---------------------------
|
-------------------------- For testing & development ---------------------------
|
||||||
--url [os] [release] [edition] : Show image URL(s)
|
--url [os] [release] [edition] : Show image URL(s)
|
||||||
--check [os] [release] [edition] : Check image URL(s)
|
--check [os] [release] [edition] : Check image URL(s)
|
||||||
|
--check-all-arch [os] [release] [edition]: Check downloads for all architectures (amd64 and arm64)
|
||||||
--list : List all supported systems
|
--list : List all supported systems
|
||||||
--list-csv : List everything in csv format
|
--list-csv : List everything in csv format
|
||||||
--list-json : List everything in json format
|
--list-json : List everything in json format
|
||||||
|
|
@ -3890,6 +3891,7 @@ fi
|
||||||
QUICKEMU=$(resolve_quickemu)
|
QUICKEMU=$(resolve_quickemu)
|
||||||
I18NS=()
|
I18NS=()
|
||||||
OPERATION=""
|
OPERATION=""
|
||||||
|
CHECK_ALL_ARCH="false"
|
||||||
CURL=$(command -v curl)
|
CURL=$(command -v curl)
|
||||||
if [ ! -x "${CURL}" ]; then
|
if [ ! -x "${CURL}" ]; then
|
||||||
echo "ERROR! curl not found. Please install curl"
|
echo "ERROR! curl not found. Please install curl"
|
||||||
|
|
@ -3984,6 +3986,25 @@ case "${1}" in
|
||||||
test_all "${1}"
|
test_all "${1}"
|
||||||
exit 0
|
exit 0
|
||||||
fi;;
|
fi;;
|
||||||
|
--check-all-arch|-check-all-arch)
|
||||||
|
OPERATION="test"
|
||||||
|
CHECK_ALL_ARCH="true"
|
||||||
|
shift
|
||||||
|
if [ -z "${1}" ]; then
|
||||||
|
for CHECK_ARCH in amd64 arm64; do
|
||||||
|
ARCH="${CHECK_ARCH}"
|
||||||
|
for OS in $(os_support); do
|
||||||
|
(test_all "${OS}")
|
||||||
|
done
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
elif [ -z "${2}" ]; then
|
||||||
|
for CHECK_ARCH in amd64 arm64; do
|
||||||
|
ARCH="${CHECK_ARCH}"
|
||||||
|
test_all "${1}"
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
fi;;
|
||||||
--list-csv|-list-csv|list|list_csv) list_csv;;
|
--list-csv|-list-csv|list|list_csv) list_csv;;
|
||||||
--list-json|-list-json|list_json) list_json;;
|
--list-json|-list-json|list_json) list_json;;
|
||||||
--list|-list) list_supported;;
|
--list|-list) list_supported;;
|
||||||
|
|
@ -3998,6 +4019,51 @@ fi
|
||||||
|
|
||||||
os_supported
|
os_supported
|
||||||
|
|
||||||
|
# Handle --check-all-arch for specific release/edition
|
||||||
|
if [ "${CHECK_ALL_ARCH}" == "true" ] && [ -n "${2}" ]; then
|
||||||
|
RELEASE="${2}"
|
||||||
|
EDITION="${3:-}"
|
||||||
|
for CHECK_ARCH in amd64 arm64; do
|
||||||
|
ARCH="${CHECK_ARCH}"
|
||||||
|
# Check architecture support before testing URL
|
||||||
|
if ! is_arch_supported "${OS}" "${ARCH}"; then
|
||||||
|
if [ -n "${EDITION}" ]; then
|
||||||
|
test_result "${OS}" "${RELEASE}" "${EDITION}" "" "SKIP" "(not available for ${ARCH})"
|
||||||
|
else
|
||||||
|
test_result "${OS}" "${RELEASE}" "" "" "SKIP" "(not available for ${ARCH})"
|
||||||
|
fi
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
# Validate release
|
||||||
|
case ${OS} in
|
||||||
|
*ubuntu-server*) validate_release releases_ubuntu-server;;
|
||||||
|
*ubuntu*) validate_release releases_ubuntu;;
|
||||||
|
*) validate_release "releases_${OS}";;
|
||||||
|
esac
|
||||||
|
# Generate and check URL
|
||||||
|
if [[ $(type -t "editions_${OS}") == function ]] && [ -n "${EDITION}" ]; then
|
||||||
|
URL=$(get_"${OS}" | cut -d' ' -f1 | head -n 1)
|
||||||
|
elif [ "${OS}" == "macos" ]; then
|
||||||
|
(get_macos)
|
||||||
|
continue
|
||||||
|
elif [[ "${OS}" == *"ubuntu-server"* ]]; then
|
||||||
|
(get_ubuntu-server)
|
||||||
|
continue
|
||||||
|
elif [[ "${OS}" == *"ubuntu"* ]]; then
|
||||||
|
(get_ubuntu)
|
||||||
|
continue
|
||||||
|
elif [[ "${OS}" == "windows"* ]]; then
|
||||||
|
test_result "${OS}" "${RELEASE}" "${EDITION}" "" "SKIP" "(Windows not supported in check mode)"
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
URL=$(get_"${OS}" | cut -d' ' -f1 | head -n 1)
|
||||||
|
fi
|
||||||
|
CHECK=$(web_check "${URL}" && echo "PASS" || echo "FAIL")
|
||||||
|
test_result "${OS}" "${RELEASE}" "${EDITION}" "${URL}" "${CHECK}"
|
||||||
|
done
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
if [ -n "${2}" ]; then
|
if [ -n "${2}" ]; then
|
||||||
RELEASE="${2}"
|
RELEASE="${2}"
|
||||||
VM_PATH="${OS}-${RELEASE}"
|
VM_PATH="${OS}-${RELEASE}"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue