# .net全栈简易自动化部署 **Repository Path**: wanglei6688/AutoUpdate ## Basic Information - **Project Name**: .net全栈简易自动化部署 - **Description**: 支持.net 6 以上版本 ,vue 3 版本全栈服务器上自动更新。 需要配置好配置文件,都可以改。全栈,其他语言java、react也都行,简易版本得。 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-28 - **Last Updated**: 2026-04-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ITF 自动更新部署说明 ## 目录说明 - `config\appsettings.json`:自动更新总配置,仓库地址、分支、源码目录、发布目录、日志目录、后端端口和计划任务频率都在这里改,命名参考 .NET 配置文件。 - `source`:Gitee 仓库工作副本。 - `scripts`:自动更新、计划任务安装和配置脚本。 - `publish\frontend`:前端生产构建发布目录,对应 8080 静态站点根目录。 - `publish\backend`:后端 .NET 发布目录,对应 5566 后端服务程序目录。 - `publish\backend\wwwroot`:后端用户上传文件目录;默认发布时会保留,不会被新版本清空。 - `publish\backend-staging`:后端临时发布目录,只在发布过程中短暂存在;新后端启动成功后会自动删除。 - `publish\backend-backup`:后端旧版本回滚目录,只在发布过程中短暂存在;新后端启动失败时会用它恢复旧版本。 - `logs`:自动更新日志;主日志按天聚合为 `deploy-YYYYMMDD.log`,最近一次检查结果写入 `last-check.txt`。 ## 修改配置 以后换路径、换分支、换发布目录,只改这个文件: ```text E:\AutoUpadte\config\appsettings.json ``` 常用字段: ```json { "paths": { "root": "E:\\AutoUpadte", "source": "source", "log": "logs" }, "frontend": { "projectPath": "source\\ITF.ERP.Web", "publishPath": "publish\\frontend" }, "backend": { "projectPath": "source\\ITF.ERP.Server\\ITF.Admin.WebApi\\ITF.Admin.WebApi.csproj", "publishPath": "publish\\backend", "stagingPublishPath": "publish\\backend-staging", "preservedPublishNames": [ "wwwroot" ], "port": 5566 } } ``` 除 `paths.root` 外,上面这些目录默认都按 `paths.root` 展开。比如 `publish\\backend` 实际会解析为 `E:\AutoUpadte\publish\backend`。 ## 首次手动执行 ```powershell powershell.exe -NoProfile -ExecutionPolicy Bypass -File "E:\AutoUpadte\scripts\deploy.ps1" ``` 如果配置文件放在其他位置: ```powershell powershell.exe -NoProfile -ExecutionPolicy Bypass -File "E:\AutoUpadte\scripts\deploy.ps1" -ConfigPath "D:\你的目录\appsettings.json" ``` ## 发布依赖检查 每次部署开始时会先检查服务器是否存在以下依赖,并把路径和版本写入 `logs\deploy-YYYYMMDD.log`: - Git - Node.js - npm - .NET 8 SDK 只要有一个依赖不存在或不可执行,脚本会立即中断,不会拉取代码、构建前端、发布后端或重启服务。 ## 双击执行命令 - `01-close-backend-port.cmd`:按 `config\appsettings.json` 里的 `backend.port` 关闭后端端口。 - `02-deploy-latest-code.cmd`:手动拉取 Gitee 最新代码并执行完整发布。 - `03-disable-scheduled-task.cmd`:关闭自动更新计划任务,任务仍保留。 - `04-enable-scheduled-task.cmd`:打开已经存在的自动更新计划任务。 - `05-delete-scheduled-task.cmd`:删除自动更新计划任务,删除后需要重新安装才能恢复。 - `06-创建定时任务.cmd`:创建或覆盖自动更新计划任务。 - `07-启动后端服务.cmd`:按 `config\appsettings.json` 里的后端发布目录、入口 DLL、监听地址和端口启动后端服务。 ## 安装自动更新计划任务 ```powershell powershell.exe -NoProfile -ExecutionPolicy Bypass -File "E:\AutoUpadte\scripts\install-scheduled-task.ps1" ``` 如果配置文件放在其他位置: ```powershell powershell.exe -NoProfile -ExecutionPolicy Bypass -File "E:\AutoUpadte\scripts\install-scheduled-task.ps1" -ConfigPath "D:\你的目录\appsettings.json" ``` ## 自动重启后端 默认配置会在后端发布时自动处理 5566: ```text 先发布新后端到 publish\backend-staging 备份旧后端到 publish\backend-backup 停止监听 5566 的旧后端进程 替换 publish\backend 正式目录,但保留 backend.preservedPublishNames 中配置的目录或文件 后台启动 ITF.Admin.WebApi.dll 等待 5566 端口重新监听 确认新后端运行成功后,删除 publish\backend-staging 和 publish\backend-backup 如果新后端发布或启动失败,自动恢复 publish\backend-backup 并重新启动旧版本 ``` 默认启动命令等价于: ```powershell dotnet "E:\AutoUpadte\publish\backend\ITF.Admin.WebApi.dll" --urls "http://0.0.0.0:5566" ``` 如果服务器后端是 Windows 服务,请修改 `config\appsettings.json`: ```json { "backend": { "restartMode": "WindowsService", "windowsServiceName": "你的服务名" } } ``` ## 重要说明 - 脚本默认跟踪 `master` 分支。 - 脚本通过 Windows 计划任务轮询 Gitee,不需要 Gitee 访问内网服务器。 - 脚本现在会自动重启后端,让 5566 接口使用最新发布结果。 - 没有新提交时默认只更新 `logs\last-check.txt`,不会每分钟生成一个新日志文件。 - 主部署日志默认保留 14 天,可在 `config\appsettings.json` 修改 `logs.retentionDays`。 - 前端依赖安装使用 `npm install --legacy-peer-deps`,用于兼容当前 Vite 与插件声明的 peer dependency 冲突。 - 如果 8080 或 5566 的实际站点目录不是默认发布目录,请修改 `config\appsettings.json`。 - 如果后端运行目录里还有其他用户数据目录,请加入 `backend.preservedPublishNames`,例如 `[ "wwwroot", "uploads" ]`。