44 lines
1.2 KiB
Bash
Executable File
44 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
|
IMAGE="${DOCKER_IMAGE:-node:20-alpine}"
|
|
RELEASE_STAMP="${RELEASE_STAMP:-$(date +%Y%m%d-%H%M%S)}"
|
|
ARTIFACT_NAME="${ARTIFACT_NAME:-abelbirdnest-release-${RELEASE_STAMP}.tar.gz}"
|
|
NODE_MEMORY_MB="${NODE_MEMORY_MB:-4096}"
|
|
|
|
cd "$ROOT_DIR"
|
|
|
|
if ! command -v docker >/dev/null 2>&1; then
|
|
echo "Docker is required to build the Alpine Linux release artifact." >&2
|
|
exit 1
|
|
fi
|
|
|
|
docker run --rm \
|
|
-v "$ROOT_DIR":/src:ro \
|
|
-v "$ROOT_DIR":/out \
|
|
-w / \
|
|
"$IMAGE" \
|
|
sh -lc '
|
|
set -eu
|
|
apk add --no-cache openssl >/dev/null
|
|
rm -rf /work
|
|
mkdir -p /work
|
|
cp -R /src/. /work/
|
|
chmod -R u+w /work
|
|
cd /work
|
|
npm ci
|
|
npx prisma generate
|
|
NODE_OPTIONS="--max-old-space-size='"$NODE_MEMORY_MB"'" 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
|
|
tar -czf /out/'"$ARTIFACT_NAME"' -C .deploy-release .
|
|
'
|
|
|
|
echo "Artifact created at $ROOT_DIR/$ARTIFACT_NAME"
|