教你如何用Jenkins自動化部署項目(教程,從零到搭建完成)

教你如何用Jenkins自動化部署項目(教程,從零到搭建完成)

置頂 2018年08月11日 21:18:18 龍之竹 閱讀數 94080更多html

分類專欄: web項目部署java

版權聲明:本文爲博主原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處連接和本聲明。linux

本文連接:http://www.javashuo.com/article/p-nxvfpfcz-ew.htmlgit

      最近在實習中接觸了jenkins這個東西,因此花點時間瞭解了下。它能夠在代碼上傳倉庫(如github,gitee,gitlab)後,在jenkins(一個網站界面)中經過獲取代碼倉庫中最新代碼,進行自動化部署,而省去手動打包、上傳服務器、部署這一系列步驟,很是方便。github

       下面教程分爲如下幾個部分:web

1、在你的本地電腦或者linux服務器上下載安裝jenkins:

jenkins下載地址:https://jenkins.io/   下載網站的war包版本就行了shell

下載完後把它部署到你的tomcat上運行:放到tomcat的webapps目錄下,啓動tomcat(windows下雙擊startup.bat或者linux下運行sh startup.sh),而後經過瀏覽器訪問,如個人電腦上訪問:localhost:8080/jenkins 。啓動後的界面以下:apache

而後到提示的文件中把裏面的文本複製出來填到管理員密碼中。vim

接着若是是在本地電腦跑,可能會出現:該jenkins實例彷佛已離線 提示,若是出現,是由於本地https訪問不了的緣由。在瀏覽器中另打開一個界面http://localhost:8080/pluginManager/advanced,把升級站點中的url中的https改成http,保存更新。而後關掉tomcat服務器重啓,就能夠聯網了。windows

        接下來選擇安裝推薦的插件,這個須要必定的時間。最後額外推薦安裝兩個插件,在系統管理中能夠安裝插件:

一、 Rebuilder

二、 Safe Restart

2、在linux服務器中安裝git, maven,建立一個jenkens目錄,配置git的公鑰到你的github上,這些步驟是使用jenkins的前提。

     安裝git的目的是在自動化部署前實時從git遠程倉庫中拉取最新的代碼。在linux(我用的是centos系統)安裝git:

yum install git

     生成密鑰:

ssh-keygen -t rsa -C "youremail@abc.com"

    能夠不設置密鑰密碼直接按三次回車。 把家目錄中生成的公鑰內容複製到github或其餘倉庫上。    

    安裝maven的目的是經過項目中的pom.xml文件自動解決項目依賴問題,構建項目。linux中經過wget+下載連接下載maven的zip包而後解壓便可。配置maven環境變量:

 
  1. vim /etc/profile

  2.  
  3. //在這個文件末尾加上

  4. export MAVEN_HOME=/root/maven3.4.5

  5. export PATH=$MAVEN_HOME/bin:$PATH

  6.  
  7. //保存後在命令行輸入,啓動配置

  8. . /etc/profile

    建立jenkins目錄,用來存儲拉取下來的項目代碼等。

3、將Linux服務器註冊到Jenkins上

一、開啓服務器上的ssh服務,可經過 netstat -anp | grep :22命令查看是否開啓

二、先來測試一下怎麼在jenkins中操做遠程服務器

在jenkins中選擇系統管理——》新建節點

其中遠程工做目錄即你在Linux上建立的jenkins目錄。在Credentials添加一個遠程用戶,輸入你的遠程機器用戶名和密碼保存。

點擊TestEnv,啓動代理。

在全局工具配置中配置git命令:

三、自動化部署過程原理:

因此須要編寫一個shell腳原本執行這個過程。

具體的建立Jenkins任務的過程爲

1.建立jenkins任務

2.填寫Server信息

3.配置git參數

4.填寫構建語句(shell腳本),實現自動部署。

4、建立自動化部署任務

