1.背景

公司开发的资产管理探针需要在linux、unix、windows上分别部署,使用自动化构建jenkins工具远程部署linux平台容易实现,windows比较折腾,现将个人经验分享。

2.环境

IP操作系统/版本用途
10.66.11.158  

centos7

部署jenkins,版本2.303.1
10.66.11.159windows2010部署探针(java进程)

3.步骤

        3.1windows安装启动OpenSSH服务

参考链接:安装 OpenSSH | Microsoft Docs

Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
                                                                                                                        尝试新的跨平台 PowerShell https://aka.ms/pscore6                                                                                                                                                                                                PS C:\Windows\system32> Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0;                                  

Path          :
Online        : True
RestartNeeded : False



PS C:\Windows\system32> Start-Service sshd;
PS C:\Windows\system32> Set-Service -Name sshd -StartupType 'Automatic';
PS C:\Windows\system32> New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force;


DefaultShell : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
PSPath       : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH
PSParentPath : Microsoft.PowerShell.Core\Registry::HKEY_LOCAL_MACHINE\SOFTWARE
PSChildName  : OpenSSH
PSDrive      : HKLM
PSProvider   : Microsoft.PowerShell.Core\Registry



PS C:\Windows\system32>

3.1.1 ssh默认安装在 C:\ProgramData\ssh

3.1.2 修改sshd配置文件,指定根目录

 

 3.1.3 如果保存sshd_config_default提示“你需要TrustedInstaller提供的权限才能对此文件进行更改”,需要修改文件权限

3.1.3.1 右键点击属性,选择安全

3.1.3.2 点击高级选项,更改所有者

 

 3.1.3.3 选择高级后点击立即查找,找到自己本地的计算机用户,将所有者改为本地计算机用户

 3.1.3.4 在编辑中更改权限为所有

这样就拥有对文件删除和编辑保存的权限了

        3.2 windows安装WinRAR,解压tar.gz压缩包

3.2.1 下载地址:WinRAR archiver, a powerful tool to process RAR and ZIP files

 3.2.2 打开安装目录,将WinRAR.exe复制到ssh根目录/tanzhen/ssh下

        3.3 windows安装Git,用以执行shell脚本

3.3.1 下载地址:Git - Downloading Package

3.3.2 打开安装目录,将git-bash.exe加入到环境变量

        3.4 jenkins安装配置Publish Over SSH

3.3.1 安装Publish Over SSH

 3.3.2 配置Publish Over SSH(填写windows主机信息)

参数说明:

      Name:服务名称

      Hostname:主机IP或主机名

      Username:主机登录用户名

      Remote Directory:ssh根目录,/代表C:\tanzhen\ssh(取决于sshd_config配置的根目录)

      Passphrase/Password:主机登录的密码(明文)

 3.3.3 点击Test Configuration验证,返回Success则成功

 3.3.4 创建Item,选择Send files or execute commands over SSH

参数说明:

Source files准备发送的文件,该文件是相对于这个项目的workspace目录,也就是$JENKINS_HOME/workspace/xxxx/。例如要发送/home/jenkins_home/workspace/Server-Demo/src/Hello.java到目标目录,则设置Source filessrc/Hello.java。如果要发送src下的所有文件,可以设置为src/*.*

Remove prefix例如设置为src就是只发送Hello.java文件,如果不填会创建src目录层级。

Remote directory目标目录,比如/usr/local

Exec command最后执行的指令。

        3.5 window编写deploy.bat和deploy.sh脚本

3.4.1 编写deploy.bat脚本

SET sourceFile=C:\tanzhen\ssh\diting-servicesjob-2.0.0.1.tar.gz
SET sourceDir=C:\tanzhen\ssh\diting-servicesjob-2.0.0.1
SET winrar=C:\tanzhen\ssh\WinRAR.exe
SET backupDir=C:\tanzhen\ssh\backup
SET startFile=C:\tanzhen\ssh\diting-servicesjob-2.0.0.1\bin\start.bat

rem 结束进程
FOR /F "tokens=2 delims= " %%P IN ('tasklist ^| findstr "javaw.exe"') DO TaskKill.exe  /PID %%P  -t -f
FOR /F "tokens=2 delims= " %%P IN ('tasklist ^| findstr "java.exe"') DO TaskKill.exe  /PID %%P  -t -f

rem 删除原程序目录
if exist %sourceDir% (
    rd /s/q  %sourceDir% 
)

rem 解压tar.gz包
if exist %sourceFile% (
    if exist %winrar% (
        %winrar% x %sourceFile% .\
)
)

rem  替换配置和启动文件
if exist %backupDir% (
    if exist %sourceDir% (
    copy   %backupDir%\conf\*.yml .\diting-servicesjob-2.0.0.1\conf\
	copy   %backupDir%\bin\start.bat .\diting-servicesjob-2.0.0.1\bin\
	)
)
rem  C:\tanzhen\ssh\diting-servicesjob-2.0.0.1\bin\start.bat

rem  启动程序
"C:\Program Files\Git\git-bash.exe" C:\tanzhen\ssh\deploy.sh

3.4.2 编写deploy.sh脚本

pwd
sleep 2
cd diting-servicesjob-2.0.0.1/bin
pwd
sleep 2
WORK_ROOT=/diting-servicesjob-2.0.0.1/bin
echo ${WORK_ROOT}
sleep 3
JAVA_OPTS="$JAVA_OPTS  -Drun_dir=$WORK_ROOT"
JAVA_OPTS="$JAVA_OPTS -Xss256k -Xms2048m -Xmx2048m -Xss256k"
JAVA_OPTS="$JAVA_OPTS -Djava.ext.dirs=../lib -Djava.library.path=../lib"
JAVA_OPTS="$JAVA_OPTS -Xbootclasspath/a:../conf"
echo $JAVA_OPTS
sleep 3
nohup java $JAVA_OPTS -Dfile.encoding=utf-8 com.idss.asm.diting.servicesjob.App  &

备注:pwd和sleep只是调试作用。

        3.5 构建查看进程是否启动

 

 进程已经启动,至此自动化构建完成

PS:单独再编写deploy.sh脚本而不是在deploy.bat编写原因是:构建的时候报错不成功,没有找到解决方案

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