Add standalone artifact deploy workflow

This commit is contained in:
2026-05-21 05:26:13 +07:00
parent 70b34f8cf3
commit 3002ef9b8c
5 changed files with 149 additions and 0 deletions

View File

@ -0,0 +1,30 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
IMAGE="${DOCKER_IMAGE:-node:20}"
ARTIFACT_NAME="${ARTIFACT_NAME:-abelbirdnest-release.tar.gz}"
cd "$ROOT_DIR"
docker run --rm \
-v "$ROOT_DIR":/app \
-w /app \
"$IMAGE" \
bash -lc '
set -euo pipefail
npm ci
npx prisma generate
npm run build
rm -rf .deploy-release
mkdir -p .deploy-release
cp -R .next/standalone/. .deploy-release/
mkdir -p .deploy-release/.next
cp -R .next/static .deploy-release/.next/static
cp -R public .deploy-release/public
cp -R prisma .deploy-release/prisma
[ -f .env.production ] && cp .env.production .deploy-release/.env.production || true
tar -czf '"$ARTIFACT_NAME"' -C .deploy-release .
'
echo "Artifact created at $ROOT_DIR/$ARTIFACT_NAME"

View File

@ -0,0 +1,19 @@
#!/usr/bin/env bash
set -euo pipefail
if [ "$#" -lt 1 ]; then
echo "Usage: $0 <user@host> [remote_base_dir]"
exit 1
fi
TARGET="$1"
REMOTE_BASE_DIR="${2:-/var/www/abelbirdnest-web}"
ARTIFACT_NAME="${ARTIFACT_NAME:-abelbirdnest-release.tar.gz}"
RELEASE_NAME="${RELEASE_NAME:-$(date +%Y%m%d-%H%M%S)}"
REMOTE_RELEASE_DIR="$REMOTE_BASE_DIR/releases/$RELEASE_NAME"
scp "$ARTIFACT_NAME" "$TARGET:$REMOTE_BASE_DIR/"
ssh "$TARGET" "mkdir -p '$REMOTE_RELEASE_DIR' && tar -xzf '$REMOTE_BASE_DIR/$ARTIFACT_NAME' -C '$REMOTE_RELEASE_DIR' && ln -sfn '$REMOTE_RELEASE_DIR' '$REMOTE_BASE_DIR/current'"
echo "Uploaded to $TARGET:$REMOTE_RELEASE_DIR"