jenkins + Git自動構建springboot專案並部署到遠端機器

2020-08-13 19:48:24

1.準備jenkins環境

centos 安裝 jenkins和登錄

2.準備外掛

在这里插入图片描述
安裝外掛
Maven Integration(jenkins整合maven的外掛,用於新增《構建一個maven專案》的選單)
Publish Over SSH(用於連線遠端伺服器)
Deploy to container(用於把打包的應用發佈到遠端伺服器)

3.新增遠端程式碼部署伺服器

在这里插入图片描述

在这里插入图片描述

4.設定 maven 和 jdk

注意:設定的路徑都是jenkins機器,非遠端程式碼部署機器

在这里插入图片描述

  1. maven settings檔案設定
    在这里插入图片描述
  2. jdk設定(java home)
    在这里插入图片描述
  3. maven設定
    在这里插入图片描述

5.新增要構建的專案

在这里插入图片描述
在这里插入图片描述
選擇構建一個maven專案,確認,即可開始設定專案參數(前面安裝的外掛)

  1. 新增 Git 倉庫(這裏我用的公共倉庫,私有倉庫需要新增域和使用者資訊)
    在这里插入图片描述

  2. 構建觸發器
    在这里插入图片描述

  3. 設定maven命令在这里插入图片描述

  4. 發佈到遠端伺服器的設定(下面 下麪還有個exec command,專案啓動的指令碼,稍後設定)
    在这里插入图片描述

  5. 啓動指令碼

    #!/bin/bash
    port=9898 #專案啓動埠
    echo "check $port"
    grep_port=`netstat -tlpn | grep "\b$port\b"`
    echo "grep port is $grep_port"
    if [ -n "$grep_port" ]
    then
      echo "埠 $port 在使用"
      netstat -nlp |grep :9898 |grep -v grep|awk '{print $7}' |awk -F '/' '{print $1}' |xargs kill -9
      echo "kill 掉$port 埠"
    else
      echo "埠沒有被使用"
    fi
    echo "開始重新啓動"
    # 此處要加BUILD_ID=dontKillMe 否則jenkins不會將專案啓動下去
    BUILD_ID=dontKillMe nohup java -jar /home/jenkins_deploy/xxx/xxx-0.0.1.jar &
    echo "jenkins 自動化部署成功"
    

    需要注意的點:在部署多臺機器的時候,可能會出現狀態爲 unstable 的狀態,錯誤提示爲
    ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after 120,000ms]
    阻塞了後面的機器繼續發佈和啓動,需要在設定遠端機器的高階設定裡勾上 Exec in pty 如下圖
    在这里插入图片描述
    新增了這個設定後,雖然結果提示Finished:success,但是專案沒有啓動
    需要在指令碼裡新增sleep 1即可成功啓動

    #!/bin/bash
    port=9898 #專案啓動埠
    echo "check $port"
    grep_port=`netstat -tlpn | grep "\b$port\b"`
    echo "grep port is $grep_port"
    if [ -n "$grep_port" ]
    then
      echo "埠 $port 在使用"
      netstat -nlp |grep :9898 |grep -v grep|awk '{print $7}' |awk -F '/' '{print $1}' |xargs kill -9
      echo "kill 掉$port 埠"
    else
      echo "埠沒有被使用"
    fi
    echo "開始重新啓動"
    # 此處要加BUILD_ID=dontKillMe 否則jenkins不會將專案啓動下去
    BUILD_ID=dontKillMe nohup java -jar /home/jenkins_deploy/xxx/xxx-0.0.1.jar &
    echo "jenkins 自動化部署成功"
    sleep 1
    

6.啓動和日誌輸出

設定完成後回到專案內
在这里插入图片描述
點選build now 下面 下麪出現當前次構建的進度,點選進去就能看到構建的詳情了
在这里插入图片描述
日誌檔案(這裏分別部署到了兩臺遠端機器,兩個不同的埠9898和9899)
在这里插入图片描述