spring boot(十六)使用Jenkins部署spring boot

jenkins是devops神器,本篇文章介紹如何安裝和使用jenkins部署Spring Boot項目java

jenkins搭建 部署分爲三個步驟;linux

  • 第一步,jenkins安裝
  • 第二步,插件安裝和配置
  • 第三步,Push SSH
  • 第四步,部署項目

 

第一步 ,jenkins安裝

準備環境:apache

JDK:1.8
Jenkins:2.83
Centos:7.3
maven 3.5‘centos

jdk默認已經安裝完成

瀏覽器

配置maven

版本要求maven3.5.0安全

軟件下載bash

wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz

安裝服務器

## 解壓 tar vxf apache-maven-3.5.0-bin.tar.gz ## 移動 mv apache-maven-3.5.0 /usr/local/maven3

修改環境變量,
在/etc/profile中添加如下幾行ssh

MAVEN_HOME=/usr/local/maven3 export MAVEN_HOME export PATH=${PATH}:${MAVEN_HOME}/bin

記得執行source /etc/profile使環境變量生效。maven

驗證
最後運行mvn -v驗證maven是否安裝成功

配置防禦牆

關閉防禦牆

#centos7 systemctl stop firewalld.service ============================== #如下爲:centOS 6.5關閉防火牆步驟 #關閉命令: service iptables stop #永久關閉防火牆: chkconfig iptables off

兩個命令同時運行,運行完成後查看防火牆關閉狀態

service iptables status

 

jenkins 安裝

下載

cd /opt wget http://mirrors.jenkins.io/war/2.83/jenkins.war

啓動服務

java -jar jenkins.war &

Jenkins 就啓動成功了!它的war包自帶Jetty服務器

第一次啓動Jenkins時,出於安全考慮,Jenkins會自動生成一個隨機的按照口令。注意控制檯輸出的口令,複製下來,而後在瀏覽器輸入密碼:

INFO: ************************************************************* ************************************************************* ************************************************************* Jenkins initial setup is required. An admin user has been created and a password generated. Please use the following password to proceed to installation: 0cca37389e6540c08ce6e4c96f46da0f This may also be found at: /root/.jenkins/secrets/initialAdminPassword ************************************************************* ************************************************************* *************************************************************

訪問
瀏覽器訪問:http://localhost:8080/

輸入:0cca37389e6540c08ce6e4c96f46da0f

進入用戶自定義插件界面,建議選擇安裝官方推薦插件,由於安裝後本身也得安裝:

接下來是進入插件安裝進度界面:

插件一次可能不會徹底安裝成功,能夠點擊Retry再次安裝。直到所有安裝成功

等待一段時間以後,插件安裝完成,配置用戶名密碼:

輸入:admin/admin

系統管理-》全局工具配置 jdk路徑,

 

第二步,插件安裝和配置

有不少插件都是選擇的默認的安裝的,因此如今須要咱們安裝的插件很少,Git plugin和Maven Integration plugin,publish over SSH、SSH插件。

插件安裝:系統管理 > 插件管理 > 可選插件,勾選須要安裝的插件,點擊直接安裝或者下載重啓後安裝



配置全局變量

系統管理 > 全局工具配置

JDK

配置本地JDK的路徑,去掉勾選自動安裝

Maven

配置本地maven的路徑,去掉勾選自動安裝

其它內容能夠根據本身的狀況選擇安裝。

配置 SSH免登錄

ssh的配置可以使用密鑰,也可使用密碼,這裏咱們使用密鑰來配置,在配置以前先配置好jenkins服務器和應用服務器的密鑰認證
jenkins服務器上生成密鑰對,使用ssh-keygen -t rsa命令

輸入下面命令 一直回車,一個矩形圖形出現就說明成功,在~/.ssh/下會有私鑰id_rsa和公鑰id_rsa.pub

ssh-keygen -t rsa

將jenkins服務器的公鑰id_rsa.pub中的內容複製到應用服務器 的~/.ssh/下的 authorized_keys文件

ssh-copy-id -i id_rsa.pub 192.168.0.xx chmod 644 authorized_keys

在應用服務器上重啓ssh服務,service sshd restart如今jenkins服務器可免密碼直接登錄應用服務器

以後在用ssh B嘗試可否免密登陸B服務器,若是仍是提示須要輸入密碼,則有如下緣由

  • a. 非root帳戶可能不支持ssh公鑰認證(看服務器是否有限制)
  • b. 傳過來的公鑰文件權限不夠,能夠給這個文件受權下 chmod 644 authorized_keys
  • c. 使用root帳戶執行ssh-copy-id -i ~/.ssh/id_rsa.pub 這個指令的時候若是須要輸入密碼則要配置sshd_config
vi /etc/ssh/sshd_config #內容 PermitRootLogin no

修改完後要重啓sshd服務

service sshd restart

最後,若是能夠SSH IP 免密登陸成功說明SSH公鑰認證成功。

 

第三步,Push SSH

系統管理 > 系統設置

選擇 Publish over SSH

Passphrase 不用設置
Path to key 寫上生成的ssh路徑:/root/.ssh/id_rsa

下面的SSH Servers是重點

Name 隨意起名錶明這個服務,待會要根據它來選則
Hostname 配置應用服務器的地址
Username 配置linux登錄用戶名
Remote Directory 不填

點擊下方增長能夠添加多個應用服務器的地址

第四步,部署項目

首頁點擊新建:輸入項目名稱

下方選擇構建一個maven項目,點擊肯定。

勾選丟棄舊的構建,選擇是否備份被替換的舊包。我這裏選擇備份最近的10個

源碼管理,選擇svn,配置SVN相關信息,點擊add能夠輸入svn的帳戶和密碼

svn地址:http://192.168.0.xx/svn/xxx@HEAD,@HEAD意思取最新版本

構建環境中勾選「Add timestamps to the Console Output」,代碼構建的過程當中會將日誌打印出來

在Build中輸入打包前的mvn命令,如:

clean install -Dmaven.test.skip=true -Ptest

意思是:排除測試的包內容,使用後綴爲test的配置文件。

Post Steps 選擇 Run only if build succeeds

點擊Add post-build step,選擇 Send files or execute commands over SSH

Name選擇上面配置的Push SSH

Source files配置:target/xxx-0.0.1-SNAPSHOT.jar 項目jar包名
Remove prefix:target/
Remote directory:Jenkins-in/ 代碼應用服務器的目錄地址,
Exec command:Jenkins-in/xxx.sh 應用服務器對應的腳本。

須要在應用服務器建立文件夾:Jenkins-in,在文件夾中複製一下腳本內容:xxx.sh

DATE=$(date +%Y%m%d) export JAVA_HOME PATH CLASSPATH JAVA_HOME=/usr/java/jdk1.8.0_131 PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH DIR=/root/xxx JARFILE=xxx-0.0.1-SNAPSHOT.jar if [ ! -d $DIR/backup ];then mkdir -p $DIR/backup fi cd $DIR ps -ef | grep $JARFILE | grep -v grep | awk '{print $2}' | xargs kill -9 mv $JARFILE backup/$JARFILE$DATE mv -f /root/Jenkins-in/$JARFILE . java -jar $JARFILE > out.log & if [ $? = 0 ];then sleep 30 tail -n 50 out.log fi cd backup/ ls -lt|awk 'NR>5{print $NF}'|xargs rm -rf

這段腳本的意思,就是kill舊項目,刪除舊項目,啓動新項目,備份老項目。

全文完。

相關文章
相關標籤/搜索