当前位置: 首页 > news >正文

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

1.首先需要Jenkins 安装SSH,并且部署windows的服务器也需要安装SSH。
2.然后配置Jenkins。直接执行windwos上的自动化部署脚本
3.因为jenkins运行的是无GUI执行,所以没有权限启动exe程序,这时需要借助windwos计划任务来启动exe程序,思路就是用两个bat脚本,一个用来编译打包C#程序,然后发送给windwos计划任务启动exe程序。另外一个就是启动exe的脚本。
4.1 打包部署脚本
 @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 错误:拉取代码失败pauseexit /b 1
):: 4. 构建解决方案
echo [4/8] 正在构建解决方案...
dotnet build "D:\Code\test.Application\test.Draw\test.Draw.sln" --configuration Release
if !errorlevel! neq 0 (echo 错误:构建失败pauseexit /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.txtecho 备份完成!详细信息见 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脚本
@echo off
start "" "D:\Release\Program\Test.Draw.exe"
5.windows计划任务在启动时执行

在这里插入图片描述

6.Jenkins配置自动化脚本的目录

在这里插入图片描述

http://www.xdnf.cn/news/944119.html

相关文章:

  • Unity中的对象池ObjPool/PoolManager
  • 安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
  • 基于Python的气象数据分析及可视化研究
  • Python打卡训练营学习记录Day49
  • C++11智能指针
  • Linux入门(十五)安装java安装tomcat安装dotnet安装mysql
  • 虚拟机网络不通的问题(这里以win10的问题为主,模式NAT)
  • Python爬虫(52)Scrapy-Redis分布式爬虫架构实战:IP代理池深度集成与跨地域数据采集
  • 使用 C# 将 Word、Excel、PDF 和 PPT文档转换为 Markdown 格式
  • 《C++初阶之入门基础》【普通引用 + 常量引用 + 内联函数 + nullptr】
  • 【BUG】记STM32F030多通道ADC DMA读取乱序问题
  • 2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
  • 曲面的存在性定理
  • 【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
  • 【医疗电子技术】新型医疗电子和医学人工智能发展现状和趋势
  • 【异常】极端事件的概率衰减方式(指数幂律衰减)
  • 漏洞检测方案如何选工具?开源与商业工具适用环境大不同
  • 【时序预测】-Transformer系列
  • Hibernate Validator 数据验证
  • pymongo配置事务环境并封装事务功能
  • JDBC基础关键_001_认识
  • Spring类型转换器相关接口和实现原理
  • 【JavaScript】利用`localStorage`实现多窗口数据交互同步【附完整源码】
  • OD 算法题 B卷【删除字符串中出现次数最少的字符】
  • 如何禁用windows server系统自动更新并防止自动重启
  • 推理式奖励模型:使用自然语言反馈改进强化学习效果
  • 卫星接收天线G/T值怎么计算?附G/T计算excel表格链接
  • 打卡day48
  • 12.7Swing控件5 JProgressBar
  • Spring AI中使用ChatMemory实现会话记忆功能