平常要確保服務的穩定,除了要拿出我們的愛心,愛~護他,關~懷他,常常請他飲茶以外,最直接的就是要知道他的罩門在那,直搗黃龍。這篇,先來列出過往經驗中,我常碰問題的清單,接著逐條審查。
一 、Git 無法自動安裝
Jenkins 截至目前最新版,預設安裝外掛尚未加入 Git ,當然我們可以透過安裝外掛增加 Git 服務,但安裝 Git 外掛後,並不像 Ant/Maven 這般貼心,還有 Apache 自動下載安裝的選項;我們要自己先裝好 Git 。
二、校時
自動化作業,所謂的自動也就是定時作業,當Jenkins正式上工時,要非常注意校時工作,如果主機校時不正確,校時基準不同,排程作業可能會出包,SCM可能不會吐原始碼給你,等問題...但其實這應該是OS安裝就要完成的工作。
三、$#%@# OutOfMemory (OOM)
如果 Java 君也有12恨,其中兩恨一個是NPE(NullPointerException),另一個肯定就是OOM。 Jenkins 是以Java編寫而成,而只要運行在JVM之上的服務,便有可能碰到OOM的問題,這兒我們不談各種OOM發生的原因,我們要做的只是盡可能讓他不要出來見客。
四、建立作業命名限制
每一個作業建立,都會在Jenkins上建立一個與名稱相同的目錄,不要使用中文為作業命名,後續絕對會給你帶來麻煩,千萬不要。太過隨意的作業名稱,最後發現好像大家單字造詣差不多,撞來撞去的。在起步點,我們就要建立規則,至少不要出現太過容易衝突的作業名稱。要感受作業項目一堆,我們可以去Apache 運行中的Jenkins 服務感受看看 https://builds.apache.org/
(Apache builds 是很好的 Jenkins 參觀工廠 https://builds.apache.org/)
OK! 這些是目前想到,曾經歷過的麻煩,預防勝於治療,現在就開始動刀,逐一鏟除。
yum -y install git ntp
☑ Git 安裝完成
是的,Git 裝好了;不過我們今天還用不到它。接著要進行校時調整設定。
ntpdate time.stdtime.gov.tw
echo '15 0 * * * root /usr/sbin/ntpdate time.stdtime.gov.tw && /sbin/hwclock -w' >> /etc/crontab
以上兩行,分別為立即校時 ,以及系統排程每日 AM 00:15 進行校時
☑校時設定完成
下一刀,OOM。這個Java的小感冒,聽了大多人就知道去加Xmx,PermSize就對了。如果之後你的Jenkins主機實體記憶體有2G以上,並可專屬Jenkins服務使用,我會建議照以下設定調整。相信短時間內OOM的問題不會纏上,若只是測試機,本項目可呼略。
echo 'JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Xms1024m -Xmx1024m -XX:PermSize=128M -XX:PermSize=256M"' >> /etc/sysconfig/jenkins
service jenkins restart
查驗看看重新啟動後的服務有沒有成功
ps aux | grep jenkins
當然設定值不能超過實體容量,不然會無法啟動
☑***king OutOfMemory 預防完成
最後是作業的命名,與之後進階的slave設定有關系,所以最少會希望有『分類』項目,而分類之後為了控制作業顯示的次序,我會再加一組『編號』,而最後才是作業名稱,這個設定,我們要進入Jenkins系統中完成,前一篇安裝好的 Jenkins 應該會在 http://<ip address>:8080/
在管理Jenkins項目中找到設定系統
設定系統中勾選『專案命名限制』,然後自行定義名稱樣子,如果還沒有個想法,建議先就照我常用的
名稱樣式:[a-zA-Z0-9]+_[0-9]+_[a-zA-Z0-9 -\.]*
Description:格式必需為 "分類_編號_作業名稱" 且不可以中文命名或含特殊符號
不符合樣式的作業名稱,便無法建立。
☑命名管理完成
OK! 收工。這篇是長久以來使用Jenkins的準備心得分享,除了 Git 只是為了方便後續文章進行外,其它幾項都若發生在正式的服務上,都會帶來一定層度的傷害損失;都是種痛的體會(泣)。
明天,要來開始操課了,我們會讓 Jenkins 去 GitHub 取回專案原始碼,然後好好的操操 Jenkins !
下一篇:神功初現 - 在 Jenkins 的第一個作業就不簡單!
時間伺服器: NTP 伺服器, 鳥哥的 Linux 私房菜 - http://linux.vbird.org/linux_server/0440ntp.php
一輩子受用的 Regular Expressions, 朝貴老師 - http://user.frdm.info/ckhung/b/gnu/regexp.php
Jenkins permgen space 問題 - http://demi-panda.com/2012/11/19/jenkins-PermGen-Space/