一、概述
使用Bat脚本自动部署C#控制台应用程序至服务器
二、发布流程
三、实现脚本
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
四、结尾
以上脚本实现单台服务器的程序的发布,如果是集群的话,还需要进行改进,集群具体有什么好的方法,目前还在学习探索。希望集群自动部署的朋友给些建议。