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: Checkout code uses: actions/checkout@v4 - 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 - name: Test basic connection run: | ssh $REMOTE_HOST "echo 'SSH连接测试成功'" - name: Prepare remote directory run: | ssh $REMOTE_HOST " mkdir -p '$REMOTE_PATH' echo '目录已创建或已存在' ls -la '$REMOTE_PATH' | head -10 " - name: Clean directory run: | ssh $REMOTE_HOST " if [ -d '$REMOTE_PATH' ]; then echo '开始清理目录...' rm -rf '$REMOTE_PATH'/* 2>/dev/null || true rm -rf '$REMOTE_PATH'/.* 2>/dev/null || true echo '目录清理完成' else echo '目录不存在,跳过清理' fi " - name: Deploy files run: | echo "开始部署文件..." tar czf - --exclude='.git' --exclude='.github' . | ssh $REMOTE_HOST "cd '$REMOTE_PATH' && tar xzf -" echo "文件部署完成" - name: Verify deployment run: | ssh $REMOTE_HOST " echo '=== 部署验证 ===' echo '目录大小:' du -sh '$REMOTE_PATH' echo '文件数量:' find '$REMOTE_PATH' -type f | wc -l echo '目录内容:' ls -la '$REMOTE_PATH' | head -10 "