+41
-12
@@ -1,5 +1,5 @@
|
||||
# ==========================================
|
||||
# 基于 easingthemes/ssh-deploy Action 的部署工作流
|
||||
# 纯 Bash SCP 部署工作流(零外部 Action 依赖)
|
||||
# ==========================================
|
||||
name: Deploy Frontend
|
||||
|
||||
@@ -16,14 +16,43 @@ jobs:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Deploy via rsync
|
||||
uses: easingthemes/ssh-deploy@v4
|
||||
env:
|
||||
SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
ARGS: "-avz --delete"
|
||||
SOURCE: "./"
|
||||
REMOTE_HOST: ${{ secrets.SSH_HOST }}
|
||||
REMOTE_USER: ${{ secrets.SSH_USER }}
|
||||
REMOTE_PORT: ${{ secrets.SSH_PORT }}
|
||||
TARGET: ${{ secrets.TARGET_DIR }}
|
||||
EXCLUDE: ".git/, .gitea/, .github/"
|
||||
- name: Deploy via SCP
|
||||
run: |
|
||||
SERVER_HOST="${{ secrets.SSH_HOST }}"
|
||||
SERVER_USER="${{ secrets.SSH_USER }}"
|
||||
SERVER_PORT="${{ secrets.SSH_PORT }}"
|
||||
TARGET_DIR="${{ secrets.TARGET_DIR }}"
|
||||
|
||||
: ${SERVER_HOST:="192.168.31.185"}
|
||||
: ${SERVER_USER:="root"}
|
||||
: ${SERVER_PORT:="2222"}
|
||||
: ${TARGET_DIR:="/data/apps/ci-cd/frontend"}
|
||||
|
||||
echo "🌐 部署至 ${SERVER_USER}@${SERVER_HOST}:${TARGET_DIR} (端口: ${SERVER_PORT})"
|
||||
|
||||
# 配置 SSH 密钥
|
||||
mkdir -p ~/.ssh
|
||||
chmod 700 ~/.ssh
|
||||
echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
|
||||
chmod 600 ~/.ssh/id_ed25519
|
||||
|
||||
# 扫描主机指纹
|
||||
ssh-keyscan -p "${SERVER_PORT}" -H "${SERVER_HOST}" >> ~/.ssh/known_hosts 2>/dev/null
|
||||
|
||||
# 确保目标目录存在
|
||||
ssh -i ~/.ssh/id_ed25519 -p "${SERVER_PORT}" \
|
||||
"${SERVER_USER}@${SERVER_HOST}" \
|
||||
"mkdir -p ${TARGET_DIR}"
|
||||
|
||||
# SCP 上传(排除 .git .gitea .github)
|
||||
echo "🚀 开始上传文件..."
|
||||
scp -i ~/.ssh/id_ed25519 -P "${SERVER_PORT}" -r \
|
||||
./* \
|
||||
"${SERVER_USER}@${SERVER_HOST}:${TARGET_DIR}/"
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✨ 部署成功!"
|
||||
else
|
||||
echo "❌ 部署失败"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user