🎁 Get the FREE AI Skills Starter GuideSubscribe →
BytesAgainBytesAgain
🦀 ClawHub

Auto Deploy

by @zjm1226

Automates Git project deployment by pulling code, building, and deploying via SSH to Linux servers with backup and health checks.

Versionv1.0.0
Downloads481
Installs2
TERMINAL
clawhub install auto-deploy

📖 About This Skill

自动化部署技能

描述

自动化 Git 项目部署技能。支持从私有 Git 仓库拉取代码、构建打包、SSH 部署到 Linux 服务器。

适用场景

  • 用户提出开发需求后自动开发并部署
  • 代码修改后自动构建部署
  • 多项目部署管理
  • 前置条件

    1. Git 访问配置

    方式 A:HTTP 认证

    # 配置 Git 凭据
    git config --global credential.helper store
    

    方式 B:SSH Key(推荐)

    # 生成 SSH Key
    ssh-keygen -t ed25519 -C "openclaw-deploy" -f ~/.ssh/openclaw_deploy

    将公钥添加到 Git 服务器

    cat ~/.ssh/openclaw_deploy.pub

    2. 服务器 SSH 配置

    # 生成部署 SSH Key(如果复用上面的可以跳过)
    ssh-keygen -t ed25519 -C "server-deploy" -f ~/.ssh/server_deploy

    将公钥添加到服务器

    ssh-copy-id -i ~/.ssh/server_deploy.pub user@server_ip

    3. 验证连接

    # 测试 Git 连接
    git ls-remote http://192.168.1.169:8015/peninsula/points

    测试服务器连接

    ssh -i ~/.ssh/server_deploy user@server_ip "echo connected"

    工作流程

    标准部署流程

    1. 接收需求 → 2. 拉取代码 → 3. 开发修改 → 4. Git 提交 
    → 5. 构建打包 → 6. SSH 传输 → 7. 服务器部署 → 8. 服务重启 → 9. 健康检查
    

    详细步骤

    #### 步骤 1:拉取最新代码

    cd /workspace/points
    git pull origin main
    

    #### 步骤 2:开发修改 根据用户需求修改代码文件。

    #### 步骤 3:提交代码

    git add .
    git commit -m "feat: [需求描述]"
    git push origin main
    

    #### 步骤 4:构建项目

    Node.js 部分

    cd /workspace/points
    npm install
    npm run build
    

    Java 部分

    cd /workspace/points/java-module
    mvn clean package -DskipTests
    

    #### 步骤 5:打包部署产物

    # 创建部署包
    tar -czf points-deploy.tar.gz dist/ target/*.jar
    

    #### 步骤 6:SSH 传输到服务器

    scp -i ~/.ssh/server_deploy points-deploy.tar.gz user@server:/tmp/
    

    #### 步骤 7:服务器部署

    ssh -i ~/.ssh/server_deploy user@server << 'EOF'
      # 备份当前版本
      cp -r /www/wwwroot/points /www/backup/points_$(date +%Y%m%d_%H%M%S)
      
      # 解压新代码
      tar -xzf /tmp/points-deploy.tar.gz -C /www/wwwroot/points
      
      # 重启服务(根据实际服务管理方式)
      # systemd:
      systemctl restart points-service
      
      # 或宝塔面板:
      /etc/init.d/points restart
      
      # 或 PM2(Node.js):
      pm2 restart points
      
      # 清理临时文件
      rm /tmp/points-deploy.tar.gz
    EOF
    

    #### 步骤 8:健康检查

    ssh -i ~/.ssh/server_deploy user@server "curl -s http://localhost:端口/health || exit 1"
    

    配置项

    DEPLOY_CONFIG.md 中配置以下信息:

    | 配置项 | 说明 | 示例 | |--------|------|------| | git.url | Git 仓库地址 | http://192.168.1.169:8015/peninsula/points | | git.branch | 默认分支 | main | | server.host | 服务器 IP | 192.168.1.100 | | server.port | SSH 端口 | 22 | | server.user | SSH 用户 | root | | server.deployPath | 部署路径 | /www/wwwroot/points | | project.type | 项目类型 | nodejs / java / nodejs+java | | project.build.node.buildCmd | Node 构建命令 | npm run build | | project.build.java.buildCmd | Java 构建命令 | mvn clean package | | project.deploy.restartCmd | 重启命令 | pm2 restart points |

    错误处理

    Git 连接失败

  • 检查网络连通性
  • 验证认证信息
  • 确认 SSH Key 已添加
  • SSH 连接失败

  • 检查服务器 SSH 服务状态
  • 验证 SSH Key 权限(chmod 600 ~/.ssh/server_deploy
  • 确认防火墙放行 SSH 端口
  • 构建失败

  • 检查 Node.js/Java 版本
  • 确认依赖安装完整
  • 查看详细错误日志
  • 部署失败

  • 检查部署目录权限
  • 确认磁盘空间充足
  • 回滚到备份版本
  • 安全注意事项

    1. 敏感信息保护: - 不要将密码、Token 写入配置文件 - 使用 SSH Key 代替密码认证 - SSH Key 设置权限 chmod 600

    2. 权限控制: - 部署脚本需要 elevated 权限执行 - 限制可部署的服务器列表 - 敏感操作需要用户确认

    3. 备份策略: - 每次部署前自动备份 - 保留最近 5 个版本 - 支持快速回滚

    使用示例

    简单需求(直接部署)

    用户:帮我加个积分查询接口

    1. 开发修改代码
    2. 提交 Git
    3. 自动构建部署
    4. 回复用户:已完成部署 ✅
    

    复杂需求(需要 Review)

    用户:实现一个积分排行榜功能

    1. 开发修改代码
    2. 提交到 feature 分支
    3. 回复用户:开发完成,请 Review
    4. 用户确认后合并到 main 并部署
    

    回滚流程

    # 获取最新备份版本
    BACKUP=$(ssh user@server "ls -t /www/backup/ | head -1")

    恢复备份

    ssh user@server << EOF systemctl stop points-service rm -rf /www/wwwroot/points/* cp -r /www/backup/$BACKUP/* /www/wwwroot/points/ systemctl start points-service EOF


    版本:1.0.0 最后更新:2026-03-26