From a5ebf9475950996827f1b50d7b74f9fff989efd6 Mon Sep 17 00:00:00 2001 From: Qiu Date: Fri, 19 Jun 2026 23:21:57 +0800 Subject: [PATCH] google --- .gitea/workflows/deploy.yml | 60 +++++++++++++++++++++++++++++++++---- 1 file changed, 55 insertions(+), 5 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 3e6106d..1693fc8 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -1,4 +1,7 @@ -name: Test +# ========================================== +# 纯 Bash 命令行部署工作流(不依赖第三方 Action 插件) +# ========================================== +name: Deploy Frontend on: push: @@ -10,7 +13,54 @@ jobs: runs-on: ubuntu-latest steps: - - run: | - echo "Hello Gitea Actions" - pwd - ls -la \ No newline at end of file + # 1. 官方核心插件:仅用于拉取当前仓库的代码到工作区 + - name: Checkout code + uses: actions/checkout@v4 + + # 2. 纯安全机制与自动化传输(完全使用 Linux 内置命令) + - name: Execute Bash Deployment + run: | + # -------------- 1. 声明与解析变量 -------------- + # 优先读取 Gitea Secrets,若未配置则使用默认值 + SERVER_IP="${{ secrets.SSH_HOST }}" + SERVER_USER="${{ secrets.SSH_USER }}" + TARGET_DIR="${{ secrets.TARGET_DIR }}" + + # 兜底本地测试变量(如果 Secrets 没配,会走这里的默认值) + : ${SERVER_IP:="192.168.31.185"} + : ${SERVER_USER:="root"} + : ${TARGET_DIR:="/data/apps/ci-cd/frontend"} + + echo "🌐 准备部署至目标服务器: ${SERVER_USER}@${SERVER_IP}:${TARGET_DIR}" + + # -------------- 2. 初始化本地 SSH 环境 -------------- + mkdir -p ~/.ssh + chmod 700 ~/.ssh + + # 将 Gitea 网页端配置的私钥写入临时容器文件系统 + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519 + chmod 600 ~/.ssh/id_ed25519 + + # 动态扫描目标服务器的主机指纹,防止 SSH 连接时由于 [yes/no] 确认提示导致流水线卡死 + ssh-keyscan -H "$SERVER_IP" >> ~/.ssh/known_hosts 2>/dev/null + + # -------------- 3. 执行 rsync 增量同步 -------------- + echo "🚀 开始传输增量文件..." + + # 使用 -e 参数显式指定刚写好的私钥 + # --exclude 规避掉不需要上到 Nginx 服务器的流水线配置及本地多余资源 + rsync -avz --delete \ + -e "ssh -i ~/.ssh/id_ed25519" \ + --exclude=".git/" \ + --exclude=".gitea/" \ + --exclude=".github/" \ + ./ \ + "${SERVER_USER}@${SERVER_IP}:${TARGET_DIR}" + + # -------------- 4. 状态检查 -------------- + if [ $? -eq 0 ]; then + echo "✨ 部署成功!" + else + echo "❌ 部署失败,请检查密钥权限或网络连通性。" + exit 1 + fi \ No newline at end of file