一、前言
衆所周知,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
選擇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:測試連接
通過ssh訪問192.168.2.77服務器,必須將公鑰證書導入到客戶端服務器上,也就是192.168.2.77上,命令如下:
scp id_rsa_tho.pub [email protected]:/root/.ssh/authorized_keys
這樣兩臺服務器之間就可以通過ssh進行訪問
五、創建job
1.源碼管理,選擇git
2.maven構建,生成war包
3.選擇指定war要發佈的服務器