name: Deploy on: push: branches: [main, v2] jobs: deploy: runs-on: aliyun steps: - name: Deploy run: | GIT_URL="http://8.161.227.145:3000/XEngineers/CamTalk.git" if [ -d /root/camtalk/.git ]; then cd /root/camtalk git fetch "$GIT_URL" ${GITHUB_REF_NAME} --depth=1 git reset --hard FETCH_HEAD 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(通过 docker 桥接,绕过 CI 容器文件系统限制) docker run --rm \ -v /opt/camtalk/.env:/host.env:ro \ -v /root/camtalk:/deploy \ alpine cp /host.env /deploy/.env 2>/dev/null || true if [ ! -f /root/camtalk/.env ]; then echo "==============================================" echo " 错误: 无法从 /opt/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