This commit is contained in:
parent
0d43fb8afe
commit
f8cd23f1ca
|
|
@ -3,7 +3,6 @@ name: Deploy to Remote Server
|
|||
on:
|
||||
push:
|
||||
branches: [ main, master ]
|
||||
# 也可以手动触发
|
||||
workflow_dispatch:
|
||||
|
||||
env:
|
||||
|
|
@ -20,33 +19,63 @@ jobs:
|
|||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup SSH
|
||||
- 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
|
||||
ssh-keyscan -p $SSH_PORT $REMOTE_HOST >> ~/.ssh/known_hosts
|
||||
|
||||
# 禁用严格的主机密钥检查
|
||||
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 -p $SSH_PORT $REMOTE_USER@$REMOTE_HOST "
|
||||
ssh $REMOTE_HOST "
|
||||
mkdir -p '$REMOTE_PATH'
|
||||
# 安全清理目录内容
|
||||
if [ \"\$(ls -A '$REMOTE_PATH' 2>/dev/null)\" ]; then
|
||||
rm -rf '$REMOTE_PATH'/*
|
||||
echo 'Directory cleaned'
|
||||
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: Transfer files with tar
|
||||
- name: Deploy files
|
||||
run: |
|
||||
# 使用tar管道传输,保留文件权限和结构
|
||||
tar czf - --exclude='.git' --exclude='.github' . | \
|
||||
ssh -p $SSH_PORT $REMOTE_USER@$REMOTE_HOST "cd '$REMOTE_PATH' && tar xzf -"
|
||||
echo "开始部署文件..."
|
||||
tar czf - --exclude='.git' --exclude='.github' . | ssh $REMOTE_HOST "cd '$REMOTE_PATH' && tar xzf -"
|
||||
echo "文件部署完成"
|
||||
|
||||
- name: Set proper permissions
|
||||
- name: Verify deployment
|
||||
run: |
|
||||
ssh -p $SSH_PORT $REMOTE_USER@$REMOTE_HOST "
|
||||
chmod -R 755 '$REMOTE_PATH'
|
||||
echo 'Permissions set'
|
||||
ssh $REMOTE_HOST "
|
||||
echo '=== 部署验证 ==='
|
||||
echo '目录大小:'
|
||||
du -sh '$REMOTE_PATH'
|
||||
echo '文件数量:'
|
||||
find '$REMOTE_PATH' -type f | wc -l
|
||||
echo '目录内容:'
|
||||
ls -la '$REMOTE_PATH' | head -10
|
||||
"
|
||||
Loading…
Reference in New Issue
Block a user