基于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>
public class Solution
{
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>
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 吧
[*]OpenDeploy: https://gitee.com/broadm-dotnet/OpenDeploy
欢迎大家拍砖,Star
下一步
计划下一步,实现一键发布,自动检测到自上次发布以来的代码变化,自动识别要发布的文件,一次性打包通过 DotNetty 发送到服务器
来源:https://www.cnblogs.com/broadm/archive/2023/12/06/17879195.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页:
[1]