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>
This commit is contained in:
68
.claude/skills/deploy/deploy_prod.sh
Executable file
68
.claude/skills/deploy/deploy_prod.sh
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/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}"
|
||||
Reference in New Issue
Block a user