首页 > 其他分享 >基于DotNetty实现自动发布 - 项目的配置与发现

基于DotNetty实现自动发布 - 项目的配置与发现

时间:2023-12-06 12:01:00浏览次数:26  
标签:基于 Git string process 解决方案 自动 output StartInfo DotNetty

前言

上一篇,我们实现了基于 DotNetty 的通信基础模块的搭建,本篇,主要实现待发布 Web 项目的集成。

创建待发布项目

  • 为了测试, 我创建了一个基于 .NET 4.8 的 Web 项目 OpenDeploy.TestWebProject
    image

    image

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

待发布项目集成 Git

Git 是一个开源的分布式版本控制系统。我们使用它实现自动化检测需要发布的文件。

配置待发布项目

  • 先放一下实现的效果图, 因为我对 WPF 也不是很精通,不足之处请大家见谅

image
image
image

  • 客户端基于 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 发送到服务器

标签:基于,Git,string,process,解决方案,自动,output,StartInfo,DotNetty
From: https://www.cnblogs.com/broadm/p/17879195.html

相关文章

  • 基于truffle进行合约部署
    1.Truffle简介1.1.什么是Truffle?Truffle是一个世界级的开发环境,测试框架,以太坊的资源管理通道,致力于让以太坊上的开发变得简单。Truffle有以下特性:内置的智能合约编译,链接,部署和二进制文件的管理;快速开发下的自动合约测试;脚本化的,可扩展的部署与发布框架;部署到不管多......
  • 基于kvm虚拟机创建openstack qcow2磁盘镜像
    前提知识KVM做单机管理虚拟机,Openstack集群管理虚拟机 使用工具virt-manager 虚拟机管理器(VirtualMachineManager) 目标基于Kylin-Server-V10-SP3-General-Release-2303-X86_64.iso创建qcow2格式的openstack磁盘镜像 qcow2镜像制作使用环境      IP:......
  • 基于国产仪器的某海上平台SPM振动监测系统
    摘要:使用分布式采集仪和云智慧监测系统,实现海上浮式储油轮的单点SPM(水上水下有轴承的钢结构)振动监测,经受住了湿度高、气温变化大等多变的气候环境的考验。关键词:石油平台,振动监测,环境  某海上浮式储油轮FPSO系泊在单点SPM(水上水下有轴承的钢结构)上,FPSO围绕单点随着潮流旋转,转速......
  • 行业安卓主板-基于RK3568/3288/3588的电子班牌/人脸识别门禁/室内对讲门禁方案解决方
    电子班牌智能电子班牌可在主页实时显示班级全面的基本信息,包括天气、班名、课程表、值日表等,并发布学校通知、班级通知。学生可刷卡自动登陆系统进行课堂反馈,教师和家长可及时了解教学反馈,打通学校、教师、学生之间的互动通道。人脸识别门禁智能人脸识别门禁已成为当下最热门的人工......
  • 行业安卓主板-基于RK3568/3288/3588的AI视觉秤/云相框/点餐机/明厨亮灶行业解决方案(一
    AI视觉秤单屏Al秤集成独立NPU,可达0.8Tops算力,令AI运算效率大幅提升,以实现生鲜商品快速准确识别,快速称重打印标签,降低生鲜门店运营成本,缓解高峰期称重排队拥堵的现象,提高称重效率,升级购物新体验。云相框方案云相框带来全新的方式分享照片,无论身在何处,手机通过云相框应用,即可将照片和......
  • 基于Vue3.3 + TS4 ,让我们自主打造比肩 ElementPlus 的优质组件库的一些经验总结
    Vue.js作为一款流行的JavaScript框架,在前端开发中扮演着重要的角色。本文将分享在Vue3.3和TypeScript4的环境下,打造优质组件库的经验总结,并提供相关示例代码。一、创建项目并配置开发环境首先,我们需要创建一个新的Vue项目并配置好开发环境。具体步骤如下:使用VueCLI创建一个新的......
  • 抖音自动点赞评论刷视频机器人
    影刀直接获取我的应用,进行测试https://api.winrobot360.com/redirect/robot/share?inviteKey=9cd173e2024d2440 按照以下流程执行打开Edge浏览器,打开www.douyin.com键盘输入x,打开评论无限循环等待元素输入框出现键盘输入z,点赞视频如果输入框没出现,键盘输入x,打开......
  • BL121EN:电力系统自动化 IEC61850转OPC UA网关
     在当今快速发展的工业自动化领域,实现不同通信协议之间的无缝连接是提高系统集成度、数据共享和设备互操作性的关键。钡铼技术(Bay-Tech)BL121EN硬网关应运而生,它是一款专为电力系统自动化设计的先进设备,能够实现IEC61850标准到OPCUA协议的转换,确保了不同设备和系......
  • Selenium自动化测试
    如果你还想从头学起Selenium,可以看看这个系列的文章哦!https://www.cnblogs.com/xiaoliulalala/p/17878019.html简单介绍seleniumselenium是一个用于测试web网页的自动化测试工具,它直接运行在浏览器中,模拟用户的操作。支持多浏览器:ie、Firefox、Chrome、edge、Safari等跨平......
  • 基于SpringBoot实现文件的上传下载
    (一)概述文件上传下载一直都是一个系统最常用也是最基本的功能点,刚好最近公司的项目上有用到这个功能,于是自己就用SpringBoot也写了一个简化的版本,已实现文件的上传和下载功能。(二)创建项目首先创建一个SpringBoot的项目,接着引入相关的依赖,因为涉及到数据库的操作,所以依赖会比较......