#!/usr/bin/env bash set -euo pipefail # Make ARM Client-CPU package (versioned CPU node image, compose, env, docs) ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" TEMPL_DIR="$ROOT_DIR/deployment_new/templates/client_arm" ART_ROOT="$ROOT_DIR/deployment_new/artifact/client_arm" COMMON_SH="$ROOT_DIR/deployment_new/build/common.sh" . "$COMMON_SH" usage(){ cat </ and client_arm_YYYYMMDD.tar.gz EOF } VERSION="" IMAGE="argus-sys-metric-test-node-arm64:latest" while [[ $# -gt 0 ]]; do case "$1" in --version) VERSION="$2"; shift 2;; --image) IMAGE="$2"; shift 2;; -h|--help) usage; exit 0;; *) err "unknown arg: $1"; usage; exit 1;; esac done if [[ -z "$VERSION" ]]; then VERSION="$(today_version)"; fi require_cmd docker tar gzip STAGE="$(mktemp -d)"; trap 'rm -rf "$STAGE"' EXIT PKG_DIR="$ART_ROOT/$VERSION" mkdir -p "$PKG_DIR" "$STAGE/images" "$STAGE/compose" "$STAGE/docs" "$STAGE/scripts" "$STAGE/private/argus" # 1) Save CPU node image with version tag if ! docker image inspect "$IMAGE" >/dev/null 2>&1; then err "missing image: $IMAGE"; exit 1; fi REPO="${IMAGE%%:*}"; TAG_VER="$REPO:$VERSION" docker tag "$IMAGE" "$TAG_VER" out_tar="$STAGE/images/${REPO//\//-}-$VERSION.tar" docker save -o "$out_tar" "$TAG_VER" gzip -f "$out_tar" # 2) Compose + env template cp "$TEMPL_DIR/compose/docker-compose.yml" "$STAGE/compose/docker-compose.yml" ENV_EX="$STAGE/compose/.env.example" cat >"$ENV_EX" </dev/null || true fi # x86 专用脚本:用于在 x86_64 主机上运行 ARM Client 包 SCRIPTS_X86_SRC="$TEMPL_DIR/scripts_for_x86" if [[ -d "$SCRIPTS_X86_SRC" ]]; then copy_tree "$SCRIPTS_X86_SRC" "$STAGE/scripts_for_x86" find "$STAGE/scripts_for_x86" -type f -name '*.sh' -exec chmod +x {} + 2>/dev/null || true fi mkdir -p "$STAGE/private/argus/agent" # 5) Manifest & checksums gen_manifest "$STAGE" "$STAGE/manifest.txt" checksum_dir "$STAGE" "$STAGE/checksums.txt" # 6) Move to artifact dir and pack mkdir -p "$PKG_DIR" copy_tree "$STAGE" "$PKG_DIR" OUT_TAR_DIR="$(dirname "$PKG_DIR")" OUT_TAR="$OUT_TAR_DIR/client_arm_${VERSION}.tar.gz" log "Creating tarball: $OUT_TAR" (cd "$PKG_DIR/.." && tar -czf "$OUT_TAR" "$(basename "$PKG_DIR")") log "Client-ARM package ready: $PKG_DIR" echo "$OUT_TAR"