Files
kvm/scripts/deploy_cloud_app.sh
T

70 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
set -e
SCRIPT_PATH=$(realpath "$(dirname $(realpath "${BASH_SOURCE[0]}"))")
source ${SCRIPT_PATH}/build_utils.sh
VERSION=
SET_AS_DEFAULT=false
SKIP_CONFIRMATION=false
while [[ $# -gt 0 ]]; do
case $1 in
-v|--version) VERSION="$2"; shift 2 ;;
--set-as-default) SET_AS_DEFAULT=true; shift ;;
--skip-confirmation) SKIP_CONFIRMATION=true; shift ;;
--help)
echo "Usage: $0 -v VERSION [--set-as-default] [--skip-confirmation]"
echo " -v VERSION Version to deploy (required)"
echo " --set-as-default Also deploy to root (production only)"
echo " --skip-confirmation Skip confirmation prompt"
exit 0 ;;
*) echo "Unknown option: $1"; exit 1 ;;
esac
done
[ -z "$VERSION" ] && { msg_err "Version required. Use -v VERSION"; exit 1; }
GIT_COMMIT=$(git rev-parse HEAD)
BUILD_TIMESTAMP=$(date -u +%FT%T%z)
cd ui
npm ci
# Build versioned app
msg_info "Building cloud app /v/${VERSION}/..."
VITE_CLOUD_ENABLE_VERSIONED_UI=true npm run build:prod -- --base=/v/${VERSION}/ --outDir dist/v/${VERSION}
# Build root app if --set-as-default
if [ "$SET_AS_DEFAULT" = true ]; then
msg_info "Building root cloud app..."
VITE_CLOUD_ENABLE_VERSIONED_UI=true npm run build:prod -- --outDir dist/root
fi
# Confirmation
if [ "$SKIP_CONFIRMATION" = false ]; then
read -p "Deploy cloud app v${VERSION}? [y/N] " -n 1 -r
echo ""
[[ $REPLY =~ ^[Yy]$ ]] || { msg_err "Cancelled."; exit 0; }
fi
# Deploy versioned
msg_info "Deploying /v/${VERSION}/ to r2://jetkvm-cloud-app/v/${VERSION}..."
rclone copyto --progress \
--header-upload="x-amz-meta-jetkvm-version: ${VERSION}" \
--header-upload="x-amz-meta-jetkvm-build-ref: ${GIT_COMMIT}" \
--header-upload="x-amz-meta-jetkvm-build-timestamp: ${BUILD_TIMESTAMP}" \
dist/v/${VERSION} r2://jetkvm-cloud-app/v/${VERSION}
# Deploy root if --set-as-default
if [ "$SET_AS_DEFAULT" = true ]; then
msg_info "Deploying root to r2://jetkvm-cloud-app..."
rclone copyto --progress \
--header-upload="x-amz-meta-jetkvm-version: ${VERSION}" \
--header-upload="x-amz-meta-jetkvm-build-ref: ${GIT_COMMIT}" \
--header-upload="x-amz-meta-jetkvm-build-timestamp: ${BUILD_TIMESTAMP}" \
dist/root r2://jetkvm-cloud-app
fi
msg_ok "Deployed cloud app v${VERSION}"