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

别再手动传包了!用Jenkins的Publish Over SSH插件,5分钟搞定Windows服务器自动化部署

告别手动部署Jenkins Publish Over SSH插件在Windows环境的高效实践每次发布新版本时你是否还在重复这些操作手动压缩文件包、打开FTP工具、等待上传完成、登录服务器解压替换、重启服务…这种低效的部署方式不仅耗时耗力还容易出错。本文将带你用Jenkins的Publish Over SSH插件构建一套完整的Windows服务器自动化部署方案实现真正的构建即发布。1. 为什么需要自动化部署传统手动部署方式存在诸多痛点操作步骤繁琐容易遗漏、耗时长达数十分钟、难以保证每次操作一致性、缺乏可追溯性。而自动化部署能带来以下核心价值效率提升从手动操作的30分钟缩短到3分钟完成全流程错误率归零避免人为操作失误导致的版本不一致可重复性每次部署过程完全一致结果可预期审计追踪Jenkins完整记录每次部署的日志和时间以典型的前端Vue项目为例传统部署流程需要执行npm run build生成dist目录手动压缩dist文件夹使用WinSCP上传到服务器指定目录远程连接服务器解压文件覆盖旧版本重启Nginx服务而自动化部署后只需点击Jenkins上的立即构建按钮上述所有步骤将自动完成。2. 环境准备与插件配置2.1 基础环境要求在开始配置前请确保已具备以下环境Jenkins服务器可以是Linux或Windows系统已安装最新稳定版Jenkins目标Windows服务器已开启SSH服务Windows 10 1809/Windows Server 2019内置网络连通性Jenkins服务器能通过SSH协议访问目标服务器提示Windows开启SSH服务可通过设置→应用→可选功能→添加功能安装OpenSSH服务器2.2 插件安装与验证在Jenkins中安装Publish Over SSH插件登录Jenkins管理界面导航到系统管理→插件管理→可选插件搜索Publish Over SSH并安装安装完成后重启Jenkins服务验证插件是否安装成功新建或编辑一个现有任务在构建后操作部分应能看到Send build artifacts over SSH选项3. SSH服务端详细配置3.1 基础连接配置进入系统管理→系统配置找到Publish over SSH部分Name: Win-Prod-Server Hostname: 192.168.1.100 Username: deployer Remote Directory: C:\Deploy关键参数说明参数说明示例值Name连接配置名称Win-Prod-ServerHostname服务器IP或域名192.168.1.100UsernameSSH登录用户名deployerRemote Directory默认传输目录C:\Deploy点击Test Configuration测试连接成功应显示Success。3.2 认证方式选择插件支持两种认证方式密码认证在高级选项中勾选Use password authentication输入对应用户的密码密钥认证推荐在服务器上生成SSH密钥对ssh-keygen -t rsa将公钥(id_rsa.pub)内容追加到C:\Users\用户名\.ssh\authorized_keys在Jenkins配置私钥内容或指定私钥文件路径注意Windows路径使用正斜杠(/)或双反斜杠(\)如C:/Deploy或C:\\Deploy4. 项目部署配置实战4.1 基础文件传输配置在Jenkins项目的构建后操作中添加Send build artifacts over SSHSource files: **/dist/* Remove prefix: dist Remote directory: webapps Exec command: timeout /t 5 net stop nginx net start nginx配置解析Source files匹配构建产物路径支持Ant风格模式Remove prefix去除传输时的前缀目录结构Remote directory相对于全局配置中Remote Directory的子目录Exec command传输完成后执行的命令此处为重启Nginx4.2 多环境部署策略对于需要部署到多环境测试/预发/生产的场景建议配置参数化构建在任务配置中勾选参数化构建过程添加Choice Parameter命名为DEPLOY_ENV选项值为test/staging/prod动态目录选择Remote directory: ${DEPLOY_ENV}/webapps差异化命令执行if ${DEPLOY_ENV}prod ( net stop MyService Start-Sleep -s 10 net start MyService ) else ( iisreset )4.3 高级应用技巧增量部署优化Source files: **/*.js,**/*.css Remove prefix: Remote directory: webapps/static Exec command: powershell -command Remove-Item webapps/static/*.bak -Force部署后验证$appPath C:\Deploy\webapps\app.exe $appPath --version | Out-File -FilePath C:\Deploy\version.log if ($LASTEXITCODE -ne 0) { exit 1 }错误处理机制try { net stop MyService Start-Sleep -s 5 net start MyService } catch { Write-Output 服务重启失败: $_ exit 1 }5. 常见问题与解决方案5.1 权限问题处理现象文件传输成功但无法覆盖或执行解决方案为SSH账号添加完全控制权限icacls C:\Deploy /grant deployer:(OI)(CI)F /T或者以管理员身份运行SSH服务Set-Service -Name sshd -StartupType Automatic Start-Service sshd5.2 大文件传输优化当传输大文件超过100MB时可能出现超时可通过以下方式优化增加超时设置在Jenkins系统配置的Publish over SSH部分 SSH Server timeout (ms): 600000分卷压缩传输Exec command: tar -xvzf package.tgz del /f package.tgz5.3 跨盘符部署方案虽然插件默认不支持直接传输到其他盘符但可通过以下方式实现传输到默认盘符后移动Exec command: xcopy /E /Y C:\Deploy\webapps D:\Production\webapps使用符号链接New-Item -ItemType SymbolicLink -Path C:\Deploy\webapps -Target D:\Production\webapps6. 企业级最佳实践6.1 安全加固方案网络层限制SSH端口访问IP仅允许Jenkins服务器修改默认SSH端口非22账号层使用专用部署账号非管理员定期轮换SSH密钥审计层$logEntry [$(Get-Date)] Deployed by $env:USERNAME Add-Content -Path C:\Deploy\audit.log -Value $logEntry6.2 性能监控集成在Exec command中添加监控上报$deployTime Measure-Command { # 部署操作 }.TotalSeconds Invoke-RestMethod -Uri http://monitor/api/metrics -Method Post -Body { app MyApp duration $deployTime timestamp (Get-Date -Format o) }6.3 与CI流水线集成完整的CI/CD流水线示例pipeline { agent any stages { stage(Build) { steps { bat npm install bat npm run build } } stage(Deploy) { steps { sshPublisher( publishers: [ sshPublisherDesc( configName: Win-Prod-Server, transfers: [ sshTransfer( sourceFiles: dist/**, removePrefix: dist, remoteDirectory: webapps, execCommand: net stop MyService timeout /t 5 net start MyService ) ], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: true ) ] ) } } } }在实际项目中我们团队通过这套方案将部署时间从平均25分钟缩短到3分钟部署频率从每周1次提升到每天多次且实现了零人为操作失误。特别是在处理紧急修复时只需提交代码并点击构建系统会自动完成从代码提交到生产环境上线的全流程。

相关文章:

别再手动传包了!用Jenkins的Publish Over SSH插件,5分钟搞定Windows服务器自动化部署

告别手动部署:Jenkins Publish Over SSH插件在Windows环境的高效实践 每次发布新版本时,你是否还在重复这些操作:手动压缩文件包、打开FTP工具、等待上传完成、登录服务器解压替换、重启服务…这种低效的部署方式不仅耗时耗力,还…...

1.6T 光模块的能效革命

合作核心与产品规格合作双方:光子技术提供商 Sivers Semiconductors 工程制造服务商 Jabil。核心产品:1.6T 线性接收光收发模块。关键技术:集成 Sivers 的高性能分布式反馈激光器。目标应用:下一代超大规模 AI 数据中心的光互连。…...

YOLOv8优化:注意力机制实战 | CoordAttention,从原理到部署,性能全面超越CBAM与SE

1. CoordAttention注意力机制原理解析 在目标检测领域,注意力机制已经成为提升模型性能的利器。CoordAttention(坐标注意力)作为2021年CVPR会议提出的新型注意力机制,相比传统的SE(Squeeze-and-Excitation&#xff09…...

如何用Sherpa Onnx实现12种编程语言全覆盖的跨平台语音AI开发

如何用Sherpa Onnx实现12种编程语言全覆盖的跨平台语音AI开发 【免费下载链接】sherpa-onnx Speech-to-text, text-to-speech, speaker diarization, speech enhancement, source separation, and VAD using next-gen Kaldi with onnxruntime without Internet connection. Sup…...

人工智能核心技术解析与行业应用实践

1. 人工智能发展现状与行业影响过去五年间,人工智能技术已经从实验室走向规模化商业应用。根据行业调研数据显示,全球AI市场规模年复合增长率保持在28%左右,其中计算机视觉和自然语言处理技术占据主要市场份额。在实际落地层面,AI…...

TwitchDropsMiner完整指南:零带宽自动获取游戏掉落奖励的终极方案

TwitchDropsMiner完整指南:零带宽自动获取游戏掉落奖励的终极方案 【免费下载链接】TwitchDropsMiner An app that allows you to AFK mine timed Twitch drops, with automatic drop claiming and channel switching. 项目地址: https://gitcode.com/GitHub_Tren…...

别再死记硬背时序图了!用STM32CubeMX+Keil5,5分钟搞定Parallel RGB屏驱动配置

5分钟实战:用STM32CubeMXKeil5轻松配置Parallel RGB屏驱动 第一次接触嵌入式LCD开发时,我被那些晦涩的时序参数搞得头晕目眩——HSYNC、VSYNC、HBP、HFP这些缩写像天书一样。直到发现STM32CubeMX这个神器,原来配置Parallel RGB接口可以如此简…...

机器学习训练的环境代价与可持续优化策略

1. 机器学习训练的环境影响现状2013年至2025年间,NVIDIA工作站显卡的运算效率(GFLOPs/W)提升了约100倍,但全球机器学习训练的总能耗却增长了近1000倍。这种看似矛盾的现象揭示了技术进步背后隐藏的环境代价。以典型的1750亿参数语…...

5分钟搞定中科蓝讯SDK编译:用CodeBlocks快速验证RV32-Toolchain环境配置

5分钟搞定中科蓝讯SDK编译:用CodeBlocks快速验证RV32-Toolchain环境配置 对于嵌入式开发者来说,搭建一个稳定可靠的开发环境往往是项目开发的第一步。中科蓝讯基于RISC-V架构的蓝牙芯片方案,以其高性价比和低功耗特性,在TWS耳机、…...

别再死记硬背了!用Python模拟OPT、FIFO、LRU算法,帮你彻底搞懂缺页率计算

用Python实战模拟三大页面置换算法:从理论到可视化理解 当你在深夜啃着操作系统教材,盯着那些晦涩的页面置换算法公式时,是否曾幻想过能"看见"这些算法是如何工作的?本文将通过Python代码,带你亲手构建OPT、…...

别再只盯着RTP了!用Wireshark抓包实战,5分钟看懂RTCP的SR和RR报告到底在说啥

别再只盯着RTP了!用Wireshark抓包实战,5分钟看懂RTCP的SR和RR报告到底在说啥 当你在调试视频会议卡顿或直播延迟问题时,是否曾盯着Wireshark里密密麻麻的RTP包感到无从下手?其实,解决问题的关键往往藏在那些被忽略的RT…...

从零开始:数据结构与算法的核心概念与实战解析

1. 数据结构与算法的入门指南 第一次接触数据结构与算法时,很多人都会感到一头雾水。我记得自己刚开始学习的时候,看着那些陌生的术语和复杂的公式,完全不知道从何下手。但后来发现,只要掌握了正确的学习方法,这些看似…...

Fluent环境变量配置全攻略:从udf.bat到setenv.exe,哪种方法最适合你?

Fluent环境变量配置方法论:四种方案的技术解构与场景化决策指南 当你在深夜的实验室里第三次重装Fluent和Visual Studio,编译UDF时依然弹出那个令人绝望的错误提示——这可能是每个CFD工程师都经历过的"成人礼"。环境变量配置这个看似基础的操…...

RISC-V汇编避坑指南:新手常犯的5个错误及如何用QEMU调试

RISC-V汇编避坑指南:新手常犯的5个错误及如何用QEMU调试 刚接触RISC-V汇编时,很多开发者都会遇到程序运行结果不符合预期的情况。这些错误往往源于对指令细节的理解不足或调试方法不当。本文将剖析五个最常见的陷阱,并演示如何利用QEMU的调试…...

STM32H7的MPU与Cache配置避坑实录:解决LWIP+SAI+DMA下的HardFault与数据一致性问题

STM32H7多总线架构下的MPU与Cache配置实战指南:LWIPSAIDMA系统稳定性优化 在STM32H7系列高性能MCU的开发中,多总线架构和Cache机制为系统设计带来了前所未有的灵活性,同时也引入了复杂的内存管理挑战。本文将深入剖析STM32H7的内存子系统特性…...

Real-Anime-Z一文详解:LoRA轻量微调原理、融合逻辑与推理加速技巧

Real-Anime-Z一文详解:LoRA轻量微调原理、融合逻辑与推理加速技巧 1. 项目概述 Real-Anime-Z是一款基于Stable Diffusion技术的写实向动漫风格大模型,由Devilworld团队开发。它巧妙地在写实与纯动漫风格之间找到了平衡点,创造出独特的2.5D视…...

Translumo终极指南:三步实现游戏和视频实时翻译的免费神器

Translumo终极指南:三步实现游戏和视频实时翻译的免费神器 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是…...

如何高效使用铜钟音乐:纯净音乐体验的终极指南

如何高效使用铜钟音乐:纯净音乐体验的终极指南 【免费下载链接】tonzhon-music 铜钟 Tonzhon (tonzhon.whamon.com): 干净纯粹的音乐平台 (铜钟已不再使用 tonzhon.com,现在的 tonzhon.com 不是正版的铜钟) 项目地址: https://gitcode.com/GitHub_Tren…...

LAMMPS建模避坑指南:如何用EMC和SMILES字符串搞定复杂聚合物力场参数

LAMMPS建模避坑指南:如何用EMC和SMILES字符串搞定复杂聚合物力场参数 在分子动力学模拟领域,LAMMPS作为一款强大的开源工具,被广泛应用于各类复杂体系的建模与计算。然而,当涉及到聚合物、有机分子等复杂体系时,力场参…...

Cyber Engine Tweaks完整指南:如何为AMD处理器优化《赛博朋克2077》性能

Cyber Engine Tweaks完整指南:如何为AMD处理器优化《赛博朋克2077》性能 【免费下载链接】CyberEngineTweaks Cyberpunk 2077 tweaks, hacks and scripting framework 项目地址: https://gitcode.com/gh_mirrors/cy/CyberEngineTweaks Cyber Engine Tweaks&a…...

nli-MiniLM2-L6-H768完整指南:模型量化(INT8)部署与CPU-only环境兼容方案

nli-MiniLM2-L6-H768完整指南:模型量化(INT8)部署与CPU-only环境兼容方案 1. 项目概述 nli-MiniLM2-L6-H768是一个专注于自然语言推理(NLI)任务的轻量级模型,能够高效判断两个句子之间的逻辑关系。该模型特别适合部署在资源受限…...

实战指南:在R语言中运用地理加权回归(GWR)进行空间异质性建模

1. 地理加权回归(GWR)是什么? 地理加权回归(Geographically Weighted Regression,简称GWR)是一种专门用于分析空间数据的统计方法。想象一下,你正在研究房价影响因素,传统回归模型可能会告诉你"地铁站…...

Vue Antd Admin深度解析:如何用Vue2+Ant Design构建企业级后台管理系统的终极方案

Vue Antd Admin深度解析:如何用Vue2Ant Design构建企业级后台管理系统的终极方案 【免费下载链接】vue-antd-admin 🐜 Ant Design Pros implementation with Vue 项目地址: https://gitcode.com/gh_mirrors/vu/vue-antd-admin 你是否曾为构建企业…...

别再手敲系数了!用Matlab Filter Designer一键生成Vivado FIR IP核的COE文件

从Matlab到Vivado:FIR滤波器设计全流程自动化实践 在FPGA信号处理系统开发中,FIR滤波器的实现往往需要跨越多个工具链的鸿沟。传统的手动计算、量化系数并编写COE文件的方式不仅效率低下,还容易引入人为错误。本文将展示如何利用Matlab Filte…...

real-anime-z在跨媒体叙事中的应用:小说文本→角色图→分镜图→动态预告片链路

real-anime-z在跨媒体叙事中的应用:小说文本→角色图→分镜图→动态预告片链路 1. 跨媒体叙事的新工具 在内容创作领域,跨媒体叙事正变得越来越重要。从小说文本到视觉呈现,再到动态视频的完整创作链路,能够帮助创作者将想法快速…...

数据科学实战:从算法到工程落地的全流程指南

1. 数据科学从业者的实战路径我刚入行时以为掌握几个算法就能胜任数据科学工作,直到第一次参与真实项目才意识到这个领域的复杂性远超想象。数据科学、人工智能和大数据这三个紧密关联的领域,本质上是用数据解决商业问题的系统工程,需要技术栈…...

别再只用蓝牙传文件了!手把手教你用手机蓝牙给电脑共享网络(Windows 11/10保姆级教程)

手机蓝牙共享网络:被低估的应急联网方案全解析 在咖啡馆赶工却发现公共WiFi限速、出差酒店网络突然故障、校园网频繁掉线…这些场景下,多数人的第一反应是掏出手机开热点。但你是否想过,当USB线缆不在身边或WiFi频段过于拥挤时,手…...

深度学习中的反向传播与SGD优化算法解析

1. 反向传播与随机梯度下降的本质区别在深度学习训练过程中,反向传播(Backpropagation)和随机梯度下降(Stochastic Gradient Descent, SGD)常被初学者混淆。实际上,这是两个完全不同层面的概念:…...

【YOLOv11】032、YOLOv11注意力机制集成:SE、CBAM、ECA等注意力模块添加

昨天深夜调试一个产线瑕疵检测模型,问题很典型:小尺寸的划痕和污渍总被背景噪声淹没。常规的卷积层平等对待所有特征通道,那些微弱的缺陷信号在层层传递中被稀释了。这时候就该请出注意力机制了——不是赶时髦,而是实际问题倒逼的技术选择。 为什么YOLO需要注意力模块? …...

nli-MiniLM2-L6-H768保姆级教程:NLI服务审计日志与GDPR合规配置

nli-MiniLM2-L6-H768保姆级教程:NLI服务审计日志与GDPR合规配置 1. 服务概述与核心功能 nli-MiniLM2-L6-H768是一款基于自然语言推理(NLI)的轻量级服务,专门用于判断两个句子之间的逻辑关系。该服务采用Hugging Face开源的cross-encoder/nli-MiniLM2-L…...