Jenkins发布SpringCloud微服务到WindowsServer

SpringCloud微服务可以在Jenkins上配置Maven项目打包发布到Linux系统,打包后发布到远程系统上文件为jar包。
需要Jenkins系统环境支持为:
Git:用以从Gitlab&Github拉取代码。
Maven:用以对代码进行打包,打包成jar格式的服务包。
Jdk:用以运行Jar包所需的Java环境。
SpringCloud架构中的微服务本质为可以独立运行的jar包。
Jenkins发布服务到WindosServer则需要以下步骤。

一、配置WindowsServer支持SSH

1、配置SSH环境

当前系统为WindowsServer2012R2,实现SSH连接windows服务器,需要使用PowerShell Server。
从官网下载后安装,具体配置如下
Alt text
Alt text
建议勾选Run as a Windows Service,然后启动

1
2
3
4
5
[2018/12/19 14:46:02] [2808] [1] Starting (user initiated).
[2018/12/19 14:46:02] [2808] [1] Starting PowerShell Server Win32 Service...
[2018/12/19 14:46:03] [33576] [4] PowerShell Server Started. Version: 16.0.6801.
[2018/12/19 14:46:03] [33576] [4] Max Connections: 5
[2018/12/19 14:46:04] [2808] [8] PowerShell Server Win32 Service started.

出现以上信息表示启动成功
关系客户端连接的日志信息、报错信息等都会出现在这个界面内,出现问题时候可以注意检查。
PowerShell Server支持如下客户端:

Putty on Windows 
Connect-PowerShellServer, Invoke-PowerShellServer, and Disconnect-PowerShellServer Cmdlets included in NetCmdlets. 
PSClient in IP*Works! SSH 
Any SSH client on a mobile device. 
OpenSSH with XTerm, gnome-terminal, Konsole.

具体链接过程不再演示
系统用户名为administrator 远程端口为22 IP不变 密码不变

2、配置Java环境

Java环境配置直接官网下载,默认安装即可,不再详细描述。
只是要注意JAVA_HOME的路径即好。

二、Jenkins相关配置

首先将WindowsServer的的远程密码配置进Jenkisn的全局凭据中。
在配置中的SSH sites中和SSH Servers中添加WindowsServer,如下图所示:
Alt text
Alt text
test显示成功则可以继续进行Jenkins Job的配置,Jenkins Job的配置和LinuxServer区别不大,不再详细描述。

三、WindowsServer相关脚本配置

首先Jenkins发布的jar包会上传到上图二中所示,目录C:\work\service_jar下。

1、启动脚本

关于启动脚本使用bat脚本
jar包启动需要特殊权限,所以需要先获取管理员权限。
脚本执行完成以后需要返回给Jenkins状态码0,不然Jenkins会提示报错,提示发布不稳定。
完整脚本如下:

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
@echo off

echo Get Administrator privileges
cacls.exe "%SystemDrive%\System Volume Information" >nul 2>nul
if %errorlevel%==0 goto Admin
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
echo Set RequestUAC = CreateObject^("Shell.Application"^)>"%temp%\getadmin.vbs"
echo RequestUAC.ShellExecute "%~s0","","","runas",1 >>"%temp%\getadmin.vbs"
echo WScript.Quit >>"%temp%\getadmin.vbs"
"%temp%\getadmin.vbs" /f
if exist "%temp%\getadmin.vbs" del /f /q "%temp%\getadmin.vbs"
exit

:Admin
echo Get Administrator privileges Successfully

set YYYYmmdd=%date:~0,4%%date:~5,2%%date:~8,2%
set t=%time:~,8%
set t=%t::=%
set t=%t: =0%

SET JAVA_HOME="C:\jdk1.8"
copy "%JAVA_HOME%\bin\java.exe" "%JAVA_HOME%\bin\riskArchiveService.exe"
"%JAVA_HOME%\bin\riskArchiveService.exe" -Xms1024M -Xmx1024M -Xmn385M -XX:+PrintGCDetails -jar C:\work\service_jar\riskArchiveService.jar --server.port=28000 --management.port=28001 --config.profile=pro --config.ip=http://172.16.109.142:17001/ > C:\work\logs\riskArchiveService_%YYYYmmdd%_%t%.log 2>&1
exit 0

脚本中讲java.execopy为servicename.exe,以此种方式启动后,则服务名为独立的,可以启动多个jar服务。
如果进行此操作也可以启动,但是服务名为java.exe,则整个系统只能启动一个服务,不利于系统资源利用。
可以从任务管理器和系统信息中查看启动的服务。

2、停止脚本

WindowsServer上停止服务比较简单,依旧使用bat脚本,如下:

1
2
tasklist|find /i "riskArchiveService.exe"||exit 0
taskkill -f -t -im riskArchiveService.exe

首先查找具体服务,如果服务不存在,则返回码为0。
如果服务存在则taskkill。

本文标题:Jenkins发布SpringCloud微服务到WindowsServer

文章作者:Francis

原始链接:http://www.cnops.com/posts/712db630.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。