一、編寫shell部署腳本deploy.sh,並放到linux服務器中的jenkins目錄下,在該目錄下經過touch deploy.sh建立一個腳本,把下面的腳本複製到裏面便可(到時每次自動部署都會執行它),腳本中的my-scrum爲我要自動構建的項目名:

 
  1. #!/usr/bin/env bash

  2. #編譯+部署項目站點

  3.  
  4. #須要配置以下參數

  5. # 項目路徑, 在Execute Shell中配置項目路徑, pwd 就能夠得到該項目路徑

  6. # export PROJ_PATH=這個jenkins任務在部署機器上的路徑

  7.  
  8. # 輸入你的環境上tomcat的全路徑

  9. # export TOMCAT_APP_PATH=tomcat在部署機器上的路徑

  10.  
  11. ### base 函數

  12. killTomcat()

  13. {

  14. #pid=`ps -ef|grep tomcat|grep java|awk '{print $2}'`

  15. #echo "tomcat Id list :$pid"

  16. #if [ "$pid" = "" ]

  17. #then

  18. # echo "no tomcat pid alive"

  19. #else

  20. # kill -9 $pid

  21. #fi

  22. #上面註釋的或者下面的

  23. cd $TOMCAT_APP_PATH/bin

  24. sh shutdown.sh

  25. }

  26. cd $PROJ_PATH/my-scrum

  27. mvn clean install

  28.  
  29. # 停tomcat

  30. killTomcat

  31.  
  32. # 刪除原有工程

  33. rm -rf $TOMCAT_APP_PATH/webapps/ROOT

  34. rm -f $TOMCAT_APP_PATH/webapps/ROOT.war

  35. rm -f $TOMCAT_APP_PATH/webapps/my-scrum.war

  36.  
  37. # 複製新的工程到tomcat上

  38. cp $PROJ_PATH/scrum/target/order.war $TOMCAT_APP_PATH/webapps/

  39.  
  40. cd $TOMCAT_APP_PATH/webapps/

  41. mv my-scrum.war ROOT.war

  42.  
  43. # 啓動Tomcat

  44. cd $TOMCAT_APP_PATH/

  45. sh bin/startup.sh

二、在jenkins上點擊新建一個任務,填好任務名,填寫運行的節點(上文中新建節點時建立的):

三、點擊源碼管理,填寫github(或gitlab等)地址:

四、點擊add,選擇check out to a sub-directory ,添加源碼下載到jenkins目錄下的指定目錄(能夠命名爲你的項目名):


五、填寫構建任務時的shell腳本,而後保存,點擊當即構建完成自動構建。(這裏有一個坑,必定要給tomcat下全部sh文件加上x權限才能啓動tomcat成功,具體爲在tomcat目錄上層執行chmod a+x  -R tomcat目錄或者在tomcat的bin目錄下執行chmod +x *.sh)

 
  1. #當jenkins進程結束後新開的tomcat進程不被殺死

  2. BUILD_ID=DONTKILLME

  3. #加載變量

  4. . /etc/profile

  5. #配置運行參數

  6.  
  7. #PROJ_PATH爲設置的jenkins目錄的執行任務目錄

  8. export PROJ_PATH=`pwd`

  9. #配置tomcat所在目錄

  10. export TOMCAT_APP_PATH=/root/tomcats/tomcat-my-scrum

  11.  
  12. #執行寫好的自動化部署腳本

  13. sh /root/jenkins/deploy.sh

六、自動化構建成功:

七、後續代碼若是有改動,只要push到github或者gitlab等上,在jenkins界面中再次執行構建任務就能夠了,很是方便,自動化部署,不再用手動上傳項目到服務器了。

5、解決一個tomcat關閉,全部tomcat都被關閉了的問題(若是你的jenkins也是安裝的服務器上的其中一個tomcat中,就可能被莫名殺掉)

       這是由於全部的tomcat的關閉腳本(shutdown.sh或者說catalina.sh)都默認監聽的是8005端口。只要進去tomcat目錄下的conf目錄下的server.xml文件中,將

 
  1. <Server port="8005" shutdown="SHUTDOWN">

  2. <Listener className="org.apache.catalina.startup.VersionLoggerListener" />

  3. <!-- Security listener. Documentation at /docs/config/listeners.html

  4. <Listener className="org.apache.catalina.security.SecurityListener" />

  5. -->

中的8005端口改成不一樣的端口,就不會一個tomcat關閉,全部的tomcat都被關閉了

6、之後能夠在linux服務器中安裝多個tomcat,來部署不一樣的項目,分別使用不一樣的端口,如我喜歡用8081,8082,8083等端口來解決多個tomcat端口衝突問題(在tomcat的conf目錄下的server.xml中修改便可,默認爲8080)。而後能夠用jenkins來管理這些tomcat的自動化部署啦。

7、謝謝閱讀,歡迎交流!

相關文章
相關標籤/搜索