SCALE — Build Lab
インフラ · BASH SCRIPT

自動デプロイスクリプト(pre/post snapshot 込み)

CATEGORYインフラ TYPEBash Script EFFORT30〜90分 DIFFICULTY
PRIMARY CODE
bash · scripts/deploy.sh
#!/bin/bash
set -e
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"
TS=$(date +%Y-%m-%d_%H%M%S)

# [1/4] Pre-deploy snapshot
echo "── [1/4] Pre-deploy snapshot ──"
bash scripts/snapshot.sh --label=pre-deploy

# [2/4] Build (/tmp 経由で日本語パス回避)
echo "── [2/4] Build ──"
BUILD_DIR="/tmp/<project>-build"
[ ! -d "$BUILD_DIR/node_modules" ] && cp -R "$ROOT" "$BUILD_DIR" && cd "$BUILD_DIR"
rm -rf .next out
npx next build  # or: astro build / wrangler deploy ...

# [3/4] Deploy
echo "── [3/4] Deploy ──"
unset CLOUDFLARE_API_TOKEN  # OAuth Token 優先
npx wrangler pages deploy out --project-name=<project> --branch=main \
  --commit-dirty=true --commit-message="deploy ${TS}"

# [4/4] Post-deploy snapshot
echo "── [4/4] Post-deploy snapshot ──"
bash scripts/snapshot.sh --label=post-deploy

echo "✓ Deploy complete → https://<project>.pages.dev/"
DEPENDENCIES
tarrsyncwrangler (Cloudflare Pages)
USE CASES
  • 全 Cloudflare Pages プロジェクトの統一デプロイ
  • 編集→ビルド→デプロイ→バックアップ の一発実行

deploy.sh(pre/post snapshot 込み自動デプロイ)

:LiTarget: 用途

ワンコマンドで「バックアップ → ビルド → Cloudflare Pages デプロイ → ポストバックアップ」まで自動実行。

:LiCode: 4-Step パターン

#!/bin/bash
set -e
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
cd "$ROOT"
TS=$(date +%Y-%m-%d_%H%M%S)

# [1/4] Pre-deploy snapshot
echo "── [1/4] Pre-deploy snapshot ──"
bash scripts/snapshot.sh --label=pre-deploy

# [2/4] Build (/tmp 経由で日本語パス回避)
echo "── [2/4] Build ──"
BUILD_DIR="/tmp/<project>-build"
[ ! -d "$BUILD_DIR/node_modules" ] && cp -R "$ROOT" "$BUILD_DIR" && cd "$BUILD_DIR"
rm -rf .next out
npx next build  # or: astro build / wrangler deploy ...

# [3/4] Deploy
echo "── [3/4] Deploy ──"
unset CLOUDFLARE_API_TOKEN  # OAuth Token 優先
npx wrangler pages deploy out --project-name=<project> --branch=main \
  --commit-dirty=true --commit-message="deploy ${TS}"

# [4/4] Post-deploy snapshot
echo "── [4/4] Post-deploy snapshot ──"
bash scripts/snapshot.sh --label=post-deploy

echo "✓ Deploy complete → https://<project>.pages.dev/"

:LiAlertCircle: 注意

  • unset CLOUDFLARE_API_TOKEN で OAuth 優先(古い API Token があると失敗)
  • 日本語パス Turbopack panic 対策で /tmp 経由ビルド
  • --commit-dirty=true で git の状態気にせずデプロイ
  • --commit-message は英語推奨(UTF-8エラー回避)