Jenkins+GIT+Maven+Shell 實現項目一鍵發佈

一、前言


衆所周知,Jenkins默認情況下可以實現項目更新(通過SVN,但我們公司使用GIT),和項目發佈,通過(MAVEN插件),但是這種情況下發布到一些容器底下(如Tomcat)時,經過多次發佈後JVM會報OutOfMemoryError PermGen space,這個原因是由於這些容器在覆蓋老項目後並不會釋放老項目內存永久區的資源,久而久之,導致系統永久區內存溢出。爲解決這個問題,我們只有通過發佈後重新啓動容器才能解決該問題。那有什麼辦法可以使容器在發佈新項目後自動重啓呢?重啓過程中,我們希望容器正在處理的作業安全完成後(如quartz作業執行完後),容器再重啓,如何做到?本文要與大家分享的便是其中一種便利安全的方法。




二、Jenkins安裝與配置


Jenkins是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使持續集成變成可能。


安裝jenkins穩定版本

       sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat-stable/jenkins.repo 

       sudo rpm --import http://pkg.jenkins-ci.org/redhat-stable/jenkins-ci.org.key 

       sudo yum install jenkins

       注意:這種方法無法下載rpm,所以使用下面這種方法


       rpm下載地址:https://mirror.tuna.tsinghua.edu.cn/jenkins/redhat-stable/


       上傳到指定目錄

       yum localinstall jenkins-2.7.2-1.1.noarch.rpm


       在jenkins配置文件增加jdk路徑

       vim /etc/rc.d/init.d/jenkins

       /usr/local/java/jre/bin/java


       開啓iptables 8080過濾


       啓動jenkins


        systemctl start jenkins


訪問jenkins

http://192.168.2.64:8080/

     獲取密碼登錄

/var/lib/jenkins/secrets/initialAdminPassword


    安裝maven插件


三、安裝git插件


  在Jenkins安裝的服務器上, 創建一對rsa key, 並配置


ssh-keygen -t rsa -C "jenkins"

# 一路回車, 默認路徑和文件名, 不要密碼

cd ~/.ssh

mv id_rsa id_rsa_tho

mv id_rsa.pub id_rsa_tho.pub


wKioL1hBNu3QhcgSAAD-7MkJKzc213.png

選擇add new credential, Username:git, Private Key Enter Directly, 輸入剛纔創建的 id_rsa_tho 的內容, 注意這個是私鑰,並且要把註釋也複製進去


然後在gitlab的項目下, 點擊右側配置菜單 -> Deploy Keys, 用剛纔創建的 id_rsa_tho.pub 的內容, 創建一個key, 名稱爲 Readonly Key for Jenkins, 如果有多個項目都需要這個私鑰, 則在每個項目的deploy keys下enable這個key即可.

這樣git和jenkins這兩臺服務器就建立了信任關係


四、安裝Publish Over SSH插件


安裝步驟:


系統管理→管理插件→可選插件→Artifact Uploaders→Publish Over SSH


 系統設置(所有的高級全部展開)

公共配置:


Passphrase:密碼(key的密碼,如果你設置了)


Path to key:key文件(私鑰)的路徑


Key:將私鑰複製到這個框中


Disable exec:禁止運行命令


私有配置:


SSH Server Name:標識的名字(隨便你取什麼)


Hostname:需要連接ssh的主機名或ip地址(建議ip)


Username:用戶名


Remote Directory:遠程目錄


Use password authentication, or use a different key:可以替換公共配置(選中展開的就是公共配置的東西,這樣做擴展性很好)


私有配置的高級:


Port:端口(默認22)


Timeout (ms):超時時間(毫秒)默認即可


Disable exec:禁止運行命令


Test Configuration:測試連接 

wKioL1hBOd_wLyfjAADklZzAl8s700.png

wKiom1hBOrKTrWmsAABRXUiA5K0931.png通過ssh訪問192.168.2.77服務器,必須將公鑰證書導入到客戶端服務器上,也就是192.168.2.77上,命令如下:

scp id_rsa_tho.pub [email protected]:/root/.ssh/authorized_keys

這樣兩臺服務器之間就可以通過ssh進行訪問


五、創建job

  1.源碼管理,選擇git

  wKiom1hBPXqSJ9EPAAClodct5-Q560.png

2.maven構建,生成war包

wKiom1hBPc2gdXbTAAAv_EMfKgE424.png


3.選擇指定war要發佈的服務器

 

wKioL1hBPfWQxIEFAACdv-RnuL0286.png

wKiom1hBPfbi2AyAAAByFsQZhKs465.png


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章