节点在线、应用在线、配置在线使用令牌查询
大石头 authored at 2021-12-16 19:49:30
3.77 KiB
Stardust
# PUB-20 部署代理(DeployAgent) > 版本:v1.0 | 日期:2026-07-15 > 对应需求:PUB-20 编译节点/部署代理 --- ## 功能说明 DeployAgent 是星尘平台的部署客户端,支持两种运行模式: - **服务模式**:作为后台服务运行,接收星尘服务端的编译命令,自动完成拉取代码、编译、打包、上传全流程 - **命令行模式**:通过命令行直接执行打包操作 ## 命令行模式 ```bash # 打包命令 stardeploy pack <输出zip> [文件模式...] # 示例:打包所有可执行文件 stardeploy pack app.zip *.exe *.dll *.runtimeconfig.json ./Config/*.config # 打包整个目录(加 -r 递归压缩) stardeploy pack app.zip -r ./publish/ ``` ## 服务模式 不带命令行参数直接运行,DeployAgent 将连接星尘服务端,等待接收 `deploy/compile` 编译命令。 ## 代码仓库结构 ``` my-repo/ ├── build/ │ └── build.sh # 构建脚本 └── publish/ # 产物输出目录 ``` ## 编译命令参数 | 参数 | 说明 | 默认值 | |------|------|--------| | Repository | Git 仓库地址。支持 SSH(`git@host:repo.git`)和 HTTP(`http://user@host/repo.git`)格式 | - | | Branch | 分支名 | main | | SourcePath | 本地源码路径(优先于 Repository) | - | | BuildArgs | 编译参数 | - | | OutputPath | 编译输出目录 | publish | | PackageFilters | 打包过滤器 | - | | PullCode | 是否拉取代码 | false | | BuildProject | 是否编译项目 | false | | PackageOutput | 是否打包输出 | false | | UploadPackage | 是否上传应用包 | false | ## 工作流程 ``` 星尘服务端 → deploy/compile 命令 → DeployAgent ↓ Git clone/pull 拉取代码(PullCode=true) ↓ dotnet restore/build/publish(BuildProject=true) ↓ 按 PackageFilters 打包(PackageOutput=true) ↓ 上传 zip 到服务端(UploadPackage=true) ``` ## 环境要求 - Git for Windows(包含 Git Bash) - .NET SDK 8.0+ - 星尘平台(StarServer 运行中) ## 仓库认证配置 使用 HTTP 格式仓库地址(`http://user@host/repo.git`)时,首次部署需要手动完成凭据缓存: **Windows 机器**:在目标机器上手动执行一次 `git clone`,Git Credential Manager 会弹出认证窗口,输入密码后凭据即被缓存,后续 DeployAgent 可无交互拉取。 ```powershell # 在目标编译节点上手动执行一次 git clone http://username@git.example.com/group/project.git # 输入密码后,凭据被 GCM 缓存,后续 DeployAgent 无需再次认证 ``` **Linux 机器**:如果使用 HTTP 格式,必须使用带用户名的 HTTP 格式(`http://user@host/repo.git`),Linux 无 GUI 认证窗口,不带用户名会直接报错。建议配合 SSH Key(通过 `DeployKey` 参数)或提前配置 `git credential-store`。 ## FAQ ### 上传失败:远程主机强迫关闭了一个现有的连接 **错误信息**: ``` System.Exception: 上传失败,已重试 3 次:Error while copying content to a stream. ---> System.Net.Http.HttpRequestException: Error while copying content to a stream. ---> System.IO.IOException: Unable to write data to the transport connection: 远程主机强迫关闭了一个现有的连接。. ---> System.Net.Sockets.SocketException (10054): 远程主机强迫关闭了一个现有的连接。 ``` **原因**:上传的应用包文件过大,超过了服务端的请求体大小限制(默认 100MB,最大 1GB)。 **解决方案**:登录星尘平台,进入系统设置,调整 `MaxUploadSize` 配置项。该配置项控制 `/Deploy/UploadBuildFile` 接口允许的最大请求体字节数,默认值为 100000000(100MB),最大不超过 1GB(1073741824 字节)。根据实际需要调大该值,或设置为 0 使用 Kestrel 默认限制。