当前位置:   article > 正文

Jenkins使用SSH对接Windows服务器 发布更新IIS程序_jenkins在windows上如何使用ssh指令

jenkins在windows上如何使用ssh指令

一、背景说明

我之前使用过jenkins的jnlp做附属服务器的代理,后来发现总是会断掉
于是更换为JenkinsSSH 直接进行机器的操作。
下面我的场景是 点击Jenkins 的一个任务,连通到我局域网 192.168.9.170(下面简称170)
来执行170 IIS站点进行 停止》Svn更新》启用的动作
  • 1
  • 2
  • 3
  • 4

二、Windows安装SSH服务

(1)安装服务程序

将SSH服务安装到目标机器170
下载地址:https://github.com/PowerShell/Win32-OpenSSH/releases
选择适合你机器版本的服务,我目标机器的环境是Win64
  • 1
  • 2
  • 3

在这里插入图片描述

下载后直接安装
安装成功后 Win+R 换出命令窗口
输入【services.msc】换出服务管理
会发现多了一个服务,启用类型选择开机自启即可
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

(2)开放22端口

唤出防火墙,新增入站规则,新建》选择端口》下一步》输入22》一直下一步》起个名字》点击完成
  • 1

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

以上,我们目标机器170的ssh就部署完成。
  • 1

三、Jenkins安装SSH插件

(1)先安装插件

打开自己的Jenkins选择插件管理
选择可选插件
输入筛选条件【Publish Over SSH】
正常情况下,下方空白处会出现ssh插件。下图看不到是因为我已经安装了,我的插件在【已安装】
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)配置Jenkins中的SSH服务信息

进入系统配置
  • 1

在这里插入图片描述

进入后找到【Publish Over SSH】模块
  • 1

在这里插入图片描述

点击新增按钮,输入 显示名称、服务器IP、登录账号
  • 1

在这里插入图片描述

点击高级》勾选使用密码或密钥》输入密码
  • 1

在这里插入图片描述

右下角有一个测试链接,点击后如果出现了Success,则配置成功
  • 1

在这里插入图片描述

以上,我们Jenkins服务端的配置配置完成。
  • 1

四、配置Jenkins任务,开始做对目标机器的脚本相关

(1)创建一个工作任务

新建任务
  • 1

在这里插入图片描述

找到构建
  • 1

在这里插入图片描述

选择构建步骤 【Send files or execute commands over SSH】
  • 1

在这里插入图片描述

新增服务
  • 1

在这里插入图片描述

在下拉框中选择我们在步骤【三(2)】中维护的SSH服务
然后再执行脚本中添加你要运行的目标服务器的脚本
值得一提的是,要在你执行脚本中添加一个前缀
我这里执行的bat脚本
【cmd /c 一个脚本.bat】
  • 1
  • 2
  • 3
  • 4
  • 5

在这里插入图片描述

这里要注意一下,如果想在控制台看到执行过程可以点击高级
勾选【Verbose output in console】
  • 1
  • 2

在这里插入图片描述
在这里插入图片描述

点击保存,直接执行构建,这个时候我们发现直接成功了
  • 1

在这里插入图片描述

以上就是我们创建构建任务的步骤
  • 1

五、把执行bat中的成功/失败结果返回到构建中来

(1)背景描述

根据步骤【四(1)】,我已经能够控制目标服务器【170】的脚本执行
但是发现一个问题,即 无论bat执行成功还是失败,我的构建记录都是显示成功
我研究了Jenkins对构建状态的判定,是根据脚本的返回值
当最后的返回值为【exit 0】时,Jenkins构建认为这是一个成功的执行
当最后的返回值为非0,即【exit 1】时,Jenkins构建认为这是一个成功的执行
使用这个特性,我可以根据我的需求控制exit返回值,来达到输出jenkins构建状态的效果。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

(2)贴一个bat脚本模板

cd /d %~dp0
::获取当前目录

@set WebSiteName="【程序名称】"
@set SCWebApiWebPoolName="【程序池名称】"

:停止一下IIS站点
@echo stop WebSite start...
@C:\Windows\System32\inetsrv\appcmd.exe stop site %WebSiteName%
@echo stop WebSite finished...
echo= 

:停止应用程序池
@echo stop WebSite start...
C:\Windows\System32\inetsrv\appcmd.exe stop apppool /apppool.name:%SCWebApiWebPoolName%
@echo stop WebSite finished...
echo= 


@echo SVN Update start......
svn update --non-interactive --trust-server-cert-failures="unknown-ca,cn-mismatch,expired,not-yet-valid,other" --username 【svn用户名】 --password 【svn密码】 > up.txt
@echo SVN Update finished......
 
 
:启动应用程序池
@echo stop WebSite start...
C:\Windows\System32\inetsrv\appcmd.exe start apppool /apppool.name:%SCWebApiWebPoolName%
@echo stop WebSite finished...
echo= 

:启动IIS站点
@echo Restart WebSite start...
@C:\Windows\System32\inetsrv\appcmd.exe start site %WebSiteName%
@echo Restart WebSite finished...
echo= 




findstr "At revision" "up.txt">"up2.txt"

set /p r1= < up2.txt

del up.txt
del up2.txt

set r2=%r1:~0,11%



if not "%r2%"=="At revision" goto or
if "%r2%"=="At revision" goto b

:or
if not "%r2%"=="Updated to " goto a
if "%r2%"=="Updated to " goto b

:a
exit 1
:b
exit 0

@echo=
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63

(3)bat编码格式

经过测试,我发现jenkins对bat脚本的编码格式有兼容问题,此处我使用的bat编码格式为【ANSI】
  • 1

六、端口占用

在部署新机器的时候点击【Test Configuration】按钮发现一直报错
错误信息:【Failed to connect and initialize SSH connection. Message: [Failed to conn】
  • 1
  • 2

(1)更换目标服务器的SSH端口

直接在目标服务器的文件管理浏览器输入以下地址
【C:\ProgramData\ssh\】
这个目录是隐藏的,一级级是找不到的,直接输入能打开
修改【sshd_config】这个文件
  • 1
  • 2
  • 3
  • 4

在这里插入图片描述

修改Pord 为2222
然后重新创建 【入站规则】
重启 SSH 服务
  • 1
  • 2
  • 3

在这里插入图片描述

(2)修改Jenkins的端口号

点击【Test Configuration】,Success出现,成功撒花
  • 1

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/262204
推荐阅读
相关标签
  

闽ICP备14008679号