#!/usr/bin/env bash set -euo pipefail ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" . "$ROOT_DIR/deployment/build/common.sh" usage() { cat </dev/null bash scripts/package_artifact.sh --force CLIENT_VERSION=$(cat artifact/*/version.json 2>/dev/null | sed -n 's/.*"version"\s*:\s*"\([^"]\+\)".*/\1/p' | tail -n1) popd >/dev/null [[ -n "$CLIENT_VERSION" ]] || { err "failed to detect client version"; exit 1; } else if [[ "$CLIENT_VERSION" =~ ^[0-9]{8}$ ]]; then PKG_DIR="$ROOT_DIR/deployment/artifact/client/$CLIENT_VERSION" TAR_PKG="$PKG_DIR/argus-metric_${CLIENT_VERSION}.tar.gz" [[ -f "$TAR_PKG" ]] || { err "client date package not found: $TAR_PKG"; exit 1; } # 解包读取内部 version.json tmpd=$(mktemp -d); trap 'rm -rf "$tmpd"' EXIT tar -xzf "$TAR_PKG" -C "$tmpd" if [[ -f "$tmpd/version.json" ]]; then ART_VER=$(sed -n 's/.*"version"\s*:\s*"\([^"]\+\)".*/\1/p' "$tmpd/version.json" | head -n1) [[ -n "$ART_VER" ]] || { err "failed to parse artifact version from date package"; exit 1; } CLIENT_VERSION="$ART_VER" # 直接使用该 tar 作为 bundle 源 cp "$TAR_PKG" "$TMP_BUNDLE/argus-metric_$(echo "$ART_VER" | tr '.' '_').tar.gz" # 同时尝试复制 setup.sh(若存在) [[ -f "$PKG_DIR/setup.sh" ]] && cp "$PKG_DIR/setup.sh" "$TMP_BUNDLE/" || true else err "version.json missing in client date package" exit 1 fi else # 假定为 artifact 版本目录 pushd "$PLUGIN_DIR" >/dev/null [[ -d "artifact/$CLIENT_VERSION" ]] || bash scripts/package_artifact.sh --force popd >/dev/null fi fi # 若未通过日期包预置 tar,则从插件 artifact 目录取 TAR_NAME="argus-metric_$(echo "$CLIENT_VERSION" | tr '.' '_').tar.gz" if [[ ! -f "$TMP_BUNDLE/$TAR_NAME" ]]; then SRC_TAR="$PLUGIN_DIR/artifact/$CLIENT_VERSION/$TAR_NAME" [[ -f "$SRC_TAR" ]] || { err "missing client tar: $SRC_TAR"; exit 1; } cp "$SRC_TAR" "$TMP_BUNDLE/" # also include setup.sh for fallback if [[ -f "$ROOT_DIR/deployment/artifact/client/$(today_version)/setup.sh" ]]; then cp "$ROOT_DIR/deployment/artifact/client/$(today_version)/setup.sh" "$TMP_BUNDLE/" || true fi fi log "Building node-bundle image with client version: $CLIENT_VERSION" DOCKER_BUILDKIT=0 docker build \ --build-arg CLIENT_VER="$CLIENT_VERSION" \ --build-arg BASE_IMAGE="$BASE_IMAGE" \ -t argus-sys-metric-test-node-bundle:latest \ -f "$BUNDLE_DIR/Dockerfile" "$BUNDLE_DIR" log "Built image: argus-sys-metric-test-node-bundle:latest" fi log "Done."