# zeroPub **Repository Path**: jackyjie-opensource/zeroPub ## Basic Information - **Project Name**: zeroPub - **Description**: .Net 开发的 Windows 项目部署发布工具 C# Web发布工具 - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2022-01-24 - **Last Updated**: 2022-01-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # zeropub #### 介绍 C# 开发的Windows项目发布平台 目前只支持复制替换类型的项目发布方式,后期希望能支持Windows服务等类型的发布 #### 软件架构 发布服务器节点 - 控制节点 -- 发布客户端 - 客户端截图 ![客户端截图](doc/img/winclient.png) - 组件结构 ![组件](doc/img/imgNodes.png) ##### 名词说明 - Client WinForm客户端 - MainNode Windows服务(控制台程序,运行后可以选择安装、卸载、直接运行三种方式)安装在一台可以连接各部署服务器上((最好内网连接) - Node Windows服务(控制台程序,运行后可以选择安装、卸载、直接运行三种方式) 安装在每个要部署的服务器上 #### 安装教程 1. 各服务器上安装Noder服务(Node) 2. 一台服务上安装Mainer服务(MainNode) 3. 配置好服务的Tcp主节点监听 和 项目信息 4. 客户端连接测试发布功能(Client) #### 使用说明 - 各端使用TCP进行连接,MainNode是TCP服务主机,MainNode可以监听多个端口,实际使用时,最好使用两个端口,一个给内网Node用(只有内网通),一个给Client用。 - Client与MaineNode有一个简单到Md5密码验证,做了一层基本的安全过滤 - 配置说明: ##### Mainer节点配置 ``` { "host": "localhost", //未使用,实际使用0 "port": 9898, //监听的端口 "ports": [29932,22371], //监听的端口 ,与上面的端口取并集为实妹监听商品集 "ProjectDir": "E:\\VersionTmp",//发布时会先上传版本供Node下载,所有会先保存在Mainer端 "passKeys": [ "123" ] //客户端可登录的密码集 } ``` ##### Noder节点配置 ``` { "host": "localhost", //Mainer服务IP "port": 9898, //Mainer端口 "nodeID": "pubserver1", //当前节点的唯一标识ID "nodeName": "发布服务器1", //节点名称 "backupDir": "E:\\WebBackups", //当前节点下所有项目默认备份到目录 "tempDir": "E:\\PubTemp", //临时文件夹,默认取系统Temp "projects": [ //项目集后 { "projectID": "run.api1", //项目ID,对于该节点唯一 "projectName": "云Api1", //项目名称 "projectKey": "run.api", //Mainer用该名称识别为一个项目 "backupIgnores": "WatchLog/;upload/;bin/roslyn/;web.config", //备份忽略文件夹和文件,以‘/’结束为文件夹,不支持通配符 "publishIgnores": null, //发布不覆盖的文件夹或文件 "projectType": 0, //项目类型 目前只支持覆盖发布这一种类型的项目 "baseDir": "E:\\RunWebSites\\run.api", //项目位置 "backupDir": "" //配置位置,为空取节点配置,节点也为空取该项目位置的父级 }, { "projectID": "run.web1", "projectName": "云Web1", "projectKey": "run.web", "backupIgnores": "WatchLog/;upload/;bin/roslyn/", "publishIgnores": null, "projectType": 0, "baseDir": "E:\\RunWebSites\\run.web", "backupDir": "" } ] } ``` ##### Client配置 ``` { "host": "localhost", //MainerIP "port": 9898, //Mainer端口 "passKey": "123" //登录密码,不配需要手动登录 } ``` 发布操作流程: 1. 选择好要发的项目,要发布到的服务器 2. 选择打包的文件夹或已经打包好的zip压缩文件,文件夹或zip内的结构与服务器上的结构一致(目前只支持覆盖类型的发布,后期再优化) 3. 进行发布 内部发布流程: 1. 发布打包:发布会先进行文件夹打包(zip跳过) 2. 发布上传:上传到Mainer,生成一个版本号 3. 发布准备:Node进行版本下载和解压到临时文件夹中,备份现有程序 4. 发布执行:覆盖 **备份和回滚** 1. 可以在服务端配置备份忽略文件和文件夹 2. 回滚可以选择回滚前是否清空原文件(这样可以很干净的回滚) 3. 发布前和发布成功后都分备份,所有不需要手动去备份 #### 交流及其它 QQ: 2323455412