fix: replace scp-action with native sshpass/scp to resolve file access issues
Some checks failed
site-dist-deploy / build-and-deploy (push) Failing after 1m25s
Some checks failed
site-dist-deploy / build-and-deploy (push) Failing after 1m25s
This commit is contained in:
parent
3a8f171f19
commit
517d07caaf
@ -71,38 +71,39 @@ jobs:
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Upload dist archive
|
- name: Deploy to Host (Native SSH/SCP)
|
||||||
uses: appleboy/scp-action@v0.1.7
|
run: |
|
||||||
with:
|
echo "Installing SSH tools..."
|
||||||
host: ${{ env.SSH_HOST }}
|
apt-get update -y && apt-get install -y sshpass openssh-client
|
||||||
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: Extract archive to deploy path
|
echo "Uploading artifact..."
|
||||||
uses: appleboy/ssh-action@v1.0.3
|
# 使用 sshpass 传递密码 (更安全的方式是使用 key,但此处沿用 password)
|
||||||
with:
|
export SSHPASS="${{ env.SSH_PASSWORD }}"
|
||||||
host: ${{ env.SSH_HOST }}
|
|
||||||
username: ${{ env.SSH_USER }}
|
# 1. 检查连接并创建目录
|
||||||
password: ${{ env.SSH_PASSWORD }}
|
sshpass -e ssh -o StrictHostKeyChecking=no -p ${{ env.SSH_PORT }} ${{ env.SSH_USER }}@${{ env.SSH_HOST }} "mkdir -p /tmp/ci-upload"
|
||||||
port: ${{ env.SSH_PORT }}
|
|
||||||
timeout: 300s
|
# 2. SCP 上传 (直接使用当前目录下的 site_dist.tgz,规避跨容器挂载问题)
|
||||||
script: |
|
if [ ! -f "site_dist.tgz" ]; then
|
||||||
cd ${{ env.DEPLOY_PATH }}
|
echo "❌ Error: site_dist.tgz not found in current directory!"
|
||||||
tar -xzf /tmp/ci-upload/site_dist.tgz
|
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
|
rm -f /tmp/ci-upload/site_dist.tgz
|
||||||
|
"
|
||||||
- name: Reload Nginx
|
echo "✅ Deployment complete!"
|
||||||
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
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user