diff --git a/deployment/build/build_client_package.sh b/deployment/build/build_client_package.sh index 1a7124d..e91944b 100755 --- a/deployment/build/build_client_package.sh +++ b/deployment/build/build_client_package.sh @@ -52,5 +52,14 @@ out_name="argus-metric_$(echo "$VERSION" | sed 's/\./_/g').tar.gz" log "Client package ready: $PKG_DIR/$out_name" echo "$VERSION" > "$PKG_DIR/LATEST_VERSION" -exit 0 +# include publish helper and setup.sh for convenience +PUBLISH_TPL="$BUILD_DIR/templates/client/publish.sh" +if [[ -f "$PUBLISH_TPL" ]]; then + cp "$PUBLISH_TPL" "$PKG_DIR/publish.sh" && chmod +x "$PKG_DIR/publish.sh" +fi +# also place a copy of setup.sh alongside +SETUP_SRC="$ROOT_DIR/src/metric/client-plugins/all-in-one-full/scripts/setup.sh" +[[ -f "$SETUP_SRC" ]] && cp "$SETUP_SRC" "$PKG_DIR/setup.sh" || true + +exit 0 diff --git a/deployment/build/publish_client.sh b/deployment/build/publish_client.sh deleted file mode 100755 index cfd896f..0000000 --- a/deployment/build/publish_client.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" -. "$ROOT_DIR/build/common.sh" - -usage() { cat <<'EOF' -Publish client package to FTP server - -Usage: publish_client.sh --version YYYYMMDD --server HOST --user USER --password PASS [--port 21] - -It uploads: setup.sh, argus-metric_.tar.gz, LATEST_VERSION to the FTP share root. -EOF -} - -VERSION=""; HOST=""; USERNAME=""; PASSWORD=""; PORT=21 -while [[ $# -gt 0 ]]; do - case "$1" in - --version) VERSION="$2"; shift 2;; - --server) HOST="$2"; shift 2;; - --user) USERNAME="$2"; shift 2;; - --password) PASSWORD="$2"; shift 2;; - --port) PORT="$2"; shift 2;; - -h|--help) usage; exit 0;; - *) err "unknown arg: $1"; usage; exit 1;; - esac -done - -[[ -n "$VERSION" && -n "$HOST" && -n "$USERNAME" && -n "$PASSWORD" ]] || { usage; exit 1; } - -CLIENT_DIR="$ROOT_DIR/artifact/client/$VERSION" -TAR_NAME="argus-metric_${VERSION}.tar.gz" -PKG="$CLIENT_DIR/$TAR_NAME" -SETUP_SRC="$ROOT_DIR/../src/sys/tests/private/argus/metric/ftp/share/setup.sh" -ALT_SETUP="$ROOT_DIR/../src/metric/client-plugins/all-in-one-full/scripts/setup.sh" - -[[ -f "$PKG" ]] || { err "missing client package: $PKG"; exit 1; } -if [[ ! -f "$SETUP_SRC" ]]; then - if [[ -f "$ALT_SETUP" ]]; then - SETUP_SRC="$ALT_SETUP" - else - err "missing setup.sh (checked $SETUP_SRC and $ALT_SETUP)"; exit 1 - fi -fi - -log "Uploading setup.sh" -curl -u "$USERNAME:$PASSWORD" -sfT "$SETUP_SRC" "ftp://$HOST:$PORT/setup.sh" - -log "Uploading client tar: $TAR_NAME" -curl -u "$USERNAME:$PASSWORD" -sfT "$PKG" "ftp://$HOST:$PORT/$TAR_NAME" - -log "Updating LATEST_VERSION -> $VERSION" -printf "%s" "$VERSION" | curl -u "$USERNAME:$PASSWORD" -sfT - "ftp://$HOST:$PORT/LATEST_VERSION" - -log "Publish done" - -exit 0 diff --git a/deployment/build/templates/client/publish.sh b/deployment/build/templates/client/publish.sh new file mode 100644 index 0000000..c1d080e --- /dev/null +++ b/deployment/build/templates/client/publish.sh @@ -0,0 +1,54 @@ +#!/usr/bin/env bash +set -euo pipefail + +usage() { cat <<'EOF' +Publish Argus client package to FTP + +Usage: + ./publish.sh --server HOST --user USER --password PASS [--port 21] + +Notes: +- This script expects to run inside the built client artifact directory. +- It reads LATEST_VERSION and uploads setup.sh, argus-metric_.tar.gz, and LATEST_VERSION. +EOF +} + +HOST=""; USERNAME=""; PASSWORD=""; PORT=21 +while [[ $# -gt 0 ]]; do + case "$1" in + --server) HOST="$2"; shift 2;; + --user) USERNAME="$2"; shift 2;; + --password) PASSWORD="$2"; shift 2;; + --port) PORT="$2"; shift 2;; + -h|--help) usage; exit 0;; + *) echo "unknown arg: $1" >&2; usage; exit 1;; + esac +done + +[[ -n "$HOST" && -n "$USERNAME" && -n "$PASSWORD" ]] || { usage; exit 1; } + +here="$(pwd)" +if [[ ! -f "$here/LATEST_VERSION" ]]; then + echo "LATEST_VERSION not found in $(pwd)" >&2; exit 1; +fi +VER=$(cat "$here/LATEST_VERSION" | tr -d '\n') +PKG="argus-metric_${VER}.tar.gz" + +if [[ ! -f "$here/$PKG" ]]; then + echo "client tar not found: $PKG" >&2; exit 1 +fi + +# locate setup.sh (prefer colocated, fallback to bundled path if provided) +SETUP="${here}/setup.sh" +if [[ ! -f "$SETUP" ]]; then + echo "setup.sh not found in $(pwd)" >&2; exit 1 +fi + +echo "[PUBLISH] server=$HOST port=$PORT version=$VER" + +curl -u "$USERNAME:$PASSWORD" -sfT "$SETUP" "ftp://$HOST:$PORT/setup.sh" +curl -u "$USERNAME:$PASSWORD" -sfT "$PKG" "ftp://$HOST:$PORT/$PKG" +printf "%s" "$VER" | curl -u "$USERNAME:$PASSWORD" -sfT - "ftp://$HOST:$PORT/LATEST_VERSION" + +echo "[OK] publish completed" +