C#控制台应用程序自动发布Bat脚本

一、概述

使用Bat脚本自动部署C#控制台应用程序至服务器

二、发布流程

Created with Raphaël 2.3.0 开始 关闭正在程序的进程 从Git上面拉取最新的代码 备份之前的程序 编译新的代码 启动编译后新的程序 结束

三、实现脚本

3.1 关闭正在执行的程序
:: cad 任务的发布脚本
@echo off

::关闭正在执行的进程

taskkill /IM  YourProcessName.exe /F

YourProcessName为你的程序名称

3.2 备份之前的版本程序
setlocal enabledelayedexpansion  
  
:: 获取当前日期和时间,并去除空格和冒号  
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"  
set "YYYY=%dt:~0,4%"  
set "MM=%dt:~4,2%"  
set "DD=%dt:~6,2%"  
set "HH=%dt:~8,2%"  
set "Min=%dt:~10,2%"  
set "Sec=%dt:~12,2%"  
  
:: 组合日期和时间,并用下划线替换空格和冒号   拼接名称
set "fulldatetime=Task_BackUp_!YYYY!-!MM!-!DD! !HH!-!Min!-!Sec!"  
  
:: 设置文件夹路径和名称  
set "folderPath=D:\fabu\bakups_task\!fulldatetime!"  
  
:: 创建文件夹  
mkdir "!folderPath!" 2>nul  
  
:: 检查文件夹是否创建成功  
if exist "!folderPath!" (  
    echo 文件夹 !fulldatetime! 已成功创建。  
) else (  
    echo 创建文件夹 !fulldatetime! 时出错。  
)  

::  复制发布文件夹到备份文件目录 注意:需要在 setlocal 和 endlocal代码块里面设置,因为需要用到变量folderPath

set "sourceBackFile=D:\fabu\release_task"  
echo  %folderPath%
:: 存入到目标文件夹
set "destinationBackFolder=%folderPath%"

copy "%sourceBackFile%" "%destinationBackFolder%\"  
  
if %errorlevel%  ==0 (
    echo  任务程序已备份成功!
) else (
    echo 任务程序备份失败!!!!
)

endlocal
3.3 拉取Git最新代码
:: 进入代码文件夹
D:
cd  D:\GitCode\wapi

:: 切换到 发布分支 release
git checkout  release
echo  切换到release分支!

:: 拉取代码
git pull


if %ERRORLEVEL%  == 0 (  
    echo  拉取代码成功。  
) else (  
    echo  拉取代码失败,错误码为 %ERRORLEVEL%。  按键退出
    pause
    exit /b 1
)  
3.4 编译新的代码程序
:: 进入到指定的目录
:: 指定D盘
D:


:: 进入指定的目录 进行发布
cd D:\GitCode\wapi\WebApi\Task

:: 清理
dotnet clean
echo 程序清理

:: 编译
dotnet build -c Release

echo 程序编译成功

然后就是将任务项目的bin文件夹拷贝到任务的目录
set "sourceTaskFile=D:\GitCode\awapi\WebApi\CreateCadTask\bin\Release\net8.0"  
echo  %folderPath%
:: 存入到目标文件夹
set "destinationTaskFolder=D:\fabu\release_task"

copy "%sourceTaskFile%" "%destinationTaskFolder%\"  
  
if %errorlevel%  ==0 (
    echo 发布程序成功!
) else (
    echo 发布程序失败!!!!
)
3.5 复制存放在服务器的config文件
:: 复制WebConfig文件

:: 文件源
set "sourceFile=D:\fabu\config"  
:: 存入到目标文件夹
set "destinationFolder=D:\fabu\release_ask"

copy "%sourceFile%" "%destinationFolder%\"  
  
if %errorlevel%  ==0 (
    echo  配置文件已成功复制到目标文件夹 
) else (
    echo 配置文件复制文件时出错
)

:: 本机发布完成
echo 本机程序发布成功!!!
3.6 启动程序
:: 启动消费程序 初次多启动几个
start "启动消费程序" "D:\FaBu\release_task\CreateCadTask.exe"

echo 消费者程序已经启动-【1】

start "启动消费程序" "D:\fabu\release_task\CreateCadTask.exe"
echo 消费者程序已经启动-【2】

start "启动消费程序" "D:\fabu\release_task\CreateCadTask.exe"
echo 消费者程序已经启动-【3】

start "启动消费程序" "D:\fabu\release_task\CreateCadTask.exe"
echo 消费者程序已经启动-【4】

start "启动消费程序" "D:\fabu\release_task\CreateCadTask.exe"
echo 消费者程序已经启动-【5】

:: 等待用户按键 关闭
pause

四、结尾

以上脚本实现单台服务器的程序的发布,如果是集群的话,还需要进行改进,集群具体有什么好的方法,目前还在学习探索。希望集群自动部署的朋友给些建议。

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码写到35岁

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值