Optimize APK update checks and CI builds
Build Alpine Packages / build-and-publish (v3.24, 3.24) (push) Failing after 2h20m30s

This commit is contained in:
Joachim Schlöffel
2026-08-24 08:51:30 +02:00
parent 9b9473f497
commit 479886d37d
10 changed files with 269 additions and 172 deletions
+35 -4
View File
@@ -2,19 +2,50 @@
set -euo pipefail
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
# shellcheck source=scripts/apk/package-lib.sh
. "${repo_root}/scripts/apk/package-lib.sh"
repo_name="${ALPINE_REPO_NAME:-local}"
arch="${ALPINE_ARCH:-$(apk --print-arch)}"
packages="${SMOKE_PACKAGES:-seaweedfs seaweedfs-master-openrc seaweedfs-filer-openrc seaweedfs-worker-openrc greptimedb lavinmq lavinmq-openrc gitea gitea-openrc}"
repo_dir="${repo_root}/packages/${repo_name}/${arch}"
registry_url="${ALPINE_REGISTRY_URL:-}"
registry_key="${ALPINE_REGISTRY_KEY:-}"
read -r -a package_list <<< "${packages}"
declare -A versioned_packages=()
if [[ ! -d "${repo_dir}" ]]; then
printf 'missing local repository: packages/%s/%s\n' "${repo_name}" "${arch}" >&2
while IFS= read -r package_dir; do
while IFS= read -r spec; do
versioned_packages["${spec%%=*}"]="${spec}"
done < <(apk_package_versioned_names "${package_dir}" "${arch}")
done < <(apk_all_package_dirs "${repo_root}")
for package in "${package_list[@]}"; do
if [[ -z "${versioned_packages[${package}]:-}" ]]; then
printf 'smoke package is not defined by a source APKBUILD: %s\n' "${package}" >&2
exit 2
fi
package="${versioned_packages[${package}]}"
done
if [[ -d "${repo_dir}" ]]; then
cp "${repo_dir}"/*.rsa.pub /etc/apk/keys/
echo "${repo_root}/packages/${repo_name}" >> /etc/apk/repositories
elif [[ -z "${registry_url}" ]]; then
printf 'missing local repository and no registry fallback: packages/%s/%s\n' "${repo_name}" "${arch}" >&2
exit 1
fi
if [[ -n "${registry_url}" ]]; then
if [[ ! -f "${registry_key}" ]]; then
printf 'missing Alpine registry signing key: %s\n' "${registry_key:-<unset>}" >&2
exit 1
fi
cp "${registry_key}" /etc/apk/keys/
echo "${registry_url}" >> /etc/apk/repositories
fi
cp "${repo_dir}"/*.rsa.pub /etc/apk/keys/
echo "${repo_root}/packages/${repo_name}" >> /etc/apk/repositories
for index in "${!package_list[@]}"; do
package_list[index]="${versioned_packages[${package_list[index]}]}"
done
apk update
apk add "${package_list[@]}"
if command -v weed >/dev/null 2>&1; then