name: Deploy to Remote Server on: push: branches: [ main, master ] workflow_dispatch: env: REMOTE_HOST: "leisuretimedock.top" REMOTE_USER: "root" REMOTE_PATH: "/opt/filebrowser/ltd v8" SSH_PORT: "22" jobs: deploy: runs-on: ubuntu-latest steps: - name: Display repository files run: | echo "=== 仓库文件列表 ===" ls -la echo "=== 文件统计 ===" echo "总文件数: $(find . -type f | wc -l)" echo "总目录数: $(find . -type d | wc -l)" echo "=== 文件详情 ===" find . -type f -name "*" | head -20 - name: Setup SSH with relaxed settings run: | mkdir -p ~/.ssh chmod 700 ~/.ssh echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa # 禁用严格的主机密钥检查 cat >> ~/.ssh/config << EOF Host $REMOTE_HOST HostName $REMOTE_HOST User $REMOTE_USER Port $SSH_PORT StrictHostKeyChecking no UserKnownHostsFile /dev/null LogLevel ERROR EOF echo "SSH配置完成" - name: Test basic connection run: | ssh $REMOTE_HOST "echo '✅ SSH连接测试成功'" - name: Prepare remote directory run: | ssh $REMOTE_HOST " mkdir -p '$REMOTE_PATH' echo '✅ 目录已创建或已存在: $REMOTE_PATH' echo '当前目录内容:' ls -la '$REMOTE_PATH' | head -5 || echo '目录为空' " - name: Clean directory run: | ssh $REMOTE_HOST " if [ -d '$REMOTE_PATH' ]; then echo '开始清理目录...' # 安全删除,避免误删系统文件 find '$REMOTE_PATH' -mindepth 1 -delete 2>/dev/null || true echo '✅ 目录清理完成' else echo '❌ 目录不存在,创建中...' mkdir -p '$REMOTE_PATH' fi " - name: Deploy files run: | echo "开始部署文件..." # 使用tar管道传输,排除.git目录 tar czf - --exclude='.git' --exclude='.gitea' . | ssh $REMOTE_HOST "cd '$REMOTE_PATH' && tar xzf -" echo "✅ 文件部署完成" - name: Verify deployment run: | ssh $REMOTE_HOST " echo '=== 部署验证 ===' echo '目录: $REMOTE_PATH' echo '大小:' du -sh '$REMOTE_PATH' echo '文件数量:' find '$REMOTE_PATH' -type f | wc -l echo '目录结构:' ls -la '$REMOTE_PATH' echo '✅ 部署验证完成' "