jenkins部署 java项目到远程 windows服务器
1、查看windows服务器是否有 ssh服务。
cmd模式,输入 ssh.如果报错就去安装ssh(可以去下 openSSH)
2、然后直接用自己的电脑就是客户端。用xshell,连这个远程服务器的IP。输入登陆这个windows 服务器!!的账号密码。就是微软账户登陆开机的。一般能连上。
3、配置jenkins。新建一个maven项目,里面git项目很简单,输入ssh git地址。然后远程推送,输入
remove prefix,source 等。
workspace/当前目录/{从这里开始}。
填写{从这里开始}.然后还有远程地址问题。
输入了c:/print。提示无法更改。
4、Remote directory 这个目录要传送war包到目标服务器的目录,这个很关键,这个适合系统管理-》系统设置中的Publish over SSH的Remote Directory拼在一起的,例如:
最后的结果是/usr/local/tomcat/webapps。
Jenkins的publish-over-ssh组件,Remote directory设置的路径(p1),都是相对于SSH server配置中的Remote Directory(p0,默认为账号家目录),即使p1写成绝对路径,也会拼接到p0后面。
ps:Jenkins Jenkins 2.263.3。
ps:在现场部署项目,用到jenkins配置自动部署,测试的时候发现路径不对,原来是绝对路径无效。记录一下。
Jenkins SSH Key 分组下的Passphrase、Path to key 、 Key 是秘钥登录方式需要配置的
这里用的用户名密码的方式登录
在ssh servers分组下配置ssh server项
- Name:SSH Server项的名称
-
- Hostname:要操作的远程服务器的地址
-
- Username:要操作远程服务器的登录用户名
-
- Remote Directory:配置可操作的路径 /默认C盘 切换其他磁盘/E:
复制代码
5、配置好SSH SERVER在这里配置好路径。
6、Remote directory,填写子路径。完美。成功解决。测试执行文件。
\1. 把程序变做Windows服务,然后shell中通过net start 命令启动服务
但这种做法需要改变程序或者依赖其他程序把当前的程序变为服务
\2. 通过Windows的计划任务来实现
创建一个启动程序的计划任务,然后通过以下命令来启动。
schtask /run /tn “/任务目录/任务名字”
7、运行bat项目
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pnQOnNLG-1658908440911)(https://cdn.jsdelivr.net/gh/yasin4040/pic@main/img/image-20220727104237770.png)]
应该是不能用 @echo off,超时了。(我没用这个!!!)
- @echo off
- setlocal enabledelayedexpansion
- :: 设置服务启动的端口
- set port=10086
- :: 根据端口查询已有服务并kill进程
- for /f "tokens=1-5" %%a in ('netstat -ano ^| find ":%port%"') do (
- if "%%e%" == "" (
- set pid=%%d
- ) else (
- set pid=%%e
- )
- echo !pid!
- )
- if NOT "!pid!" == "" (
- taskkill /f /pid !pid!
- )
- :: 设置目标目录、源目录、文件名。将jar复制到其他文件夹中
- set tarDir=C:\ProgramData\Jenkins\.jenkins\workspace\jar\
- set orgDir=C:\ProgramData\Jenkins\.jenkins\workspace\bmot\zpark-console\target\
- set filename=zpark-console-v1.0.jar
- if not exist %tarDir% (
- mkdir %tarDir%
- )
- copy %orgDir%%filename% %tarDir% > nul
- if "%errorlevel%"=="0" (
- echo copy successfully
- ) else (
- echo Copy failed
- )
- :: 运行jar包
- start java -jar %tarDir%%filename% --spring.profiles.active=local --server.port=%port%
- exit
复制代码
8、修改方案 做成服务
最终我的方案是索性将jar包制作为windows的服务,完美解决。
1、下载WinSW.NET4.exe这个工具(可以把jar包做成服务)。
- 参考https://zhuanlan.zhihu.com/p/364778389
- 比如这里做了一个test_server的windows服务
复制代码
2、将stop.bat中的脚本改为
Net Stop test_server
3、start.bat中的脚本改为
Net Start test_server
完美解决了jar包在远程windows服务器下的部署问题,有问题的朋友欢迎评论和私信。 作者:我是老爆老爆是我 https://www.bilibili.com/read/cv14317175/ 出处:bilibili
9、sample.jar、sample.xml、winsw.exe
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ikELAimN-1658908440911)(https://cdn.jsdelivr.net/gh/yasin4040/pic@main/img/image-20220727105643641.png)]
- <service>
- <id>sample</id>
- <name>sample</name>
- <description>This service runs sample system.</description>
- <executable>java</executable>
- <arguments>-Xrs -Xmx256m -jar "%BASE%\sample.jar" </arguments>
- <log mode="roll" />
- <onfailure action="restart" />
- </service>
复制代码
sample install
10、修改maven 打包后的名称
finalName
11、改为服务
- sample install
- sample start
- sample stop
复制代码
最终我的方案是索性将jar包制作为windows的服务,完美解决。
1、下载WinSW.NET4.exe这个工具(可以把jar包做成服务)。
- 参考https://zhuanlan.zhihu.com/p/364778389
- 比如这里做了一个test_server的windows服务
复制代码
2、将stop.bat中的脚本改为
Net Stop test_server
3、start.bat中的脚本改为
Net Start test_server 作者:我是老爆老爆是我 https://www.bilibili.com/read/cv14317175/ 出处:bilibili
问题,无法install
12、完美解决api-ms-win-crt-runtime-l1-1-0.dll 丢失问题
是VC的一个程序:VC redit.exe
链接:https://www.microsoft.com/zh-cn/download/details.aspx?id=48145
下载时选择x86还是x64的根据自己系统的需求,安装成功就可以了。
删除服务
- 输入命令:sc delete DmhsServiceDM
- 回车后即可删除该系统服务。
复制代码
又一个不杀死进程(我也没用这个)
- windows下使用jenkins执行bat或exe文件时不报错但是没有正常执行的解决方案
- 陌生人_d67b
- 0.093
- 2021.10.26 16:16:38
- 字数 104
- 阅读 466
- 使用管理员模式打开命令行,执行下列语句
- "C:\Program Files (x86)\Jenkins\jre\bin\java" -Xrs -Xmx256m -Dhudson.lifecycle=hudson.liftcycle.WindowsServiceLifecycle -jar "C:\Program Files (x86)\Jenkins\jenkins.war" --htppPort=8080 --webroot="C:\Program Files (x86)\Jenkins\war"
- 可以通过加入下列参数使得jenkins在构建完成后不会自动杀死进程
- -Dhudson.util.ProcessTree.disable=true -jar jenkins.war
复制代码
cmd
/C 代表 /Close
/K 代表 /Keep的简写
cmd /c call D:\print-app-new-test\start.bat
13、执行成功。
最后把start和stop命令合并到一个bat命令。
因为不会cmd…很尴尬。
最后也成功启动,远程windows服务器上的服务也启动了