告别手动部署!AutoDeployService 7分钟极速上手指南
告别手动部署AutoDeployService 7分钟极速上手指南你是否还在为频繁的项目部署流程感到烦躁每次提交代码后都要手动登录服务器、拉取代码、执行脚本AutoDeployService 基于 FastAPI 和 Vue3 开发的自动化部署服务通过 GitCode WebHook 实现代码提交后自动触发部署流程彻底解放你的双手。本文将从环境准备到高级配置带你全面掌握这款部署神器的安装与使用。一、为什么选择 AutoDeployService传统部署方式存在三大痛点效率低下手动执行部署命令平均耗时15分钟/次易出错多步骤操作中人为失误率高达23%响应滞后代码提交后无法即时部署影响迭代速度AutoDeployService 通过以下特性解决这些问题全自动触发GitCode 提交后立即执行部署流程多分支控制精确指定可部署分支避免测试代码污染生产环境部署记录完整保存所有部署历史便于问题追踪钉钉通知部署结果实时推送团队协作更高效二、环境准备与安装2.1 系统要求环境最低配置推荐配置Python3.83.10Node.js14.x18.x内存2GB4GB磁盘空间10GB20GB操作系统Linux/macOSUbuntu 22.04 LTS2.2 安装步骤2.2.1 获取源码git clone https://gitcode.com/andyye/AutoDeployService.git cd AutoDeployService2.2.2 后端依赖安装# 创建虚拟环境推荐 python -m venv venv source venv/bin/activate # Linux/macOS # venv\Scripts\activate # Windows # 使用清华源安装依赖 pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simplerequirements.txt 核心依赖说明fastapi0.115.4 # 高性能API框架 uvicorn0.32.0 # ASGI服务器 pydantic2.9.2 # 数据验证 tinydb4.8.2 # 轻量级数据库 requests2.32.3 # HTTP请求库2.2.3 前端依赖安装与构建cd web # 安装依赖 pnpm install # 推荐使用pnpmnpm/yarn也可 # 修改API地址重要 # 将baseURL修改为管理后台服务地址 sed -i s|baseURL: .*|baseURL: http://your-server-ip:9090/api|g src/utils/request.js # 构建前端项目 pnpm build三、服务部署与配置3.1 后端服务启动开发环境启动# 管理后台服务端口9090 python admin.py # 部署API服务端口8000 python api.py生产环境部署Supervisor安装Supervisorpip install supervisor echo_supervisord_conf /etc/supervisord.conf添加配置文件/etc/supervisor/conf.d/autodeploy.conf[program:auto_deploy_api] command/data/AutoDeployService/venv/bin/python api.py directory/data/AutoDeployService autostarttrue autorestarttrue stderr_logfile/var/log/api_auto_deploy_error.log stdout_logfile/var/log/api_auto_deploy.log userwww-data environmentPATH/data/AutoDeployService/venv/bin [program:auto_deploy_admin] command/data/AutoDeployService/venv/bin/python admin.py directory/data/AutoDeployService autostarttrue autorestarttrue stderr_logfile/var/log/admin_auto_deploy_error.log stdout_logfile/var/log/admin_auto_deploy.log userwww-data environmentPATH/data/AutoDeployService/venv/bin启动服务supervisord -c /etc/supervisord.conf supervisorctl reload3.2 前端部署将web/dist目录部署到 Nginx 或其他 Web 服务器server { listen 80; server_name deploy.yourdomain.com; root /data/AutoDeployService/web/dist; index index.html; location / { try_files $uri $uri/ /index.html; } location /api/ { proxy_pass http://127.0.0.1:9090/api/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }四、使用流程详解4.1 管理后台操作4.1.1 初始化与项目创建访问管理后台默认 http://localhost:9090点击创建按钮进入项目配置页面填写项目信息项目名称标识性名称如用户中心部署脚本部署执行的Shell命令支持环境变量分支设置允许部署的分支逗号分隔如main,dev钉钉通知选填配置后部署结果将推送至钉钉群4.1.2 部署脚本示例# 拉取代码 cd /data/projects/your-project git pull origin $branch # 安装依赖 npm install # 构建项目 npm run build # 重启服务 pm2 restart your-project变量说明$branch 会自动替换为触发部署的分支名4.2 GitCode WebHook 配置进入 GitCode 项目仓库 → 设置 → WebHook添加 WebHookURL部署服务接口地址如https://deploy.yourdomain.com/deploy密码使用管理后台生成的GitCodeWebHook密码触发事件选择推送事件(Push events)4.3 部署流程解析AutoDeployService 的部署流程包含以下关键步骤请求验证通过verify_gitcode_token函数验证 WebHook 合法性项目匹配根据 token 查找对应的部署项目分支检查验证触发分支是否在允许部署列表中记录创建在数据库中创建部署记录Record模型脚本执行使用subprocess.Popen执行部署脚本结果通知通过钉钉机器人推送部署结果核心代码逻辑# 部署核心函数app/modules/deploy.py def deploy_service(info: DeployInfo, gitcode_token: str None, project_id: str None): # 1. 查找项目 project Project.first(**project_where, status1) # 2. 创建部署记录 record Record(project_idproject.get(id), status0, ...) record.save() # 3. 分支检查 if branch not in sys_branch.split(,): record.update({status: -1, ...}) raise ApiException(10003, f当前分支[{branch}]未设置自动部署) # 4. 执行部署脚本 process subprocess.Popen( [/usr/bin/bash, -c, .join(sys_script_list)], shellTrue, stdoutsubprocess.PIPE, stderrsubprocess.PIPE ) # 5. 结果处理与通知 if error: record.update({status: -1, ...}) else: record.update({status: 1, ...}) # 钉钉通知 if dingtalk_url : project.get(dingtalk_url): rebot DingTalkRebot(dingtalk_url) rebot.send_markdown_message(title, message, **rebot_kwargs)五、高级配置5.1 钉钉通知配置创建钉钉机器人群设置 → 智能群助手 → 添加机器人 → 自定义机器人复制 WebHook 地址填入管理后台钉钉机器人URL安全设置选择自定义关键词填入自动部署通知效果# 自动部署通知 ## 项目用户中心 [main] - 提交人张三 - 提交信息修复登录bug - 提交时间2025-09-15 14:30:22 - 部署结果✅运行成功5.2 多环境部署策略通过分支匹配实现多环境自动部署分支名对应环境部署策略main生产环境自动部署dev测试环境自动部署release/*预发布手动触发配置示例# 根据分支自动选择部署目录 if [ $branch main ]; then DEPLOY_DIR/data/production/project else DEPLOY_DIR/data/test/project fi cd $DEPLOY_DIR git pull origin $branch六、常见问题解决6.1 部署失败排查流程查看部署记录管理后台查看详细部署日志检查脚本权限确保部署用户有执行权限手动执行测试在服务器上手动执行脚本看是否报错日志文件位置API服务日志/var/log/api_auto_deploy_error.log管理服务日志/var/log/admin_auto_deploy_error.log6.2 权限问题解决# 给部署用户添加目录权限 chown -R www-data:www-data /data/projects chmod -R 755 /data/projects # 添加sudo免密权限如需 echo www-data ALL(ALL) NOPASSWD: /usr/bin/systemctl restart your-service /etc/sudoers6.3 WebHook不触发检查网络连通性确保 GitCode 能访问部署服务验证WebHook配置URL和密码是否正确查看GitCode WebHook日志检查请求状态和响应七、总结与展望AutoDeployService 通过简洁的架构设计实现了代码提交到应用部署的全自动化流程。其核心优势在于轻量级无需复杂的CI/CD平台单机即可部署易配置通过Web界面完成所有配置无需编写YAML文件可扩展支持自定义部署脚本和通知方式未来版本将计划支持多服务器部署部署前自动备份部署状态实时展示更丰富的通知渠道企业微信、邮件立即使用 AutoDeployService让部署工作像喝水一样简单如有任何问题或建议欢迎提交Issue参与项目共建。觉得有用别忘了点赞收藏关注作者获取更多自动化工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考