name: Deploy on: push: branches: [main, v2] jobs: deploy: runs-on: aliyun steps: - name: Deploy run: | if [ -d /root/camtalk/.git ]; then cd /root/camtalk git fetch origin ${GITHUB_REF_NAME} --depth=1 git reset --hard origin/${GITHUB_REF_NAME} else git clone --depth=1 --branch ${GITHUB_REF_NAME} \ http://8.161.227.145:3000/XEngineers/CamTalk.git /tmp/camtalk-deploy mkdir -p /root/camtalk rsync -a --delete \ --exclude='.env' \ --exclude='pgdata' \ --exclude='redisdata' \ /tmp/camtalk-deploy/ /root/camtalk/ rm -rf /tmp/camtalk-deploy fi # 确保 .env 存在于项目目录(CI 容器内无法直接访问 /opt) if [ ! -f /root/camtalk/.env ]; then cp /opt/camtalk/.env /root/camtalk/.env 2>/dev/null || true fi if [ ! -f /root/camtalk/.env ]; then echo "==============================================" echo " 错误: /root/camtalk/.env 不存在" echo " 请在服务器上执行: cp /opt/camtalk/.env /root/camtalk/.env" echo "==============================================" exit 1 fi chmod +x /root/camtalk/deploy.sh /root/camtalk/deploy.sh build /root/camtalk/deploy.sh restart