fix: complete ARM64 RPi build pipeline
Some checks failed
CI / Go Tests (push) Has been cancelled
CI / Build Go Binaries (amd64, linux, linux-amd64) (push) Has been cancelled
CI / Build Go Binaries (arm64, linux, linux-arm64) (push) Has been cancelled
CI / Shellcheck (push) Has been cancelled
Release / Test (push) Has been cancelled
Release / Build Binaries (amd64, linux, linux-amd64) (push) Has been cancelled
Release / Build Binaries (arm64, linux, linux-arm64) (push) Has been cancelled
Release / Build ISO (amd64) (push) Has been cancelled
Release / Create Release (push) Has been cancelled
Some checks failed
CI / Go Tests (push) Has been cancelled
CI / Build Go Binaries (amd64, linux, linux-amd64) (push) Has been cancelled
CI / Build Go Binaries (arm64, linux, linux-arm64) (push) Has been cancelled
CI / Shellcheck (push) Has been cancelled
Release / Test (push) Has been cancelled
Release / Build Binaries (amd64, linux, linux-amd64) (push) Has been cancelled
Release / Build Binaries (arm64, linux, linux-arm64) (push) Has been cancelled
Release / Build ISO (amd64) (push) Has been cancelled
Release / Create Release (push) Has been cancelled
- fetch-components.sh: download ARM64 KubeSolo binary (kubesolo-arm64) - inject-kubesolo.sh: use arch-specific binaries for KubeSolo, cloud-init, and update agent; detect KVER from custom kernel when rootfs has none; cross-arch module resolution via find fallback when modprobe fails - create-rpi-image.sh: kpartx support for Docker container builds - Makefile: rootfs-arm64 depends on build-cross, includes pack-initramfs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -51,6 +51,39 @@ if [ "$FETCH_ARCH" = "arm64" ]; then
|
||||
echo "==> Fetching RPi firmware..."
|
||||
"$SCRIPT_DIR/fetch-rpi-firmware.sh"
|
||||
|
||||
# Download ARM64 KubeSolo binary
|
||||
KUBESOLO_VERSION="${KUBESOLO_VERSION:-v1.1.0}"
|
||||
KUBESOLO_BIN_ARM64="$CACHE_DIR/kubesolo-arm64"
|
||||
if [ -f "$KUBESOLO_BIN_ARM64" ]; then
|
||||
echo "==> KubeSolo ARM64 binary already cached: $KUBESOLO_BIN_ARM64"
|
||||
else
|
||||
echo "==> Downloading KubeSolo ${KUBESOLO_VERSION} (arm64)..."
|
||||
BIN_URL="https://github.com/portainer/kubesolo/releases/download/${KUBESOLO_VERSION}/kubesolo-${KUBESOLO_VERSION}-linux-arm64-musl.tar.gz"
|
||||
BIN_URL_FALLBACK="https://github.com/portainer/kubesolo/releases/download/${KUBESOLO_VERSION}/kubesolo-${KUBESOLO_VERSION}-linux-arm64.tar.gz"
|
||||
TEMP_DIR=$(mktemp -d)
|
||||
echo " URL: $BIN_URL"
|
||||
if curl -fSL "$BIN_URL" -o "$TEMP_DIR/kubesolo.tar.gz" 2>/dev/null; then
|
||||
echo " Downloaded musl variant (arm64)"
|
||||
elif curl -fSL "$BIN_URL_FALLBACK" -o "$TEMP_DIR/kubesolo.tar.gz" 2>/dev/null; then
|
||||
echo " Downloaded glibc variant (arm64 fallback)"
|
||||
else
|
||||
echo "ERROR: Failed to download KubeSolo ARM64 from GitHub."
|
||||
rm -rf "$TEMP_DIR"
|
||||
exit 1
|
||||
fi
|
||||
tar -xzf "$TEMP_DIR/kubesolo.tar.gz" -C "$TEMP_DIR"
|
||||
FOUND_BIN=$(find "$TEMP_DIR" -name "kubesolo" -type f ! -name "*.tar.gz" | head -1)
|
||||
if [ -z "$FOUND_BIN" ]; then
|
||||
echo "ERROR: Could not find kubesolo binary in extracted archive"
|
||||
rm -rf "$TEMP_DIR"
|
||||
exit 1
|
||||
fi
|
||||
cp "$FOUND_BIN" "$KUBESOLO_BIN_ARM64"
|
||||
chmod +x "$KUBESOLO_BIN_ARM64"
|
||||
rm -rf "$TEMP_DIR"
|
||||
echo "==> KubeSolo ARM64 binary: $KUBESOLO_BIN_ARM64 ($(du -h "$KUBESOLO_BIN_ARM64" | cut -f1))"
|
||||
fi
|
||||
|
||||
# Skip x86_64 ISO and TCZ downloads for ARM64
|
||||
echo ""
|
||||
echo "==> ARM64 fetch complete."
|
||||
|
||||
Reference in New Issue
Block a user