基于DotNetty实现自动发布 - 项目的配置与发现
前言
上一篇,我们实现了基于 DotNetty 的通信基础模块的搭建,本篇,主要实现待发布 Web 项目的集成。
创建待发布项目
为了测试, 我创建了一个基于 .NET 4.8 的 Web 项目
OpenDeploy.TestWebProject


我本机的代码仓储路径是:
D:\Projects\Back\dotnet\Study\OpenDeploy.TestWebProject

待发布项目集成 Git
Git 是一个开源的分布式版本控制系统。我们使用它实现自动化检测需要发布的文件。
- 我把这个测试的 Web 项目,托管在了
Gitee, 仓储地址如下: OpenDeply.TestWebProject
配置待发布项目
- 先放一下实现的效果图, 因为我对 WPF 也不是很精通,不足之处请大家见谅



- 客户端基于 WPF 实现
- 数据持久化使用的 SQLite
- 增加了几个常用的
Git命令 - 简单贴点代码,其他请大家看源码吧,最下面有地址
解决方案模型
/// <summary> 解决方案领域模型 </summary>
[Table("Solution")]
public class Solution
{
[Key]
public int Id { get; set; }
/// <summary> 解决方案名称 </summary>
public string SolutionName { get; set; } = string.Empty;
/// <summary> 解决方案Git仓储路径 </summary>
public string GitRepositoryPath { get; set; } = string.Empty;
}
确定配置解决方案
/// <summary> 确定配置解决方案 </summary>
[RelayCommand]
private void OkConfigSolution()
{
try
{
if (string.IsNullOrEmpty(ConfigSolution.SolutionName))
{
throw new Exception("请填写解决方案名称");
}
if (!GitHelper.IsValidRepository(ConfigSolution.GitRepositoryPath))
{
throw new Exception("非法的Git仓储路径");
}
}
catch (Exception ex)
{
Growl.ClearGlobal();
Growl.WarningGlobal(ex.Message);
return;
}
//持久化到Sqlite
solutionRepository.AddSolution(ConfigSolution.Map2Entity());
Growl.SuccessGlobal("操作成功");
//重新加载解决方案
LoadSolutions();
//关闭弹窗
configSolutionDialog?.Close();
}
执行 Git 命令
/// <summary> 执行git命令 </summary>
private async Task RunGitCommand(string cmd)
{
var loading = Loading.Show();
string output = string.Empty;
LogText = string.Empty;
await Task.Run(() =>
{
var _process = new Process();
_process.StartInfo.WorkingDirectory = GitRepositoryPath;
_process.StartInfo.FileName = "cmd.exe";
_process.StartInfo.Arguments = "/C " + cmd;
_process.StartInfo.UseShellExecute = false;
_process.StartInfo.CreateNoWindow = true;
_process.StartInfo.RedirectStandardInput = true;
_process.StartInfo.RedirectStandardOutput = true;
_process.StartInfo.RedirectStandardError = true;
_process.Start();//启动程序
output = _process.StandardOutput.ReadToEnd();
if (string.IsNullOrEmpty(output))
{
output = _process.StandardError.ReadToEnd();
if (string.IsNullOrEmpty(output))
{
output = "没有返回值";
}
}
_process.WaitForExit();
_process.Close();
});
LogText = output;
loading.Close();
}
总结
至此,我们实现了待发布项目的配置与发现,简单集成了常用的 Git 命令等
代码仓库
项目暂且就叫
OpenDeploy吧
欢迎大家拍砖,Star
下一步
计划下一步,实现一键发布,自动检测到自上次发布以来的代码变化,自动识别要发布的文件,一次性打包通过 DotNetty 发送到服务器
基于DotNetty实现自动发布 - 项目的配置与发现的更多相关文章
- tomcat8热部署配置--maven自动发布项目到tomcat8(如何支持远程访问部署)
1.tomcat8实现热部署的配置 我们实现热部署后,自然就可以通过maven操作tomcat了,所以就需要maven取得操作tomcat的权限,现在这一步就是配置tomcat的可操作权限. #进入 ...
- ideal环境maven自动下载项目依赖配置
开篇序言 最近在使用ideal软件对springboot进行开发研究,中间遇到的环境和创建springboot遇到的问题真是玲琅满目,但是遇到问题就要克服这是万年不变的真理. 该文档会后续不断的补充, ...
- 基于jenkins的go语言项目自动化发布遇到的坑
之前我们研究dep,就是为了有一天可以实现go语言项目在我们系统里的CI. 之前联物科技的项目主要是使用java作为后端开发语言,基于jenkins的自动发布,使用了pipeline编写脚本,从拉取代 ...
- 配置Jenkins 实现自动发布maven项目至weblogic(svn+maven+weblogic12c)
Jenkins安装完成之后,需要我们对其配置,然后才可以实现自动部署项目. 前提 防火墙开放weblogic的7001端口 Linux(CentOS):firewall-cmd --zone=publ ...
- Windows下配置Jenkins 实现自动发布maven项目至tomcat(svn+maven+tomcat)
Jenkins安装完成之后,需要我们对其配置,然后才可以实现自动部署项目. 前提 防火墙开放tomcat的8080端口 Linux(CentOS):firewall-cmd --zone=public ...
- eclipse项目自动发布到tomcat目录,缺文件。
eclipse项目自动发布到tomcat目录,缺文件. 解决方案: 项目--Properties-->Deployment Assembly-->Add--> Folder Add- ...
- 使用Jenkins自动发布Windows服务项目
不同于发布Web项目,自动发布Windows服务项目需要解决以下几个问题: 如何远程停止和开启服务?需要在发布前停止服务,在发布完成后开启服务. 如何上传编译文件到目标服务器? 问题1:如何远程停止和 ...
- PM2自动发布本地项目到服务器
(一)开发环境 本地服务器 Ubunt14.04 远程服务器Ubuntu16.04 发布软件PM 2 (二)发布介绍 本地和我们的远程服务器,必须都安装有git,pm2,以及nodejs环境.实际上配 ...
- 【转载】JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案
JAVA SpringBoot 项目打成jar包供第三方引用自动配置(Spring发现)解决方案 本文为转载,原文地址为:https://www.cnblogs.com/adversary/p/103 ...
- 后盾网lavarel视频项目---phpstorm 配置ftp, 自动更新同步代码
后盾网lavarel视频项目---phpstorm 配置ftp, 自动更新同步代码 一.总结 一句话总结: 1.在phpstorm中设置:路径Tools/Deployment/Configuratio ...
随机推荐
- springboot项目图片不显示的问题
首先确认你的图片路径是对的,maven重新clean,install了,web服务也重启了 那么大概率就是浏览器缓存的原因,因为页面直接用的是缓存的旧数据,所以显示不出来. 在不修改浏览器设置的情况下 ...
- 一种基于ChatGPT的高效吃瓜方式的探索和研究。
你好呀,我是歪歪. 最近掌握了一个新的吃瓜方式,我觉得还行,给大家简单分享一下. 事情说来就话长了,还得从最近的一次"工业革命"开始,也就是从超导材料说起. 8 月 1 日的时候 ...
- [ABC146E] Rem of Sum is Num
2023-02-27 题目 题目传送门 翻译 翻译 难度&重要性(1~10):4 题目来源 AtCoder 题目算法 数学 解题思路 先对整个序列求前缀和 \(sum_k=\sum_{i=1} ...
- 【项目源码】JavaWeb网上购书系统
JavaWeb网上购书系统 介绍 采用JSP.Servlet.MySQL.Tomcat8.0开发的网上购书系统. 软件架构 网上书城主要功能如下: (1) 前台(客户购买)部分: ① 用户管理:注册会 ...
- 【NET 7.0、OpenGL ES】使用Silk.NET渲染MMD,并实时进行物理模拟。
有关mmd播放器,网上也有许多非常漂亮的实现,如 pmxeditor.saba.blender_mmd_tools等等.. 首先我想先介绍下我参考实现的仓库: sselecirPyM/Coocoo3D ...
- Avalonia开发(二)项目结构解析
一.前言 在Avalonia开发(一)环境搭建 文章中介绍了Avalonia的介绍.开发环境的搭建.项目创建,以及项目FirstAvaloniaApp项目结构的介绍.本篇文章将介绍各平台的项目介绍. ...
- redis基本数据类型 string
string类型 1.SET:添加或者修改已经存在的一个String类型的键值对 2.GET:根据key获取String类型的value 3.MSET:批量添加多个String类型的键值对 4.MGE ...
- MySQL运维2-主从复制
一.主从复制概念 主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从服务器中,然后在从服务器上对这些日志重新执行也叫重做,从而使得从数据库和主库的数据保持同步. MySQL支持一台主库同时 ...
- vim vimtutor
=============================================================================== = 歡 迎 閱 ...
- idea2020.3 安装插件JetBrains 插件市场安装 Cloud Toolkit
<Cloud Toolkit User Guide> 本文是 Alibaba Cloud Toolkit 的使用文档指引,所有相关的使用参考,都可以在本文中找到.如果在使用中有任何问题,请 ...