Files
doc_ai_backed/.claude/skills/deploy/deploy_prod.sh
yoge f6ccadbcd3 refactor: move deploy scripts into .claude/skills/deploy/
- Added deploy skill (SKILL.md) with dev/prod instructions
- Moved deploy_prod.sh, deploy_dev.sh, dev_deploy.sh, speed_take.sh
- Updated settings.local.json: new script paths, git merge/push permissions, auto-deploy hook on merge to master
- Removed dev_deploy.sh and speed_take.sh from .gitignore

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-27 10:04:41 +08:00

69 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
REGISTRY="crpi-8s2ierii2xan4klg.cn-beijing.personal.cr.aliyuncs.com/texpixel/doc_ai_backend"
BUILD_HOST="ubuntu"
BUILD_DIR="~/Dev/doc_ai_backed"
# --- Guard: must be on main/master ---
BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [[ "${BRANCH}" != "main" && "${BRANCH}" != "master" ]]; then
echo "ERROR: must be on main or master branch (current: ${BRANCH})"
exit 1
fi
VERSION=$(git rev-parse --short HEAD)
IMAGE_VERSIONED="${REGISTRY}:${VERSION}"
IMAGE_LATEST="${REGISTRY}:latest"
echo "==> [1/3] Pulling latest code on Ubuntu"
ssh ${BUILD_HOST} "
set -e
cd ${BUILD_DIR}
git fetch origin
git checkout master 2>/dev/null || git checkout main
git pull
"
echo "==> [2/3] Building & pushing image on Ubuntu"
ssh ${BUILD_HOST} "
set -e
cd ${BUILD_DIR}
docker build --platform linux/amd64 \
-t ${IMAGE_VERSIONED} \
-t ${IMAGE_LATEST} \
.
docker push ${IMAGE_VERSIONED}
docker push ${IMAGE_LATEST}
docker rmi ${IMAGE_VERSIONED} ${IMAGE_LATEST} 2>/dev/null || true
"
echo "==> [3/3] Deploying on ECS"
ssh ecs "
set -e
echo '--- Pulling image'
docker pull ${IMAGE_VERSIONED}
echo '--- Stopping old container'
docker stop doc_ai 2>/dev/null || true
docker rm doc_ai 2>/dev/null || true
echo '--- Starting new container'
docker run -d \
--name doc_ai \
-p 8024:8024 \
--restart unless-stopped \
${IMAGE_VERSIONED} \
-env=prod
echo '--- Removing old doc_ai images (keeping current)'
docker images --format '{{.Repository}}:{{.Tag}} {{.ID}}' \
| grep '^${REGISTRY}' \
| grep -v ':${VERSION}' \
| grep -v ':latest' \
| awk '{print \$2}' \
| xargs -r docker rmi || true
"
echo "==> Done. Running version: ${VERSION}"