Jenkins自动发布C# EXE执行程序

1.首先需要Jenkins 安装SSH,并且部署windows的服务器也需要安装SSH。
2.然后配置Jenkins。直接执行windwos上的自动化部署脚本
3.因为jenkins运行的是无GUI执行,所以没有权限启动exe程序,这时需要借助windwos计划任务来启动exe程序,思路就是用两个bat脚本,一个用来编译打包C#程序,然后发送给windwos计划任务启动exe程序。另外一个就是启动exe的脚本。
4.1 打包部署脚本
bash 复制代码
 @echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

:: 1. 关闭程序
echo [1/8] 正在关闭Test.Draw进程...
taskkill /IM Test.Draw.exe /F >nul 2>&1

:: 2. 进入代码目录
cd /d "D:\Code\Test-Draw.Application"
echo [2/8] 进入代码目录...

:: 3. 拉取代码
echo [3/8] 正在从GitLab拉取最新代码...
git checkout Test
git pull "https://git账号:git密码@gitlab.mygit.com/dev/test-Draw.Application.git"
if !errorlevel! neq 0 (
    echo 错误:拉取代码失败
    pause
    exit /b 1
)

:: 4. 构建解决方案
echo [4/8] 正在构建解决方案...
dotnet build "D:\Code\test.Application\test.Draw\test.Draw.sln" --configuration Release
if !errorlevel! neq 0 (
    echo 错误:构建失败
    pause
    exit /b 1
)

:: 5. 生成备份文件夹名称(关键修正部分)
echo [5/8] 生成备份文件夹名称...
set "source_folder=D:\Code\test-Draw.Application\test.Draw\bin\Release\net8.0"
set "target_folder=D:\Release\Program"

:: 方法1:使用WMIC获取标准时间(100%无中文)
for /f "tokens=2 delims==" %%a in ('wmic os get localdatetime /value') do set "datetime=%%a"
set "backup_folder=BackUp%datetime:~0,4%%datetime:~4,2%%datetime:~6,2%%datetime:~8,2%%datetime:~10,2%%datetime:~12,2%"

:: 方法2(备用):如果WMIC不可用则使用此方案
if not defined backup_folder (
    for /f "tokens=1-3 delims=/ " %%a in ("%date%") do (
        set "year=%%a"
        set "month=%%b"
        set "day=%%c"
    )
    for /f "tokens=1-3 delims=:." %%d in ("%time%") do (
        set "hour=%%d"
        set "minute=%%e"
        set "second=%%f"
    )
    :: 补零处理
    set "month=0%month%" & set "month=%month:~-2%"
    set "day=0%day%" & set "day=%day:~-2%"
    set "hour=0%hour%" & set "hour=%hour:~-2%"
    set "minute=0%minute%" & set "minute=%minute:~-2%"
    set "second=0%second%" & set "second=%second:~-2%"
    set "backup_folder=BackUp%year%%month%%day%%hour%%minute%%second%"
)

:: 6. 备份旧文件
echo [6/8] 正在备份旧文件到 D:\Release\!backup_folder!...
if exist "%target_folder%" (
    robocopy "%target_folder%" "D:\Release\BackUp\!backup_folder!" /E /COPY:DAT /R:1 /W:1 /LOG:backup_log.txt
    echo 备份完成!详细信息见 backup_log.txt
)

:: 7. 复制新文件
echo [7/8] 将执行文件拷贝到Release目录...
if not exist "%target_folder%" mkdir "%target_folder%"
xcopy "%source_folder%" "%target_folder%" /E /I /H /Y

:: 8.启动程序
echo [8/8] 启动程序...
schtasks /run /tn "StartTestDrawTask"
4.2 启动Exe脚本
bash 复制代码
@echo off
start "" "D:\Release\Program\Test.Draw.exe"
5.windows计划任务在启动时执行
6.Jenkins配置自动化脚本的目录
相关推荐
云智慧AIOps社区1 小时前
MSP 的增长瓶颈不在客户,在交付模式:人效与规模如何兼得?
运维·人工智能·自动化运维
HAHAXX81 小时前
淘宝RPA定时拉取交易数据实战:从人工录单报错到自动化对账全流程复盘
运维·自动化·rpa
Coisinier2 小时前
docker命令管理镜像及容器
linux·运维·nginx·docker·容器·操作系统
fengkai45453 小时前
十三、Zabbix 监控
运维·服务器·zabbix·监控·网络设备
古法老登瞎折腾3 小时前
大数据智能运维实战(二):准备一个可复现的运维实验环境
java·大数据·运维·spring ai·mcp
数据中心的那点事儿3 小时前
艾特网能:GPU算力服务器冷却系统配套设计介绍
运维·服务器·gpu算力
广州灵眸科技有限公司3 小时前
单芯片同时跑 Linux 与 RT-Thread:RV1126B的AMP异构方案完整拆解
linux·运维·服务器
xixiaoyunya4 小时前
把网站状态巡检自动化:从“每天手动刷一遍”到秒级无人值守
运维·自动化
有毒的教程4 小时前
Linux底层存储路由配置
linux·运维·网络
霍格沃兹测试学院-小舟畅学4 小时前
Playwright MCP:基于页面语义理解的元素定位与浏览器自动化操作
运维·自动化