Jenkins遠程部署SpringBoot應用


一般Web工程通過Jenkins遠程部署到Tomcat,可以采用Maven的tomcat-maven-plugin插件進行部署。最近接觸到Spring Boot工程的部署,由於Spring Boot應用可以使用內部集成的服務容器(如Tomcat),此時無需按原來的方法進行部署。以工程asset_web為例,從120服務器上的Jenkins部署到121上。

大致步驟:

  • Jenkins從git上獲取最新代碼,編譯打包;
  • 將打包好的jar包部署到121服務器上;
  • 121服務器關閉原來應用,然后啟動新版本。

關鍵點在於最后一點,可以通過腳本進行操作。

構建部署運行

1. Jenkins配置

系統設置:

添加SSH服務器,Remote Directory指定待部署遠程服務器的目標路徑;勾選Use password***,輸入遠程服務器密碼:

工程配置:

  • Build中配置maven命令 clean install deploy:

  • 在“構建后操作”中選中 Send build artifacts over SSH,配置之前添加的遠程服務器:

  • 選中121服務器,Source files指定構建后可運行的jar包,其值為相對路徑:asset_web/target/asset.jar(實際路徑/root/.jenkins/workspace/asset/asset_web/target);Remote Directory只需填“/”,其會引用系統配置的路徑;Exec command 可指定運行腳本,此處運行restart.sh腳本,會重啟spring boot 應用,啟用新版本。

2. 重啟腳本

首先關閉工程對應的進程,然后啟動新版本的應用。

#restart.sh
#!/bin/bash
echo "Restarting SpringBoot Application"
pid=`ps -ef | grep asset.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   kill -9 $pid
   echo "關閉進程:"$pid
fi

echo "授予當前用戶權限"
chmod 777 /usr/src/springboot-app/asset.jar
echo "執行....."
java -jar /usr/src/springboot-app/asset.jar

 

碰到的問題

1. SpringBoot打包成jar后運行提示沒有主清單屬性

原因:maven工程沒有繼承spring-boot-starter-parent,其中包含maven插件spring-boot-maven-plugin(將工程打包成可執行文件,即指定MANIFEST.MF文件中Main-Class,即運行jar時的main入口)。

解決:需要在pom文件的build中添加該插件,即:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

 2. 運行jar時,內嵌Tomcat默認8080端口被占用,需要修改端口

有三種方式修改端口( Spring Boot修改內置Tomcat端口號),其中在配置文件application.properties中添加server.port=8180比較方便。

3. SpringBoot日志管理

參考SpringBoot的日志管理boot-features-logging(后續深入研究下)

參考:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM