37 lines
1.3 KiB
Bash
Executable File
37 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Build/refresh the reusable Daytona snapshot used by Den server sandboxes.
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
SNAPSHOT_NAME="${DAYTONA_SERVER_SNAPSHOT:-openwork-server}"
|
|
REGION="${DAYTONA_TARGET:-us}"
|
|
|
|
snapshot_id() {
|
|
daytona snapshot list -f json | node -e 'const name = process.argv[1]; let input = ""; process.stdin.on("data", (chunk) => input += chunk); process.stdin.on("end", () => { const snapshot = JSON.parse(input).find((item) => item.name === name); if (snapshot) process.stdout.write(snapshot.id || snapshot.name); });' "$1"
|
|
}
|
|
|
|
existing_snapshot_id="$(snapshot_id "$SNAPSHOT_NAME")"
|
|
if [ -n "$existing_snapshot_id" ]; then
|
|
echo "==> Deleting existing snapshot: $SNAPSHOT_NAME"
|
|
daytona snapshot delete "$existing_snapshot_id" >/dev/null <<< "y"
|
|
for _ in $(seq 1 60); do
|
|
if [ -z "$(snapshot_id "$SNAPSHOT_NAME")" ]; then
|
|
break
|
|
fi
|
|
sleep 5
|
|
done
|
|
fi
|
|
|
|
echo "==> Creating Daytona server snapshot: $SNAPSHOT_NAME"
|
|
# 10 GB is the per-sandbox maximum in this org; the baked node_modules and
|
|
# Den build outputs fit because the image skips Electron/browser binaries.
|
|
daytona snapshot create "$SNAPSHOT_NAME" \
|
|
--dockerfile "$ROOT_DIR/.devcontainer/Dockerfile.daytona-server" \
|
|
--cpu 4 \
|
|
--memory 8 \
|
|
--disk 10 \
|
|
--region "$REGION"
|
|
|
|
echo "Snapshot ready: $SNAPSHOT_NAME"
|