1. 程式人生 > >windows系統Jenkins部署spring boot一直無返回結果問題解決辦法

windows系統Jenkins部署spring boot一直無返回結果問題解決辦法

前言

由於我們公司java應用是部署在windows伺服器上的,jenkins在部署spring boot時會一直等待直到超時才結束,這個主要原因是因為spring boot 啟動一直是在前臺執行(控制檯一直在列印),所以jenkins會認為這個任務沒有執行完成,就會一直在執行。如果是linux系統可以使用nohup命令,但windows就不行,沒這個命令,所以我把java 應用做成windows服務,每次部署成功只要重啟服務即可。

winsw製作windows伺服器

winsw(github地址原始碼地址exe下載地址)是一個開源的專門用於製作windows服務的小工具,我們可以利用它來講java程式做成windows服務。 在下載地址裡下載最新版winsw。 準備三樣東西

  • xxx.jar
  • xx.xml
  • xxx.exe

以MyApp.jar為例,注意xml和exe名字要保持一致。新建一個project資料夾

建立MyApp.xml檔案

<service>
    <id>MyApp</id>
    <name>MyApp</name>
    <description>This runs Spring Boot as a Service.</description>
    <env name="MYAPP_HOME" value="%BASE%"/>
    <executable>java</executable>
    <arguments>-Xmx256m -jar "%BASE%\MyApp.jar"</arguments>
    <logmode>rotate</logmode>
</service>

上面的MYAPP_HOME是系統環境變數,我們需要像設定JAVA-HOME一樣設定。地址指向jar檔案地址,當然如果我們不使用環境變數的方式,那就直接在xml裡指定jar的目錄地址。我就是這樣的方式。所以我的MyApp.xml檔案為

<service>
    <id>Kelaien</id>
    <name>Kelaien</name>
    <description>This runs Spring Boot as a Service.</description>
    <executable>java</executable>
    <arguments>-Xmx256m -jar "myApp.jar" --spring.profiles.active=stage  --spring.datasource.dbname=donglitestdb  --server.port=9982</arguments>
    <logmode>rotate</logmode>
</service>

arguments是java命令後的一些引數,是自定義的。 id和name就是註冊到windows服務的名字,建議和檔名保持一致,這裡就是MyApp

建立MyApp.exe

其實不是重新建立而是重新命名,將下載的winsw.exe重新命名為MyApp.exe。注意名字要和MyApp.xml保持一致 官方這麼說的:you have to rename the winsw.exe to MyApp.exe so that its name matches with the MyApp.xml,注意是必需

建立MyApp.jar

將準備好的jar重新命名為MyApp.jar,當然,這個可以不是MyApp,也可以是其它的。比如MyApp.xml裡的配置是這樣的

<arguments>-Xmx256m -jar "myApp.jar" --spring.profiles.active=stage  --spring.datasource.dbname=donglitestdb  --server.port=9982</arguments>

是小寫。

安裝服務

至些就製作完成,就可以使用install/uninstall命令了 安裝服務:MyApp.exe install 解除安裝服務:MyApp.exe uninstall 啟動服務:net start MyApp 停止服務:net stop MyApp

windows下沒有重啟服務,我們可以先stop服務再start服務。批處理如下 restart.bat

net stop %1
net start %1

重啟服務:restart 服務名

MyApp.exe in

測試

按如下方式測試結果如下 在這裡插入圖片描述 終於成功了