#!/usr/bin/env bash # Upload a build to Hetzner Object Storage. # Usage: ./deploy.sh ./dist [version] # # If version is omitted, uses the current git short hash. # Requires: s3cmd configured for Hetzner Object Storage. set -euo pipefail BUILD_DIR="${1:?Usage: ./deploy.sh [version]}" VERSION="${2:-$(git rev-parse --short HEAD 2>/dev/null || date +%s)}" # Configure these for your setup BUCKET="s3://ksys-builds" PREFIX="builds" SITE_URL="https://builds.kill.systems" # Hetzner Object Storage endpoint S3CMD_OPTS="--host=fsn1.your-objectstorage.com --host-bucket=%(bucket)s.fsn1.your-objectstorage.com" if [[ ! -d "$BUILD_DIR" ]]; then echo "ERROR: $BUILD_DIR is not a directory" exit 1 fi echo "Uploading build $VERSION..." s3cmd sync \ $S3CMD_OPTS \ --acl-public \ --no-mime-magic \ --guess-mime-type \ "$BUILD_DIR/" \ "${BUCKET}/${PREFIX}/${VERSION}/" echo "" echo "Build uploaded:" echo " ${SITE_URL}/${VERSION}/"