From 517d07caafe5836696f9eb0c607f3a683df0b5bb Mon Sep 17 00:00:00 2001 From: shanshanzhong Date: Sun, 4 Jan 2026 04:06:28 -0800 Subject: [PATCH] fix: replace scp-action with native sshpass/scp to resolve file access issues --- .gitea/workflows/docker.yml | 67 +++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/.gitea/workflows/docker.yml b/.gitea/workflows/docker.yml index 61df10e..b5311ef 100644 --- a/.gitea/workflows/docker.yml +++ b/.gitea/workflows/docker.yml @@ -71,38 +71,39 @@ jobs: exit 1 fi - - name: Upload dist archive - uses: appleboy/scp-action@v0.1.7 - with: - host: ${{ env.SSH_HOST }} - username: ${{ env.SSH_USER }} - password: ${{ env.SSH_PASSWORD }} - port: ${{ env.SSH_PORT }} - source: "site_dist.tgz" - target: "/tmp/ci-upload" - overwrite: true - debug: true + - name: Deploy to Host (Native SSH/SCP) + run: | + echo "Installing SSH tools..." + apt-get update -y && apt-get install -y sshpass openssh-client - - name: Extract archive to deploy path - uses: appleboy/ssh-action@v1.0.3 - with: - host: ${{ env.SSH_HOST }} - username: ${{ env.SSH_USER }} - password: ${{ env.SSH_PASSWORD }} - port: ${{ env.SSH_PORT }} - timeout: 300s - script: | - cd ${{ env.DEPLOY_PATH }} - tar -xzf /tmp/ci-upload/site_dist.tgz + echo "Uploading artifact..." + # 使用 sshpass 传递密码 (更安全的方式是使用 key,但此处沿用 password) + export SSHPASS="${{ env.SSH_PASSWORD }}" + + # 1. 检查连接并创建目录 + sshpass -e ssh -o StrictHostKeyChecking=no -p ${{ env.SSH_PORT }} ${{ env.SSH_USER }}@${{ env.SSH_HOST }} "mkdir -p /tmp/ci-upload" + + # 2. SCP 上传 (直接使用当前目录下的 site_dist.tgz,规避跨容器挂载问题) + if [ ! -f "site_dist.tgz" ]; then + echo "❌ Error: site_dist.tgz not found in current directory!" + exit 1 + fi + + sshpass -e scp -o StrictHostKeyChecking=no -P ${{ env.SSH_PORT }} site_dist.tgz ${{ env.SSH_USER }}@${{ env.SSH_HOST }}:/tmp/ci-upload/site_dist.tgz + + # 3. 解压并重启 Nginx + echo "Deploying on remote host..." + sshpass -e ssh -o StrictHostKeyChecking=no -p ${{ env.SSH_PORT }} ${{ env.SSH_USER }}@${{ env.SSH_HOST }} " + echo 'Extracting to /var/www/down...' + mkdir -p /var/www/down + # 解压覆盖 + tar -xzf /tmp/ci-upload/site_dist.tgz -C /var/www/down + + echo 'Reloading Nginx...' + # 尝试多种 reload 方式 + nginx -s reload || systemctl reload nginx || echo 'Warning: Nginx reload returned non-zero' + + echo 'Cleanup...' rm -f /tmp/ci-upload/site_dist.tgz - - - name: Reload Nginx - uses: appleboy/ssh-action@v1.0.3 - with: - host: ${{ env.SSH_HOST }} - username: ${{ env.SSH_USER }} - password: ${{ env.SSH_PASSWORD }} - port: ${{ env.SSH_PORT }} - timeout: 300s - script: | - nginx -t && nginx -s reload + " + echo "✅ Deployment complete!"