Each distro now builds amd64 on ubuntu-latest and arm64 on ubuntu-24.04-arm instead of emulating arm64 under QEMU. image.sh gains --platform, which pushes one <version>-<arch> tag, and --merge, which joins those tags under the release, stable and alias tags with buildx imagetools. The workflow splits into prepare, build and merge jobs; scripts/build/publish.sh follows the same sequence locally. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
60 lines
1.6 KiB
Bash
Executable File
60 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Publish one image per distro, each covering every platform its base offers.
|
|
#
|
|
# Required env:
|
|
# OWNER (e.g. GITHUB_REPOSITORY_OWNER)
|
|
# VERSION (e.g. 1.2.3)
|
|
#
|
|
# Optional env:
|
|
# REGISTRY (default: ghcr.io)
|
|
# IS_STABLE (default: false)
|
|
# DISTROS (default: "arch debian ubuntu fedora centos")
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
|
|
# shellcheck source=./scripts/build/base.sh
|
|
source "${SCRIPT_DIR}/base.sh"
|
|
|
|
REGISTRY="${REGISTRY:-ghcr.io}"
|
|
IS_STABLE="${IS_STABLE:-false}"
|
|
DISTROS="${DISTROS:-arch debian ubuntu fedora centos}"
|
|
|
|
: "${OWNER:?Environment variable OWNER must be set (e.g. github.repository_owner)}"
|
|
: "${VERSION:?Environment variable VERSION must be set (e.g. 1.2.3)}"
|
|
|
|
echo "[publish] REGISTRY=${REGISTRY}"
|
|
echo "[publish] OWNER=${OWNER}"
|
|
echo "[publish] VERSION=${VERSION}"
|
|
echo "[publish] IS_STABLE=${IS_STABLE}"
|
|
echo "[publish] DISTROS=${DISTROS}"
|
|
|
|
for d in ${DISTROS}; do
|
|
echo
|
|
echo "============================================================"
|
|
echo "[publish] PKGMGR_DISTRO=${d}"
|
|
echo "============================================================"
|
|
|
|
IFS=',' read -ra platforms <<< "$(resolve_platforms "${d}")"
|
|
for p in "${platforms[@]}"; do
|
|
PKGMGR_DISTRO="${d}" bash "${SCRIPT_DIR}/image.sh" \
|
|
--publish \
|
|
--registry "${REGISTRY}" \
|
|
--owner "${OWNER}" \
|
|
--version "${VERSION}" \
|
|
--platform "${p}"
|
|
done
|
|
|
|
PKGMGR_DISTRO="${d}" bash "${SCRIPT_DIR}/image.sh" \
|
|
--publish \
|
|
--registry "${REGISTRY}" \
|
|
--owner "${OWNER}" \
|
|
--version "${VERSION}" \
|
|
--stable "${IS_STABLE}" \
|
|
--merge
|
|
done
|
|
|
|
echo
|
|
echo "[publish] Done."
|