* 寫在前面的一段話:
根據目前的工做須要,以及爲了接下來新產品先後端間更高效的協同,我決定爬一下Jenkins的坑。本文經過git鉤子+Jenkins實現了,本地git push代碼,Jenkins會自動響應並拉取碼雲上最新的代碼值服務器上,使得本地提交代碼時,線上可以同步的更新代碼,省去了手動更新服務器上代碼的重複工做。前端
Jenkins是一個開源軟件項目,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。Jenkins是基於Java開發的一種持續集成工具,用於監控持續重複的工做,功能包括:
一、持續的軟件版本發佈/測試項目。
二、監控外部調用執行的工做。
一、在安裝Jenkins以前,須要先安裝JDK及配置系統環境變量,由於Jenkins是基於JAVA的。java
下載JDK8安裝包並上傳至服務器,在安裝以前建議先檢查下是否安裝過JDK,由於Jenkins最新的2.x版本是基於JDK8的,經過下面命令能夠查詢node
# rpm -qa | grep java
若是有,會出現已安裝的JDK列表。執行下面命令依次卸載便可git
# rpm -e --nodeps <列表裏各項>
二、安裝JDK8github
# rpm -ivh <下載的安裝包名稱>
三、檢查JAVA版本web
# java -version
四、配置環境變量vim
打開配置文件後端
# vim /etc/profile
按i鍵能夠進入編輯模式,按pagedown翻到最後,添加上以下配置api
export JAVA_HOME=<JDK安裝的路徑> export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
按Esc退出編輯模式,並輸入下面命令保存並強制退出瀏覽器
:wq!
從新應用修改後的配置文件
# source /etc/profile
PS:能夠打印出$PATH變量,查看是否配置成功
# echo $PATH
若是輸出了相對應的路徑則說明配置成功,能夠進行下一步了!
一、如同安裝JDK,先下載Jenkins的.war安裝包並上傳至服務器(也能夠將Jenkins存儲庫添加到yum repos,並從這裏安裝Jenkins.詳情可見 Jenkins文檔 ),進入Jenkins包所在文件夾執行下面命令啓動Jenkins
# java -jar jenkins.war --httpPort=8090
啓動後用瀏覽器打開http://<ip>:8090,密碼複製粘貼便可,而後按照提示登陸,並安裝推薦的插件...
OK,至此,基礎準備工做已經完成,咱們在服務器上安裝了Jenkins並啓動,而後進行了初始化配置。接下來咱們就須要創建了一個新任務,開始配置咱們須要的功能了。
思考下個人需求:本地push代碼到碼雲,Jenkins自動拉取最新的代碼。因此須要將本地、服務器與碼雲三者間關聯起來
一、在Jenkins插件管理裏找到已安裝插件,如圖
檢查一下三個插件是否安裝,若是沒有,請安裝
二、安裝好後重啓Jenkins,接下來即是新建一個任務:
PS: 若是你的項目在拉取代碼後須要其它操做,諸如:安裝依賴、打包等,可在構建、構建後操做裏配置,本文再也不演示
三、配置碼雲的webhooks
添加 url格式爲 http://<User ID>:<API Token>@<Jenkins IP地址>:端口/generic-webhook-trigger/invoke
其中 userid 和 api token 在jenkins的系統管理-管理用戶-admin-設置裏
密碼就是jenkins登錄的密碼,填寫完成保存,點擊測試如圖
出現圖示結果,而且Jenkins裏顯示構建成功
那麼說明git鉤子已經生效。你也能夠本地push代碼來測試一下!
來看看jenkins拉取的代碼吧,在jenkins workspace裏能夠找到
那麼問題來了,我覺得這樣就Everything has been done,打開後竟然是這個樣子
想一想我最初的目的,自動化的流程是實現了,可是實時同步線上預覽掛掉了,這可真的是不行不可以不能夠的,我決定出去看看外面的世界找找靈感(答案),果真被我找到了
方法一:在jenkins命令行腳本輸入
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
方法二:在啓動時指定參數
# java -Dhudson.model.DirectoryBrowserSupport.CSP= -jar jenkins.war --httpPorrt=8090
運行,若是仍是報錯 記得清下瀏覽器緩存!
至此,done!
Jenkins 功能十分強大,在如今前端項目工程化的背景下,能夠替開發和測試人員作不少重複性的工做,本次基於Jenkins作的只是一個銷應用場景下的demo,在公司新產品開發時也能夠基於此進行更多功能的完善!