Files
Pulse/scripts/package-helm-chart.sh
2025-10-22 10:46:18 +00:00

67 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
# Package (and optionally push) the Pulse Helm chart.
# Usage:
# ./scripts/package-helm-chart.sh [version] [--push]
# Environment:
# OCI_REPO (default: ghcr.io/rcourtman/pulse-chart)
# HELM_BIN (default: helm)
set -euo pipefail
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
CHART_DIR="$REPO_ROOT/deploy/helm/pulse"
DIST_DIR_OVERRIDE="${DIST_DIR_OVERRIDE:-${DIST_DIR:-}}"
if [[ -n "$DIST_DIR_OVERRIDE" ]]; then
DIST_DIR="$DIST_DIR_OVERRIDE"
else
DIST_DIR="$REPO_ROOT/dist"
fi
HELM_BIN="${HELM_BIN:-helm}"
OCI_REPO="${OCI_REPO:-ghcr.io/rcourtman/pulse-chart}"
if ! command -v "$HELM_BIN" >/dev/null 2>&1; then
echo "Error: Helm not found (expected at \$HELM_BIN=$HELM_BIN). Install Helm 3.9+ first." >&2
exit 1
fi
VERSION_DEFAULT="$(cat "$REPO_ROOT/VERSION")"
VERSION="${1:-$VERSION_DEFAULT}"
VERSION="${VERSION#v}" # strip leading v if provided
PUSH=false
for arg in "$@"; do
if [ "$arg" = "--push" ]; then
PUSH=true
fi
done
echo "Packaging Pulse chart version $VERSION (appVersion=$VERSION)"
rm -rf "$DIST_DIR"
mkdir -p "$DIST_DIR"
"$HELM_BIN" lint "$CHART_DIR" --strict
"$HELM_BIN" package "$CHART_DIR" \
--version "$VERSION" \
--app-version "$VERSION" \
--destination "$DIST_DIR"
PACKAGE_PATH="$DIST_DIR/pulse-$VERSION.tgz"
if [ ! -f "$PACKAGE_PATH" ]; then
echo "Error: Expected package $PACKAGE_PATH not found" >&2
exit 1
fi
if [ "$PUSH" = true ]; then
echo "Pushing chart to oci://$OCI_REPO"
"$HELM_BIN" push "$PACKAGE_PATH" "oci://$OCI_REPO"
fi
echo "Chart packaged at $PACKAGE_PATH"
if [ "$PUSH" = true ]; then
echo "Chart pushed to oci://$OCI_REPO"
else
echo "Run with --push (after logging into GHCR) to upload the artifact."
fi